Releve en langage c

Fermé
natha89 Messages postés 1 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 27 mars 2008 - 27 mars 2008 à 14:12
 C_Master - 29 mars 2008 à 14:24
Bonjour,
on m'a demandé de faire un programme qui lit les données d'un relevé météo et les affiche,sachant que les données sont: Tmin,Tmax,pluie,hygrometrie, alors j'ai utilisé les structures comme ci dessus et j'aimerai qu'on me dit ce qui ne va pas et ce que je dois ajouter...voyant q je suis débutante.

#include <stdio.h>
#include <stdlib.h>

struct relevemeteo
{
float tmin;
float tmax;
float hauteur;
int hygro;
};
void affiche_relevemeteo(int n,struct relevemeteo t[])
for(i=0;i<=n;i++;)
{ printf("tab[i].tmin:%f,tab[i].tmax:%f,tab[i].hauteur:%f,tab[i].hygro:%d",tab[i].tmin,tab[i].tmax,tab[i].hauteur,tab[i].hygro);}
int main ()
{
int i;int n;
struct relevemeteo tab[i];
for(int i=0;i<=n;i++)
{
scanf ("%f %f %f %d",&tab[i].tmin,&tab[i].tmax,&tab[i].hauteur,&tab[i].hygro);}
{affiche_relevemeteo(struct relevemeteo,t[i]);}
A voir également:

2 réponses

Salut,
Il y a quelques années que je n'ai pas programmé en C, mais il me semble qu'il y a quelques erreurs de syntaxe et de variable:
1) dans la fonction affiche_relevemeteo
a/ il y a un ";" de trop dans la boucle for
b/ dans l'affichage du résultat, tu utilises la variable "tab" alors que c'est "t" qui est défini ("tab" est défini dans main)

2- dans la fonction main:
a/ n est défini mais pas initialisé
b/ le type de i n'a pas besoin d'être précisé dans le for puisque i est déjà défini
c/ Les accolades sont placés de tel manière qu'il ne semble pas y avoir dans le main d'appel à la fonction d'affichage
d/ Je ne comprends pas quel est la source des données: est-elle saisie? Il faudrait peut-être un message plus explicite en guise de prompt...
Salut,
Si je comprends bien, les infos meteo sont entrées à la main, au clavier.
Dans tous les cas, il me semble que l'utilisation de tableaux pour stoker les données en vue d'un traitement ultérieur (ex: float tab_pluie[];int tab_igro[];...) sans structure (struct) serait mieux adapté et plus simple pour toi.
En effet: Simplifie toi la vie en ne créant qu'une fonction main, car tu t'embrouille un peu dans tes accolades...
De plus, combien de fois la boucle doit-elle tourner? (n=combien?)
le fait d'utiliser scanf et printf peuvent tres bien etre utilisés dans la fonction main.
Essaye d'y penser.

Un exemple pour te donner une idée plus concrète pour un relevé sur 7 jours:

main()
{
/* déclarations */
float tmin[7];
float tmax[7];
float pluie[7];
int hygro[7];
int i;

/* prise des infos */
printf ("Bonjour,\n\n"
"Veuillez entrer les infos meteos suivantes: tmax, tmin, pluie, hygrometrie,\n"
"pour chaque jour de la semaine.\n\n");

for (i=0;i<7;++i)
{
printf ("Tmax pour le jour %d: ",i+1);
scanf ("%f",&tmax[i]);
printf ("Tmin pour le jour %d: ",i+1);
scanf ("%f",&tmin[i]);
printf ("Quantite de pluie pour le jour %d: ",i+1);
scanf ("%f",&pluie[i]);
printf ("Hygrometrie pour le jour %d: ",i+1);
scanf ("%d",&hygro[i]);
}
/* mise en tableau */
/* haut du tableau */
printf ("\n\n\nJour\tTmax\tTmin\tPluie\tHygro\n");
printf ("------------------------------------------------\n");
/* corps du tableau */
for (i=0;i<7;++i)
{
printf ("%d\t%.2f\t%.2f\t%.2f\t%d\n",i+1,tmax[i],tmin[i],pluie[i],hygro[i]);
}
system("PAUSE");
return 0;
}