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.
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;
}
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;
}
Para escrever sua resposta aqui, entre ou crie uma conta.
Compartilhar