IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

tableau pour ranger xi et xi2


Sujet :

C

  1. #1
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut tableau pour ranger xi et xi2
    Bonjour à tous

    je dois faire un exercice ou je saisis des valeurs qui vont déterminé la taille de mon tableau car ces données saisie rempliront un tableau avec une colonne en xi et une autre en xi2

    ceci doit ensuite me servir pour calculer la moyenne de Xi, la Variande et l'ecart-type
    j'ai démarré en demandant combien de valeur doivent être saisie, mais je coince sur comment les classer dans le tableau


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <stdio.h>
    #include<math.h>
     
    int n=0;
    int main()
    {
        {
            printf("entre le nombre de valeur que vous voulez saisir pour xi [%d]\n", n);
            scanf("%d", &n );
        }
         int tableau[2] [n];
    return 0;
    }
    merci pour votre aide

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 814
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Déjà t'as absolument aucune raison de mettre "n" en global. Ensuite, puisque chaque élément de ton tableau est compsé d'un couple, alors ce n'est pas int tableau[2][n] mais int tableau[n][2] (enfin la première écriture fonctionne mais c'est maladroit, quand on doit gérer "n" ensembles de "x" éléments, de partir sur "x" ensembles distincts). Surtout que tu pourrais créer une structure dédiée à un couple ce qui te donnerait alors un tableau de "n" éléments de cette structure. Ca ne changerait rien à l'algo sauf que ça rendrait ton programme de suite plus explicite et donc plus lisible.

    Sinon je ne comprends pas pourquoi tu veux les "classer" mais pour ça tu as seulement deux méthodes
    1. à chaque nouvelle valeur tu détermines sa place dans le tableau par rapport à celles déjà présentes et une fois la place trouvée tu décales toutes les suivants d'une position
    2. tu les rentres l'une après l'autre puis une fois saisies, tu "tries" ton tableau d'un coup. Tu as une fonction déjà toute faite (quicksort) qui te trie automatiquement n'importe quel tableau selon la valeur que tu donnes à ses éléments (c'est d'ailleurs pour ça qu'il vaut mieux avoir "un" tableau de "n" couples plutôt que deux tableaux distincts de "n" valeurs)


    PS: saisir étant un verbe du 2° groupe, il ne se conjugue pas en "e". Et colonne ne s'écrit pas "collone".
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    Merci j'ai donc apporté des corrections
    tout me parait bon
    mais je ne sais pas comment afficher le tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    #include <stdio.h>
    #include<math.h>
     
    int main()
    {
        int n=0, i=0, i2=0;
        double somme, somme2, moyenne, variance, ecart;
     
     
        printf("entre le nombre de valeur que vous voulez saisir pour xi [%d]\n", n);
            scanf("%d", &n);
        double tableau[n][2];
     
        for(i=0;i<n;i++)
        {
            printf("entrez le %d ieme element du tableau\n",i+1);
            scanf("%lf", &tableau[i][1] );
            somme=somme + tableau[i][1];
           tableau[i][2]=tableau[i][1]*tableau[i][1];
           somme2=somme2+ tableau[i][2];
     
        }
     
        moyenne=somme/n;
        variance=(n*somme2-somme)/n;
        ecart=sqrt(variance);
     
         printf("%lf\n", somme);
         printf("%lf\n", somme2);
         printf("%lf\n", moyenne);
           printf("%lf\n", variance);
     printf("%lf\n", ecart);

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 814
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bosk1000 Voir le message
    mais je ne sais pas comment afficher le tableau
    Bizarre, tu sais le saisir mais pas l'afficher ???

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(i=0;i<n;i++)
        printf("Le couple en position %d est (%lf, %lf)\n", i, tableau[i][0], tableau[i][1] );

    PS: si ton second tableau est juste le carré du premier, t'as alors aucune raison de le stocker puisque tu peux le recalculer quand tu le désires. Hormis un gain de temps (ici minime) ça ne t'apporte rien (et ça te force maintenant à gérer deux tableaux)
    PS2: je ne suis pas certain de la formule de ta variance (n * la somme du premier tableau - la somme du second) / n. J'avais horreur des stats mais il me semble que c'est ((t[0][0] - moyenne t[0])² + (t[1][0] - moyenne t[0])² + ... + (t[n-1][0] - moyenne t[0])²) / n (et t[1] n'entre même pas en ligne de compte...)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    Merci

    je rame pour l'affichage du tableau...

    pour la deuxième colonne c'est l'énoncé de l'exercice qui le demande... qui puis-je ?

    quand au formule j'ai appliqué les formule de l'énoncé
    perso j'ai jamais fait de cours de stats... quand j'ai débuté cette exo je savais même pas qu'est ce qu'on entendait par xi j'ai du demandé à ma fille qui est en bac s

    bon tout est bon je vais bien mieux comprendre l'affichage du tableau

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 814
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bosk1000 Voir le message
    je rame pour l'affichage du tableau...
    Oui ben je t'ai mis le code dans mon post précédent. Ceci dit (et c'est aussi valable pour ta saisie), les tableaux sont numérotés de [0] à [n-1] donc c'est (t[i][0] + t[i][1]) que tu dois gérer et non (t[i][1] + t[i][2]) (j'ai rectifié mais heureusement qu'aucun pros de ce forum n'a relevé mon erreur !!! )

    Citation Envoyé par bosk1000 Voir le message
    pour la deuxième colonne c'est l'énoncé de l'exercice qui le demande... qui puis-je ?
    Ah si c'est dans l'énoncé alors tu dois obéir. Ensuite quand tu seras autonome, alors tu pourras choisir

    Citation Envoyé par bosk1000 Voir le message
    quand au formule j'ai appliqué les formule de l'énoncé
    Tu devrais nous le citer qu'on vérifie ce que t'en as compris parce que celle que j'ai retrouvée n'est absolument pas équivalente à celle que t'as calculée (la somme des carrés n'est pas égale au carré d'une somme)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    ok

    sur l'affichage du tableau je regarde cela.

    j'avais effectivement une erreur de formule sur la variance mais cela je l'ai rectifié
    donc les formules sont :
    M=somme de xi / n

    V= (n*somme(xi²)-(somme xi)²) / n

    E=sqrt V

    voila

  8. #8
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    c'est étrange pour l'affichage des tableau, ce que tu me dit

    avec ta première solution,
    en sélectionnant 3 variables : 1, 2, 3

    j'obtenais en réponse :
    le coule en position 0 est : 1.00000, 1.00000
    le coule en position 1 est : 2.00000, 4.00000
    le coule en position 2 est : 3.00000, 9.00000

    avec la réponse que tu viens de me donner j’obtiens :
    le coule en position 0 est : -1.#QNAN0, 1.00000
    le coule en position 1 est : 1.00000, 2.00000
    le coule en position 2 est : 4.00000, 3.00000

    Du coup ta première proposition correspond à ce que je voulais obtenir

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 814
    Billets dans le blog
    1
    Par défaut
    C'est ce qu'on nomme un "comportement indéterminé". Un code incorrect mais qui ne va pas à l'encontre des règles de syntaxe et qui donc est compilé tout en allant à l'encontre des règles de gestion mémoire. Comme par exemple remplir et afficher tab[50] alors que tab n'est défini que sur 10 éléments. Cette définition n'empêchera pas la 50° case mémoire placée après "tab" d'être remplie et affichée mais pourra causer d'autres dommages ultérieurs surtout si cette 50° case était utilisée par une autre variable du programme (rappel: le C ne vérifie absolument rien de ce coté là, considérant que "le programmeur sait ce qu'il fait").
    Et dans ce cas là, le comportement est imprévisible (dans la plus stricte définition du mot): tu ne peux pas garantir son comportement. Il peut planter tout comme il peut fonctionner "apparemment" bien. Et s'il fonctionne, il peut fonctionner 10 fois et planter à la 11°. C'est la pire des situations.

    Donc vérifie bien ta saisie (tu dois faire saisir tab[x][0] et mettre son carré dans tab[x][1]) et ton affichage...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  10. #10
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    Merci beaucoup pour tes indications
    j'ai encore 8 dossiers d'exercices à venir sur ma formations,

    il y a des chances que j'ai encore besoins de coup de main

    à bientôt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de tableau pour un exercice en C++
    Par tigresses57 dans le forum C++
    Réponses: 14
    Dernier message: 05/03/2006, 23h27
  2. [HTML] Tableau pour l'enregistrement des données
    Par ghyosmik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 01/11/2005, 15h28
  3. TABLEAU pour video
    Par kevinf dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 11/10/2005, 19h29
  4. Problème tableau pour une requête
    Par LE NEINDRE dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2005, 20h21
  5. [VB.NET] Quel objet tableau pour une recherche indexée ???
    Par Kitano dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/09/2004, 09h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo