Buscar

Ajuda ae povo

Faca um programa que receba o nome de um arquivo de entrada e outro de saıda. O arquivo de entrada contem em cada linha o nome de uma cidade (ocupando 40 caracteres) e o seu numero de habitantes. O programa devera ler o arquivo de entrada e gerar um arquivo de saıda onde aparece o nome da cidade mais populosa seguida pelo seu numero de habitantes.

💡 4 Respostas

User badge image

Andre Smaira

Ajuda ae povo

Faca um programa que receba o nome de um arquivo de entrada e outro de saıda. O arquivo de entrada contem em cada linha o nome de uma cidade (ocupando 40 caracteres) e o seu numero de habitantes. O programa devera ler o arquivo de entrada e gerar um arquivo de saıda onde aparece o nome da cidade mais populosa seguida pelo seu numero de habitantes.


Primeiro, temos que ter caracteres chaves para utilizarmos como delimitador para quebrar o nome da cidade e o numero de habitantes. Lemos o arquivo de texto e vamos separando cada linha em um array de strings. Logo após eu percorro esse array de cidades e pego o numero de habitantes e vou comparando ate chegar ao maior valor, Logo após isso ó escrever no arquivo de saída.


#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main(void)

{

int i = 0, numPalavras = 0, mais_habitantes = 0, result;

char* palavras[50], resultado[50];

char line[50], *token, num_habits[10];

int str_inicio, str_fim, num, num_ant;

FILE *arq_read, *arq_write;

arq_read = fopen("palavras.txt", "r");

if (arq_read == NULL){

printf("Arquivo nao existe.");

return 1;

}

while(fgets(line, sizeof line, arq_read) != NULL)

{

//Adiciona cada palavra no vetor

palavras[i] = strdup(line);

i++;

//Conta a quantidade de palavras

numPalavras++;

}

//Procura a com mais habitantes

for (int j = 0; j < numPalavras; j++){

token = strtok(palavras[j], "\n");

printf("%s\n", token);

str_fim = strlen(token);

for(int i = 0; i<strlen(token); i++) {

if(token[i] == '-'){

str_inicio = i + 2;

}

}

int k = 0;

for(int i = str_inicio; i<=str_fim; i++) {

num_habits[k] = token[i];

k++;

}

num = atoi(num_habits);

if(num >= num_ant){

num_ant = num;

mais_habitantes = j;

}

}

printf("\nCidade com mais habitantes em resultado.txt\n");

printf("\n\n");

fclose(arq_read);

//Finaliza leitura

//Fazemos a gravação do dado

arq_write = fopen("resultado.txt", "wt"); // Cria um arquivo texto para gravação

if (arq_write == NULL){ // Se não conseguiu criar

printf("Problemas na CRIACAO do arquivo\n");

return 1;

}

strcpy(resultado,palavras[mais_habitantes]);

result = fputs(resultado, arq_write);

if (result == EOF){

printf("Erro na Gravacao\n");

}

fclose(arq_write);

return 0;

}

0
Dislike0
User badge image

Andre Smaira

Primeiro, temos que ter caracteres chaves para utilizarmos como delimitador para quebrar o nome da cidade e o numero de habitantes. Lemos o arquivo de texto e vamos separando cada linha em um array de strings. Logo após eu percorro esse array de cidades e pego o numero de habitantes e vou comparando ate chegar ao maior valor, Logo após isso ó escrever no arquivo de saída.


#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main(void)

{

int i = 0, numPalavras = 0, mais_habitantes = 0, result;

char* palavras[50], resultado[50];

char line[50], *token, num_habits[10];

int str_inicio, str_fim, num, num_ant;

FILE *arq_read, *arq_write;

arq_read = fopen("palavras.txt", "r");

if (arq_read == NULL){

printf("Arquivo nao existe.");

return 1;

}

while(fgets(line, sizeof line, arq_read) != NULL)

{

//Adiciona cada palavra no vetor

palavras[i] = strdup(line);

i++;

//Conta a quantidade de palavras

numPalavras++;

}

//Procura a com mais habitantes

for (int j = 0; j < numPalavras; j++){

token = strtok(palavras[j], "\n");

printf("%s\n", token);

str_fim = strlen(token);

for(int i = 0; i<strlen(token); i++) {

if(token[i] == '-'){

str_inicio = i + 2;

}

}

int k = 0;

for(int i = str_inicio; i<=str_fim; i++) {

num_habits[k] = token[i];

k++;

}

num = atoi(num_habits);

if(num >= num_ant){

num_ant = num;

mais_habitantes = j;

}

}

printf("\nCidade com mais habitantes em resultado.txt\n");

printf("\n\n");

fclose(arq_read);

//Finaliza leitura

//Fazemos a gravação do dado

arq_write = fopen("resultado.txt", "wt"); // Cria um arquivo texto para gravação

if (arq_write == NULL){ // Se não conseguiu criar

printf("Problemas na CRIACAO do arquivo\n");

return 1;

}

strcpy(resultado,palavras[mais_habitantes]);

result = fputs(resultado, arq_write);

if (result == EOF){

printf("Erro na Gravacao\n");

}

fclose(arq_write);

return 0;

}

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta.

User badge image

Outros materiais