Ir ao conteúdo
  • Cadastre-se

Nathalia Paul

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

1
  1. O código coloquei todo na pergunta excondo.rar
  2. O arquivo salva, mas no caso esse condomínio tem 3 apartamentos, preciso gerar 3 arquivos
  3. Bom dia, estou terminando um exercício da faculdade mas não consigo gerar arquivos. O programa é para gerar boletos para cada apartamento. Só que ele só cria o primeiro. #include <stdio.h>#include <string.h>#include <stdlib.h># define ARQ "condominio.bin"# define ARQUIVO "moradores.bin"# define NOME_ARQ "boleto.txt"# define TAM [100]struct Data{int mes, ano;};typedef struct {int cod;char nome[50];char endereco [120];float reserva;float obra;int vencimento;}condominio;typedef struct {char morador [40];int napto;float area;int cod;} moradores;typedef struct{struct Data dta;float rateio;}boleto;int aptos;void cadastro();void listar_condominios();void listar_moradores();void consultar_moradores();void alterar_moradores();void gera_boleto();void reimprime();int main(){int op;do{printf ("\n Administradora de Condominios \n");printf ("\n_________________________________________________\n");printf ("\n <1> Cadastrar um condominio \n");printf ("\n <2> Listar todos os condominios \n");printf ("\n <3> Listar os moradores de um condominio \n");printf ("\n <4> Consultar um morador \n");printf ("\n <5> Alterar os dados de um morador \n");printf ("\n <6> Gerar boleto \n");printf ("\n <7> Reimprimir boleto \n");printf ("\n <0> Sair do programa \n");printf ("\n_________________________________________________\n");printf ("\n");printf ("Opcao: ");scanf ("%d", &op);printf ("\n");switch (op){case 1: cadastro();break;case 2: listar_condominios();break;case 3: listar_moradores ();break;case 4: consultar_moradores();break;case 5: alterar_moradores();break;case 6: gera_boleto();break;case 7:break;case 0:break;default:printf ("\n Erro: opcao invalida!\n");}}while (op != 0);return 0;}void cadastro(){FILE *arq;FILE *arquivo;condominio c;moradores m;int i;if ((arq = fopen(ARQ, "a+b")) == NULL) {fprintf(stderr, "\nErro: nao foi possivel abrir o arquivo\"%s\"!\n", ARQ);return;}if ((arquivo = fopen(ARQUIVO, "a+b")) == NULL) {fprintf(stderr, "\nErro: nao foi possivel abrir o arquivo\"%s\"!\n", ARQUIVO);return;}fseek(arq, 0, SEEK_END); // vai para o final do arquivoc.cod = ftell(arq) / sizeof(condominio) + 1;printf ("\n Informe os dados do condominio:\n");printf ("\n");printf ("\n Codigo do Condominio: %d\n", c.cod);printf ("\n Nome do condominio:");scanf(" %50[^\n]", &c.nome);printf ("\n Endereco:");scanf(" %120[^\n]", &c.endereco);printf ("\n Valor do fundo de reserva:");scanf(" %f", &c.reserva);printf ("\n Valor do fundo de obras:");scanf(" %f", &c.obra);printf ("\n Dia de vencomento do condominio:");scanf(" %d", &c.vencimento);fwrite (&c, sizeof (condominio), 1, arq);fclose (arq);printf ("\n Numero de apartamentos do condominio:");scanf(" %d", &aptos);printf ("\n Informe os dados dos moradores:");for (i=0; i < aptos; i++){fscanf (arq, "%d", c.cod);m.cod = c.cod;printf ("\n Nome do morador:");scanf(" %40[^\n]", &m.morador);printf ("\n Numero do apartamento:");scanf(" %d", &m.napto);printf ("\n Area do apartamento:");scanf(" %f", &m.area);fwrite (&m, sizeof (moradores), 1, arquivo);}fclose (arquivo);}void listar_condominios(){FILE * arq;condominio c;if ((arq = fopen(ARQ, "rb")) == NULL) {fprintf(stderr, "\nErro: nao foi possivel abrir o arquivo\"%s\"!\n", ARQ);return;}printf ("\n\t\t Condominios Cadastrados \n");printf ("______________________________________________________________________________\n");printf ("Codigo Nome Endereco Reserva Obras Dia de vencimento \n");printf ("______________________________________________________________________________\n");while (fread(&c, sizeof(condominio), 1, arq) > 0){printf ("%02d %05s %05s %10.2f %10.2f %5.02d\n", c.cod,c.nome, c.endereco, c.reserva, c.obra, c.vencimento);}printf("______________________________________________________________________________\n");fclose (arq);}void listar_moradores(){FILE * arq;condominio c;int a;float rea = 0;printf ("\n Informe o codigo do condominio:");scanf ("%d", &a);if ((arq = fopen(ARQ, "rb")) == NULL) {fprintf(stderr, "\nErro: nao foi possivel abrir o arquivo \"%s\"!\n", ARQ);return;}while (fread(&c, sizeof(condominio), 1, arq) > 0){if ( a == c.cod){printf ("Nome do condominio: %s\n", c.nome);}else{printf ("Não ha condominio com este codigo");}}fclose (arq);FILE * arquivo;moradores m;if ((arquivo = fopen(ARQUIVO, "rb")) == NULL) {fprintf(stderr, "\nErro: nao foi possivel abrir o arquivo \"%s\"!\n", ARQUIVO);return;}printf ("\n\n\t\t Moradores Cadastrados \n");printf ("______________________________________________\n");printf ("Nome Num Apto Area Apto \n");printf ("______________________________________________\n");while (fread(&m, sizeof(moradores), 1, arquivo) > 0){if(a == m.cod){printf (" %5s %10.2d %10.2f \n", m.morador, m.napto, m.area);rea = rea + m.area;}}printf ("______________________________________________\n");printf("Area total: %0.2f\n", rea);fclose (arquivo);}void consultar_moradores(){FILE * arquivo;FILE * arq;moradores m;condominio c;char procura [50];int w = 0;if ((arquivo = fopen(ARQUIVO, "rb")) == NULL) {fprintf(stderr, "\nErro: nao foi possivel abrir o arquivo \"%s\"!\n", ARQUIVO);return;}if ((arq = fopen(ARQ, "rb")) == NULL) {fprintf(stderr, "\nErro: nao foi possivel abrir o arquivo\"%s\"!\n", ARQ);return;}printf ("Informe o nome do morador:\n");scanf("%s", procura);while (fread(&m, sizeof(moradores), 1, arquivo) > 0){if (stricmp(procura, m.morador) == 0){while (fread(&c, sizeof(condominio), 1, arq) > 0){if(m.cod == c.cod){if(w==0){printf ("______________________________________________\n");printf ("Nome do Condominio Num Apto \n");printf ("______________________________________________\n");w++;}printf (" % 02s %01d \n", c.nome, m.napto);break;}}}}/*printf ("\n\n\t\t Moradores Cadastrados \n");printf ("______________________________________________\n");printf ("Nome do Condominio Num Apto \n");printf ("______________________________________________\n");}while (fread(&m, sizeof(moradores), 1, arquivo) > 0){printf (" % 02s %01d \n", c.nome, m.napto);}printf ("______________________________________________\n");//else {//printf ("Não ha morador com este nome");//}*/fclose (arquivo);}void alterar_moradores(){FILE * arquivo;FILE * arq;moradores m;condominio c;int a, b;char morado[40];float are;if ((arquivo = fopen(ARQUIVO, "rb+")) == NULL) {fprintf(stderr, "\nErro: nao foi possivel abrir o arquivo\"%s\"!\n", ARQUIVO);return;}if ((arq = fopen(ARQ, "rb")) == NULL) {fprintf(stderr, "\nErro: nao foi possivel abrir o arquivo\"%s\"!\n", ARQ);return;}printf ("Informe o codigo do condominio:\n");scanf ("%d", &a);while (fread(&c, sizeof(condominio), 1, arq) > 0){if (a == c.cod){printf ("Nome do condominio: %s\n", c.nome);}else{//printf ("Nao ha condominio cadastrado com este codigo");}}fclose(arq);printf ("Informe o numero do apartamento\n");scanf ("%d", &;while (fread(&m, sizeof(moradores), 1, arquivo) > 0){if (a == m.cod && b == m.napto ){printf ("Nome do moraddor: %s\n", m.morador);printf ("Area do apartameto: %f", m.area);fseek(arquivo,&m.morador-1,SEEK_SET);printf("\n Nome: ");scanf("%s",&m.morador);printf("\n Area: ");scanf("%f",&m.area);fwrite(&m,sizeof(moradores),1,arquivo);break;}else{printf ("Nao ha morador nesse apartamento");}}fclose (arquivo);//if ((arquivo = fopen(ARQUIVO, "ab+")) == NULL) {//fprintf(stderr, "\nErro: nao foi possivel abrir o arquivo\"%s\"!\n", ARQUIVO);// return;//}//else{//fread(&m, sizeof(moradores), 1, arquivo);//fseek(arquivo,sizeof(moradores),SEEK_SET);//while (fread(&m, sizeof(moradores), 1, arquivo) > 0){//printf("\n Nome: ");//scanf("%s",&m.morador);// m.morador = &morado;// fwrite(&m.morador,sizeof(moradores),1,arquivo);//printf("\n Area: ");//scanf("%f",&m.area);// m.area = are;// fwrite(&m,sizeof(moradores),1,arquivo);//fclose (arquivo);//}}void gera_boleto(){FILE * arquivo;FILE * arq;moradores m;condominio c;boleto b;int a, mes, ano, i, j;float rateio, rateio1, rateio2,rateio3;char boleto[40];printf ("Informe o codigo do condominio:\n");scanf ("%d", &a);if ((arq = fopen(ARQ, "rb")) == NULL) {fprintf(stderr, "\nErro: nao foi possivel abrir o arquivo\"%s\"!\n", ARQ);return;}while (fread(&c, sizeof(condominio), 1, arq) > 0){if (a == c.cod){printf ("Nome do condominio: %s\n", c.nome);}else{printf ("Nao ha condominio cadastrado com este codigo");}}printf ("\nInforme mes e ano (mm/aaaa):");scanf ("%d/%d", &mes, &ano);if ((mes >= 1 && mes <= 12) && (ano>= 1900 && ano <= 2100)){printf ("\nInforme o valor de rateio:");scanf ("%f", &rateio);}else{printf ("Mes ou ano invalido");}if ((arquivo = fopen(ARQUIVO, "rb")) == NULL) {fprintf(stderr, "\nErro: nao foi possivel abrir o arquivo\"%s\"!\n", ARQUIVO);return;}while (fread(&m, sizeof(moradores), 1, arquivo) > 0){ if(a== m.cod){sprintf(boleto, "%d_%d_%d_%d.txt", m.cod, m.napto, ano, mes);printf("%s", boleto);FILE *out = fopen(boleto, "w");fscanf(arq, "%s", &c.nome);fscanf(arquivo, "%s", &m.morador);fscanf(arq, "%s", &c.endereco);fscanf(arquivo, "%d", &m.napto);fscanf(arq, "%d/%d/%d", &c.vencimento, &mes, &ano);fwrite(&boleto, sizeof(boleto), 1, out );fclose(out);}}/*b.rateio = b.rateio + m.area;// formula que pega todas as areasrateio1 = rateio/b.rateio; // formula que mostra quanto é o rateio por arearateio3 = rateio1 * m.area;*//*printf ("%d\n", m.cod);printf ("%d\n", m.napto);printf ("%d\n", mes);printf ("%d\n", ano);}}printf("%f\n", b.rateio);printf("%f\n", rateio1);printf("%f\n", rateio3);rateio2 = rateio3 + c.reserva + c.obra;printf("%f\n", rateio2);*/fclose (arquivo);fclose (arq);}

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!