Ir ao conteúdo

Posts recomendados

Postado
#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
Postado

@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 .

Postado
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
Postado

@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;
}

 

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!