Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

yala neb

linguagem C....Arquivo

Recommended Posts

TIPO: QUANDO O PROGRAMA VAI LISTAR AS PESSOAS DO CADASTRO, ELE SEMPRE PEGA A ULTIMA PESSOA DO CADASTRO E NAO AS DUA PESSOAS DO CADASTRO , PARA LISTAR!

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#define TAM 2
#define clear fflush(stdin)
#define ArquivoMes "mes.dat"

typedef struct{

char nome[35];
int numero;
float area;
float valor;

}Apartamento;

int inicio;
float a=0,b=0;

void CadastrarAp(FILE *ptrfile)
{
   Apartamento apartamento[TAM];
   Apartamento *ptrAp;
   ptrAp=&apartamento;
   int i;
   printf("\n*****************CADASTRO*****************\n");

   fseek(ptrfile,0,SEEK_END);

   for(i=0;i<TAM;i++)
   {
       printf("\n nome do responsavel:");
       clear;
       gets(apartamento[i].nome);
       printf("\n numero do apartamento:");
       scanf("%d",&apartamento[i].numero);
       printf("\n area do apartamento:");
       scanf("%f",&apartamento[i].area);
       printf("\n valor a ser pago no mes:");
       scanf("%f",&apartamento[i].valor);
       a+=apartamento[i].area;
       b+=apartamento[i].valor;
       clear;
   }

   fwrite(ptrAp,sizeof(Apartamento),1,ptrfile);
}

void PessoaCadastro(FILE *ptrfile)
{
   int i;
   printf("\n**********PESSOAS CADASTRADAS************\n");
   Apartamento apartamento[TAM];
   Apartamento *ptrAp;
   ptrAp=&apartamento;

   rewind(ptrfile);

   printf("\nNOME\t\t\tNUMERO\t\t\tAREA\t\t\tVALOR");
       for(i=0;i<TAM;i++)
       {
           while(fread(ptrAp,sizeof(Apartamento),1,ptrfile))
           {
               printf("\n%s\t\t\t%d\t\t\t%.2f\t\t\t%.2f",apartamento[i].nome,apartamento[i].numero,apartamento[i].area,apartamento[i].valor);
           }

       }
}

void AreaCondominio(FILE *ptrfile)
{
   Apartamento apartamento[TAM];
   Apartamento *ptrAp;
   ptrAp=&apartamento;

   rewind(ptrfile);

       printf("\n a area total do condominio eh de: %.2f",a);
}

void ValorCondominio(FILE *ptrfile)
{
   Apartamento apartamento[TAM];
   Apartamento *ptrAp;
   ptrAp=&apartamento;

   rewind(ptrfile);

       printf("\n o valor total recebido pelo condominio eh de: %.2f",B);
}

