Programme pour l’exécution d’un tableau statistique

Voir le sujet précédent Voir le sujet suivant Aller en bas

Programme pour l’exécution d’un tableau statistique

Message par TAKTOUK le Dim 23 Mar - 18:11

Salut

Voila les instructions d’un programme qui permet de traité une tableau statistique, mais malheureusement sa fonctionne pas alors s’il vous plait dite moi où sont mes conflits pour que mon programme s’exécute

NB :

- pour un tableau statistique il existe deux cas (cas continus, cas discret)

-Le variable C est pour tester sur quel cas l’utilisateur va travailler

-les donner (modalité (ni), effectifs (xi)) et les résultats (fréquences (fi), fréquence cumulé (F), ci) sont stocké dans une matrice dont le membre des colonne (N) est donner par l’utilisateur.

-xmax : le plus grand nombre parmi les modalité seulement dans le cas discret

-xmin : le nombre le plus petit parmi les modalité seulement dans le cas discret

-so : la somme de tous les effectifs

-F : fréquence cumuler F=Σfi

-X : c’est la moyenne arithmétique X=Σfi*xi

-v=Σfi(xi-X) c’est la variance

-l’écart type c’est la racine carré de la variance
Code:
#include<stdio.h>
#include<math.h>
void main()
{
int c,i,n,xmax,xmin,j,so;
float T[20][20],F,X,v;
printf("tapez:\n1 pour travaillé sur un tableau statistique dont les modalités sont discrètes\n2 pour travaillé sur un tableau statistique dont les modalité sont continue");
printf("\n");
scanf("%d",&c);
if(c==1)
{
 printf("\ndonner la taille de la population(N):");
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
 printf("\ndonner la %d ième modalité:",i+1);
 scanf("%d",&T[0][i]);
 printf("\ndonner la %d ième effectif",i+1);
 scanf("%d",&T[1][i]);
 }
 for(so=0,i=0;i<n;i++)
 {
 so=so+T[1][i];
 }
 printf("\ncalcule des fréquences ");
 for(i=0;i<n;i++)
 {
 T[2][i]=T[1][i]/so;
 printf("%f",T[2][i]);
 }
 printf("\ncalcule des fréquences cumulé croissante");
 printf("F(%d)=0",T[0][0]);
 for(F=0,i=1;i<n;i++)
 {
 F=F+T[2][i];
 printf("\tF(%d)=%f",T[0][i]);
 }
 for(X=0,i=0;i<n;i++)
 X=X+T[0][i]*T[2][i];
 printf("la moyenne arithmétique égale à %f",X);
 xmax=T[0][0];
 for(i=1;i<n;i++)
 {
  if(T[0][i]>xmax)
  xmax=T[0][i];
 }
 xmin=T[0][0];
 for(i=1;i<n;i++)
 {
  if(T[0][i]<xmin)
  xmin=T[0][i];
 }
 printf("l'etandue ETD=%d-%d=%d",xmax,xmin,xmax-xmin);
 for(v=0,i=0;i<n;i++)
 v=v+T[2][i]*pow(T[0][i]-X,2);
 printf("la variance égale à %f",v);
 printf("l'écart type égale à %f",sqrt(v));
}
if(c==2)
{
 printf("donner la taille de la population");
 scanf("%d",&n);
 for(i=0,j=1;i<(n*2);i++);
 {
 if(j==1)
 {
 printf("donner la borne inférieur de la %d ième intervalle",(i+2)/2);
 scanf("%d",&T[0][i]);
 j=2;
 }
 else
 {
 printf("donner la borne supérieur de la %d ième intervalle",(i+1)/2);
 scanf("%d",&T[0][i]);
 j=1;
 }
 }
 for(i=0;i<n;i++)
 {
 printf("donner la %d ième effectif",i+1/2);
 scanf("%d",&T[1][i]);
 }
 for(so=0,i=0;i<n;i++)
 so=so+T[1][i];
 printf("calcule des fréquances");
 for(i=0;i<n;i++)
 {
 T[2][i]=T[1][i]/so;
 printf("%f",T[2][i]);
 }
 printf("les fréquences cumulé croissantes");
 for(j=0,F=0,i=0;i<n;i++)
 {
 F=F+T[2][i];
 T[3][i]=F;
 printf("F(%d,%d)=%f",T[0][j],T[0][j+1],F);
 j=j+2;
 }
 printf("calcule de ci");
 for(j=0,i=0;i<n;i++)
 {
 T[4][i]=T[0][j]+T[0][j+1]/2;
 j=j+2;
 }
 for(X=0,i=0;i<n;i++)
 {
 X=X+T[4][i]*T[2][i];
 printf("la moyenne arithmétique est %f",X);
 }
 for(v=0,i=0;i<n;i++)
 v=v+T[2][i]*pow(T[4][i]-X,2);
 printf("la variance égale à %f",v);
 printf("l'écart type égale à %f",sqrt(v));
}
}

