Ir ao conteúdo
  • Cadastre-se

C Programa Ler arq 1 e listar a Maior Cidade no arq 3


nigolino

Posts recomendados

#include<stdio.h>
#include<string.h>
//Struct - estrutura

struct st_city{
char cidade[10];
int habitantes;
int i;


}city[2];

int main(){
    
  FILE *arqum;
  FILE *arqtres;
  char ch, leitor[100];
  char nome1[20];
  int maior = 0;
  int contador = 0;

  printf("\nDigite o nome do primeiro arquivo:\n");
	gets(nome1);
  arqum= fopen(nome1, "r"); //abre o arquivo para leitura
	if(NULL == arqum)
		{
		printf("\nO arquivo não pode ser aberto. \n");
		system("Pause");
		exit(1);
		}
	  ch = fgetc(arqum);
	  while(ch !=EOF)
	  {
		putchar(ch);
		ch = fgetc(arqum);
	  }
	    
  for(int i = 0; i < 2; i++){
    if(city[i].habitantes > maior){
       maior = city[i].habitantes;
       contador++;
       contador = city[i].cidade;
    }
  }


    arqtres = fopen("arquivotres.txt", "a+");
	  if(NULL ==arqtres)
	  {
		printf("O arquivo não pode ser aberto. \n");
		system("Pause");
		exit(1);
	}
   arqum=fopen(nome1, "r"); //abre o arquivo para leitura DE NOVO
  	if(NULL==arqum)
  	{
     		 printf("O arquivo não pode ser aberto. \n" );
     		 system("Pause");
      		exit (1);
 	 }
	
	while(fgets(leitor,100,arqum) !=NULL);
	fputs(leitor, arqtres);
	fclose(arqtres);
	fclose(arqum); //fecha  o arquivo um



    for(int i = 0; i < 1; i++){
      printf("\n==========DADOS DA CITY %d=========== \n", (i+1));
      printf("A maior cidade: %s tem %d habitantes\n", city[i].cidade, maior);
      
    }
    fclose(arqum);
  return 0;
}

Pessoal,

 

minha dúvida é a seguinte, não estou conseguindo listar no arquivotres e nem no console a maior cidade e quantidade de habitantes (A variável retorna zero). Alguém tem uma sugestão para melhorar esse programa

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@nigolino    você não adicionou nada na struct , por isso o resultado será zero mesmo , então se você postar o formato em que os dados estão nesse arquivo ,  terá como te orientar ,  e o que você precisa fazer é pegar os dados que estão no arquivo  e coloca-los  na struct , assim você passa a usar a struct para fazer seu cálculos e depois se quiser grava esses dados novamente no outro arquivo .

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, devair1010 disse:

@nigolino    você não adicionou nada na struct , por isso o resultado será zero mesmo , então se você postar o formato em que os dados estão nesse arquivo ,  terá como te orientar ,  e o que você precisa fazer é pegar os dados que estão no arquivo  e coloca-los  na struct , assim você passa a usar a struct para fazer seu cálculos e depois se quiser grava esses dados novamente no outro arquivo .

O formato em que os dados estão no arquivoum.txt é: 

Brasília 2481
Curitiba 1765

e o arquivotres.txt não retorna o maior, também.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@nigolino     seu código está bom  , precisa colocar os dados na struct , então seu código poderia ser assim  :

#include<stdio.h>
#include<conio.h>
#include<string.h>
//Struct - estrutura
struct st_city{
    char cidade[20];
    int habitantes;
    int i;
}city[20];                 /* pode ter até 20 cidades */
int main(){
    system("color f9");
    FILE *arqum;
    FILE *arqtres;
    char ch,leitor[100];
    char nome1[20],cidad[20];
    int maior = 0,i,contador=0;
    printf("\nDigite o nome do primeiro arquivo:\n");
    gets(nome1);
    strcat(nome1,".txt");
    arqum= fopen(nome1,"r");                          /* abre o arquivo para leitura */
    if(NULL == arqum){
        printf("\nO arquivo não pode ser aberto. \n");
        system("Pause");
        exit(1);
    }
    printf("\nNome Da Cidade    Habitantes\n\n");
    while( fscanf(arqum,"%s", city[contador].cidade    )!= EOF &&
           fscanf(arqum,"%d",&city[contador].habitantes)!= EOF ){
           printf("%15s - " , city[contador].cidade    );
           printf("%4d\n"   , city[contador].habitantes);
           contador++;
    }
    fclose(arqum);                                    /* fecha o arquivo */
    for(i=0; i<contador; i++           ){
        if(city[i].habitantes > maior  ){
            maior = city[i].habitantes  ;
            strcpy(cidad,city[i].cidade);
        }
    }
    arqtres = fopen("arquivotres.txt","a"    );       /* tenta abrir o arquivo para leitura e gravação */
    if(NULL ==arqtres){
        arqtres = fopen("arquivotres.txt","w");       /* se não existir , cria e abre para gravação */
    }
    fprintf(arqtres,"Cidade -: %s  =----=  " ,cidad); /* grava os dados no arquivo */
    fprintf(arqtres,"Habitantes -: %d\n",     maior); /* grava os dados no arquivo */
    fclose(arqtres);                                  /* fecha o arquivo */
    printf("\n========== DADOS DA CITY ===========\n");
    printf("A maior cidade eh : %s que tem %d habitantes\n",cidad,maior);
    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!