Jump to content
DaniCV

Vetores em C (Falta parte)

Recommended Posts

DaniCV

Tendo como base:

Citação

Faça um programa que:

1. Lê de um ficheiro "temperaturas_F.txt" (que disponibilizo em baixo) valores de temperatura em graus Fahrenheit de várias capitais. O nome de cada capital é armazenado num vetor "vetor_capitais", e o valor de temperatura é armazenado num vetor "vetor_temp_F". 

2. Para cada valor de temperatura, o programa recorre a um subprograma que converte a temperatura para graus Celcius. O subprograma retorna o valor em Celcius, que é armazenando num segundo vetor (vetor_temp_C).

3. Escreve num ficheiro  "temperaturas_C.txt" os nomes das capitais com a temperatura em Celcius.

Já realizei este código, neste momento não estou a conseguir obter os valores numéricos de cada linha do txt que surge assim:
Cidade Temp em F

Expl.:

Lisboa 59
Brasília 76
Luanda 76
Maputo 72
Macau 72
Praia 77
Bissau 77
Goa 73

 #include <stdio.h>
 #include <stdlib.h>
 #include <conio.h>
 #include <string.h>
 
int contaLinhas();

main (void)
{
	int linhas=contaLinhas(), i;
	int vetor_temp_F[linhas], vetor_temp_C[linhas];
	char vetor_capitais[linhas];
	
	FILE * fr;
	fr = fopen("temperaturas_F.txt", "r");
	FILE*frw;
	frw= fopen("temperaturas_C.txt", "w");
	
	if(fr == NULL)
	{
		perror("temperaturas_F.txt");
		return 1;
	}
	else{
		for(i=0; i<linhas;i++){
			fgets (vetor_capitais, 50, fr);
			fprintf(frw,"%s", vetor_capitais);
			char *p = strchr(vetor_capitais, ' ');
			if (!p);
			*p = 0;
			printf("%s\n", vetor_capitais);
    }
	}
	fclose(fr);
	return 0;
}
 
int contaLinhas()
{
	FILE * fr;
	int contador=1;
	char ch;
	fr = fopen("temperaturas_F.txt", "r");
	
	if(fr == NULL)
	{
		perror("temperaturas_F.txt");
		return 1;
	}
	else{
		while( (ch=fgetc(fr))!= EOF )
			if(ch == '\n')
				contador++;
	return contador;
	fclose(fr);
}
}

 

Share this post


Link to post
Share on other sites
HappyHippyHippo

a maneira mais simples de ler/interpretar uma string em memória é através da função sscanf:

char * str = "capital 50";
char capital[50];
int temperatura;

sscanf (str, "%s %d", capital, &temperatura);

 

  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.