Releve en langage c

natha89 Messages postés 1 Statut Membre -  
 C_Master -
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. vinceng02
     
    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...
    0
  2. C_Master
     
    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;
    }
    0