programme en c
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

programme en c



  1. #1
    invite557c8192

    Exclamation programme en c


    ------

    alors j'ai déjà demandé à propos de la creation d'un prog en c qui genere un tableau de releve de météo:tmin,tmax,pluie et hygrometie j'ai utilisé les structures et j'ai écris le petit prog ci dessus qui dois lire et afficher les relevés..et j'aimerai que vous me dites ce qui faut ajouter et ce qui ne va pas surtout#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]);}

    -----

  2. #2
    invite4ad25ccf

    Re : programme en c

    A vue de nez (je n'ai pas de compilo sous la main)

    Pleins de petites erreurs :
    Premieres erreurs :
    - des parenthèses qui manquent (pour le for)
    - des accolades en trop (entre le scanf et l'appel de fonction)

    Ensuite, tu n'initialise pas n --> valeur indeterminée
    struct relevemeteo tab[i]; --> instruction non valide en C (en C99 oui, si et seulement i à été initialisé). Il faut fixer la valeur dès le début :
    struct relevemeteo tab[256];

    Ton scanf prend l'adresse de ta structure, et non l'adresse de ton entier / flottant
    Ton appel à affiche_relevemeteo est incohérent : la fonction est de type void( int, struct relevemeteo *) et tu l'appeles sous la forme (struct relevemeteo*, struct relevemeteo).
    D'ailleurs, je ne suis pas sur que struct relevemeteo[] soit un type valable lors d'un appel de fonction.

    Donc au final, cela donnerai un code comme cela :
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    struct relevemeteo
    {
            float tmin;
            float tmax;
            float hauteur;
            int hygro;
    };
    
    
    void affiche_relevemeteo(int n,struct relevemeteo *tab)
    {
            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 = 256;
            struct relevemeteo tab[256];
            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(n, t);
    }

    Avec un petit #define pour faire plus propre, un peu de notation hongroise et la déclaration d'un nouveau type avec typedef, tu pourrais aussi écrire
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    #define NB_RELEVE 256
    
    typedef struct _relevemeteo
    {
            float fTmin;
            float fTmax;
            float fHauteur;
            int iHygro;
    } sRelevemeteo
    
    
    void affiche_relevemeteo(int n, sRelevemeteo *sTab)
    {
    	int i;
          for(i=0;i<=n;i++)
          	printf("tab[i].tmin:%f,tab[i].tmax:%f,tab[i].hauteur:%f,tab[i].hygro:%d", sTab[i].fTmin,sTab[i].fTmax,sTab[i].fHauteur,sTab[i].iHygro);
    }
    int main ()
    {
            int i;
            int n = NB_RELEVE;
            sRelevemeteo sTab[NB_RELEVE];
            for(int i=0;i<n;i++)
                    scanf ("%f %f %f %d",&(sTab[i].fTmin),&(sTab[i].fTmax),&(sTab[i].fHauteur),&(sTab[i].iHygro));
            affiche_relevemeteo(n, sTab);
    }
    le #define rend le code plus facilement maintenable
    la notation hongroise (préfixer le type de la variable) permet d'éviter des bugs
    le typedef permet de racourcir l'écriture, et donc la propreté du code


    PS : code en théorie correct sous réserve des bugs de compilation

  3. #3
    invite557c8192

    Re : programme en c

    merci infiniment pour votre aide

  4. #4
    invited78e0bbb

    Re : programme en c

    Il ne manquait pas de parenthses pour la boucle for c'est juste que le ; suivi du ) s'est transformé en smiley

  5. A voir en vidéo sur Futura
  6. #5
    invite8b867113

    Re : programme en c

    Citation Envoyé par flostein Voir le message
    Il ne manquait pas de parenthses pour la boucle for c'est juste que le ; suivi du ) s'est transformé en smiley
    Dans ce cas, le ";" est en trop. Mais c'est plus au compilateur de dire si la syntaxe est bonne ou pas, qu'aux participants d'un forum.

Discussions similaires

  1. programme en C++
    Par invitee5fedd72 dans le forum Logiciel - Software - Open Source
    Réponses: 11
    Dernier message: 05/03/2008, 11h44
  2. programme
    Par invite425ddf72 dans le forum Électronique
    Réponses: 7
    Dernier message: 28/01/2008, 14h55
  3. programme
    Par invite57e51427 dans le forum Logiciel - Software - Open Source
    Réponses: 11
    Dernier message: 16/01/2008, 23h28
  4. programme
    Par invite7e1f35e9 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 26/04/2006, 14h13
  5. Programme
    Par invite98b1e16f dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 06/02/2005, 15h11
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...