int main()
{
   Apartamento apartamento[TAM];
   Apartamento *ptrAp;
   ptrAp=&apartamento;
   int opcao;
   FILE *ptrfile;

   if((ptrfile=fopen(ArquivoMes,"r+b"))==0)
   {
       if((ptrfile=fopen(ArquivoMes,"w+b"))==0)
       {
           printf("\n ERRO!");
           exit(1);
       }
   }

   /*
   nome (do responsável)
   número (do apartamento)
   área (em m2 )
   número de moradores
   valor (a ser pago no mês)
   a- Definir a estrutura acima
   d- Escrever uma função que retorne a área total do condomínio.
   d- Escrever uma função que retorne a valor total do condomínio.

   */

   do{
       printf("\n [1].......Cadastro");
       printf("\n [2].......area total do condominio");
       printf("\n [3].......valor total arrecadado pelo condominio");
       printf("\n [4].......Mostrar pessoas cadastradas");
       printf("\n [5].......sair");
       printf("\n\n opcao:");
       scanf("%d",&opcao);

       switch (opcao){

           case 1:
           CadastrarAp(ptrfile);
           break;
           case 2:
           AreaCondominio(ptrfile);
           break;
           case 3:
           ValorCondominio(ptrfile);
           break;
           case 4:
           PessoaCadastro(ptrfile);
           break;
           case 5:
           opcao=0;
           break;
       }

   }while(opcao);

   fclose(ptrfile);

   system("pause");
   return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#define TAM 2
#define clear fflush(stdin)
#define ArquivoMes "mes.dat"

typedef struct{

char nome[35];
int numero;
float area;
float valor;

}Apartamento;

int inicio;
float a=0,b=0;

void CadastrarAp(FILE *ptrfile)
{
   Apartamento apartamento[TAM];
   Apartamento *ptrAp;
   ptrAp=&apartamento;
   int i;
   printf("\n*****************CADASTRO*****************\n");

   fseek(ptrfile,0,SEEK_END);

   for(i=0;i<TAM;i++)
   {
       printf("\n nome do responsavel:");
       clear;
       gets(apartamento[i].nome);
       printf("\n numero do apartamento:");
       scanf("%d",&apartamento[i].numero);
       printf("\n area do apartamento:");
       scanf("%f",&apartamento[i].area);
       printf("\n valor a ser pago no mes:");
       scanf("%f",&apartamento[i].valor);
       a+=apartamento[i].area;
       b+=apartamento[i].valor;
       clear;
   }

   fwrite(ptrAp,sizeof(Apartamento),1,ptrfile); // Deve ficar dentro do laço for
}

void PessoaCadastro(FILE *ptrfile)
{
   int i;
   printf("\n**********PESSOAS CADASTRADAS************\n");
   Apartamento apartamento[TAM];
   Apartamento *ptrAp;
   ptrAp=&apartamento;

   rewind(ptrfile);

   printf("\nNOME\t\t\tNUMERO\t\t\tAREA\t\t\tVALOR");
       for(i=0;i<TAM;i++)
       {
           while(fread(ptrAp,sizeof(Apartamento),1,ptrfile))
           {
               printf("\n%s\t\t\t%d\t\t\t%.2f\t\t\t%.2f",apartamento[i].nome,apartamento[i].numero,apartamento[i].area,apartamento[i].valor);
           }

       }
}

void AreaCondominio(FILE *ptrfile)
{
   Apartamento apartamento[TAM];
   Apartamento *ptrAp;
   ptrAp=&apartamento;

   rewind(ptrfile);

       printf("\n a area total do condominio eh de: %.2f",a);
}

void ValorCondominio(FILE *ptrfile)
{
   Apartamento apartamento[TAM];
   Apartamento *ptrAp;
   ptrAp=&apartamento;

   rewind(ptrfile);

       printf("\n o valor total recebido pelo condominio eh de: %.2f",B)/>/>/>/>;
}

int main()
{
   Apartamento apartamento[TAM];
   Apartamento *ptrAp;
   ptrAp=&apartamento;
   int opcao;
   FILE *ptrfile;

   if((ptrfile=fopen(ArquivoMes,"r+b"))==0) // Seria recomendável usar NULL ao invés de 0
   {
       if((ptrfile=fopen(ArquivoMes,"w+b"))==0)
       {
           printf("\n ERRO!");
           exit(1);
       }
   }

   /*
   nome (do responsável)
   número (do apartamento)
   área (em m2 )
   número de moradores
   valor (a ser pago no mês)
   a- Definir a estrutura acima
   d- Escrever uma função que retorne a área total do condomínio.
   d- Escrever uma função que retorne a valor total do condomínio.

   */

   do{
       printf("\n [1].......Cadastro");
       printf("\n [2].......area total do condominio");
       printf("\n [3].......valor total arrecadado pelo condominio");
       printf("\n [4].......Mostrar pessoas cadastradas");
       printf("\n [5].......sair");
       printf("\n\n opcao:");
       scanf("%d",&opcao);

       switch (opcao){

           case 1:
           CadastrarAp(ptrfile);
           break;
           case 2:
           AreaCondominio(ptrfile);
           break;
           case 3:
           ValorCondominio(ptrfile);
           break;
           case 4:
           PessoaCadastro(ptrfile);
           break;
           case 5:
           opcao=0;
           break;
       }

   }while(opcao);

   fclose(ptrfile);

   system("pause");
   return 0;
}

 

Se houver outras duvidas fique a vontade para postá-las.

Obs.: NULL equivale a ((void*)0), mas pode mudar de acordo com o sistema utilizado é raro mas é bom sempre prevenir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.