TAKTOUK
Membre fondamental
Membre fondamental

Sexe:MasculinSagittaireTigre
Messages : 181
Inscrit le : 19 Mar 2008
Age : 21
Localisation : monastir

Feuille de personnage
Capacité linguistique:
996/1000  (996/1000)

Revenir en haut Aller en bas

Re: Programme pour l’exécution d’un tableau statistique

Message par Timon le Dim 23 Mar - 21:04

D'abord, il faudrait lire les avertissements du compilateur et indenter son code :
Compiling: main.c
main.c:4: warning: function declaration isn't a prototype
main.c:4: warning: return type of 'main' is not `int'
main.c: In function `main':
main.c:17: warning: int format, float arg (arg 2)
main.c:19: warning: int format, float arg (arg 2)
main.c:32: warning: int format, double arg (arg 2)
main.c:36: warning: int format, double arg (arg 2)
main.c:36: warning: too few arguments for format
main.c:55: warning: passing arg 2 of `pow' as floating rather than integer due to prototype
main.c:68: warning: int format, float arg (arg 2)
main.c:74: warning: int format, float arg (arg 2)
main.c:81: warning: int format, float arg (arg 2)
main.c:96: warning: int format, double arg (arg 2)
main.c:96: warning: int format, double arg (arg 3)
main.c:111: warning: passing arg 2 of `pow' as floating rather than integer due to prototype
main.c:73: warning: will never be executed
main.c:110: warning: will never be executed

Pense aussi à modulariser ton code et à donner à tes variables des noms de plus de trois lettres.
A partir de là, on pourra t'aider.

Timon
Membre important
Membre important

Sexe:Masculin
Messages : 57
Inscrit le : 14 Jan 2008
Localisation : France

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Programme pour l’exécution d’un tableau statistique

Message par methodiX le Dim 23 Mar - 21:08

Je vais le compiler et te rappeler plutard.
Sami - Methodix, tunis
Le génie de Newton a consisté à dire que la lune tombe alors que tout le monde voit bien qu'elle ne tombe pas.
(Paul Valéry)

methodiX
Admin
Admin

Sexe:Masculin
Messages : 811
Inscrit le : 22 Mar 2007
Localisation : marsa - IPEST

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Programme pour l’exécution d’un tableau statistique

Message par manianis le Dim 23 Mar - 22:19

Timon : je souligne les points les plus importants.

Timon a écrit:D'abord, il faudrait lire les avertissements du compilateur et indenter son code :
Pense aussi à modulariser ton code et à donner à tes variables des noms de plus de trois lettres.
A partir de là, on pourra t'aider.


si vous respectez ces consignes ce sera un travail professionnel.

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Programme pour l’exécution d’un tableau statistique

Message par TAKTOUK le Dim 23 Mar - 22:53

La compilation du mon turbo C n’a indiquer aucune faute mais la problème c’été dans l’exécution il m’apparais toujours des messages d’erreur.

Mais je veut essayer de faire quelle modification sur ce programme pour qu’il soit un peut plus compréhensible puis je le postera une autre fois

TAKTOUK
Membre fondamental
Membre fondamental

Sexe:MasculinSagittaireTigre
Messages : 181
Inscrit le : 19 Mar 2008
Age : 21
Localisation : monastir

Feuille de personnage
Capacité linguistique:
996/1000  (996/1000)

Revenir en haut Aller en bas

Re: Programme pour l’exécution d’un tableau statistique

Message par Timon le Dim 23 Mar - 23:18

TAKTOUK a écrit:La compilation du mon turbo C n’a indiquer aucune faute mais la problème c’été dans l’exécution il m’apparais toujours des messages d’erreur.

C'est un problème récurrent : il faut apprendre à configurer son compilateur pour qu'il affiche tout ce qui lui paraît étrange. Je suppose que Turbo C a une documentation.
Ensuite, voici votre code réindenté (merci AStyle) mais non corrigé :
Code:
#include<stdio.h>
#include<math.h>

void main()
{
  int c, i, n, xmax, xmin, j, so;
  float T[20][20], F, X, v;
  printf("tapez:\n1 pour travaillé sur un tableau statistique dont les modalités sont discrètes\n2 pour travaillé sur un tableau statistique dont les modalité sont continue");
  printf("\n");
  scanf("%d", &c);
  if (c == 1)
  {
      printf("\ndonner la taille de la population(N):");
      scanf("%d", &n);
      for (i = 0;i < n;i++)
      {
        printf("\ndonner la %d ième modalité:", i + 1);
        scanf("%d", &T[0][i]);
        printf("\ndonner la %d ième effectif", i + 1);
        scanf("%d", &T[1][i]);
      }
      for (so = 0, i = 0;i < n;i++)
      {
        so = so + T[1][i];
      }
      printf("\ncalcule des fréquences ");
      for (i = 0;i < n;i++)
      {
        T[2][i] = T[1][i] / so;
        printf("%f", T[2][i]);
      }
      printf("\ncalcule des fréquences cumulé croissante");
      printf("F(%d)=0", T[0][0]);
      for (F = 0, i = 1;i < n;i++)
      {
        F = F + T[2][i];
        printf("\tF(%d)=%f", T[0][i]);
      }
      for (X = 0, i = 0;i < n;i++)
        X = X + T[0][i] * T[2][i];
      printf("la moyenne arithmétique égale à %f", X);
      xmax = T[0][0];
      for (i = 1;i < n;i++)
      {
        if (T[0][i] > xmax)
            xmax = T[0][i];
      }
      xmin = T[0][0];
      for (i = 1;i < n;i++)
      {
        if (T[0][i] < xmin)
            xmin = T[0][i];
      }
      printf("l'etandue ETD=%d-%d=%d", xmax, xmin, xmax - xmin);
      for (v = 0, i = 0;i < n;i++)
        v = v + T[2][i] * pow(T[0][i] - X, 2);
      printf("la variance égale à %f", v);
      printf("l'écart type égale à %f", sqrt(v));
  }
  if (c == 2)
  {
      printf("donner la taille de la population");
      scanf("%d", &n);
      for (i = 0, j = 1;i < (n*2);i++);
      {
        if (j == 1)
        {
            printf("donner la borne inférieur de la %d ième intervalle", (i + 2) / 2);
            scanf("%d", &T[0][i]);
            j = 2;
        }
        else
        {
            printf("donner la borne supérieur de la %d ième intervalle", (i + 1) / 2);
            scanf("%d", &T[0][i]);
            j = 1;
        }
      }
      for (i = 0;i < n;i++)
      {
        printf("donner la %d ième effectif", i + 1 / 2);
        scanf("%d", &T[1][i]);
      }
      for (so = 0, i = 0;i < n;i++)
        so = so + T[1][i];
      printf("calcule des fréquances");
      for (i = 0;i < n;i++)
      {
        T[2][i] = T[1][i] / so;
        printf("%f", T[2][i]);
      }
      printf("les fréquences cumulé croissantes");
      for (j = 0, F = 0, i = 0;i < n;i++)
      {
        F = F + T[2][i];
        T[3][i] = F;
        printf("F(%d,%d)=%f", T[0][j], T[0][j+1], F);
        j = j + 2;
      }
      printf("calcule de ci");
      for (j = 0, i = 0;i < n;i++)
      {
        T[4][i] = T[0][j] + T[0][j+1] / 2;
        j = j + 2;
      }
      for (X = 0, i = 0;i < n;i++)
      {
        X = X + T[4][i] * T[2][i];
        printf("la moyenne arithmétique est %f", X);
      }
      for (v = 0, i = 0;i < n;i++)
        v = v + T[2][i] * pow(T[4][i] - X, 2);
      printf("la variance égale à %f", v);
      printf("l'écart type égale à %f", sqrt(v));
  }
}

C'est tout de même plus lisible maintenant, non ?

Quelques nouvelles remarques :
- la fonction main() doit retourner une valeur de type int.
- le type float doit être évité au maximum.
- les noms en majuscules devraient être réservés aux constantes.
- les nombres magiques doivent être cachés.
- le respect de la règle des 80 colonnes est fortement recommandé.

Timon
Membre important
Membre important

Sexe:Masculin
Messages : 57
Inscrit le : 14 Jan 2008
Localisation : France

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum