yala neb 0 Denunciar post Postado Novembro 4, 2012 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
Mateus GP 13 Denunciar post Postado Novembro 19, 2012 #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