Releve en langage c

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]);}
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. 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...
    1. 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;
      }