Forum INFOMATH
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment :
Cdiscount : -30€ dès 300€ ...
Voir le deal
Le Deal du moment : -39%
Pack Home Cinéma Magnat Monitor : Ampli DENON ...
Voir le deal
1190 €

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

4 participants

Aller en bas

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

Message par TAKTOUK Dim 23 Mar - 20: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
TAKTOUK
Entier Relatif
Entier Relatif

Masculin
Nombre de messages : 187
Age : 37
Localisation : monastir
Réputation : -1
Points : 5881
Date d'inscription : 19/03/2008

Feuille de personnage
Capacité linguistique:
Programme pour l’exécution d’un tableau statistique Left_bar_bleue996/1000Programme pour l’exécution d’un tableau statistique Empty_bar_bleue  (996/1000)

http://developpeurs.o-n.fr

Revenir en haut Aller en bas

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

Message par Timon Dim 23 Mar - 23: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
Entier Naturel
Entier Naturel

Masculin
Nombre de messages : 61
Localisation : France
Réputation : 0
Points : 5951
Date d'inscription : 14/01/2008

Feuille de personnage
Capacité linguistique:
Programme pour l’exécution d’un tableau statistique Left_bar_bleue1000/1000Programme pour l’exécution d’un tableau statistique Empty_bar_bleue  (1000/1000)

http://tm.timon.free.fr

Revenir en haut Aller en bas

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

Message par methodiX Dim 23 Mar - 23:08

Je vais le compiler et te rappeler plutard.
methodiX
methodiX
Admin
Admin

Masculin
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7043
Date d'inscription : 22/03/2007

Feuille de personnage
Capacité linguistique:
Programme pour l’exécution d’un tableau statistique Left_bar_bleue1000/1000Programme pour l’exécution d’un tableau statistique Empty_bar_bleue  (1000/1000)

Revenir en haut Aller en bas

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

Message par manianis Lun 24 Mar - 0: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
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6044
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
Programme pour l’exécution d’un tableau statistique Left_bar_bleue999/1000Programme pour l’exécution d’un tableau statistique Empty_bar_bleue  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

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

Message par TAKTOUK Lun 24 Mar - 0: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
TAKTOUK
Entier Relatif
Entier Relatif

Masculin
Nombre de messages : 187
Age : 37
Localisation : monastir
Réputation : -1
Points : 5881
Date d'inscription : 19/03/2008

Feuille de personnage
Capacité linguistique:
Programme pour l’exécution d’un tableau statistique Left_bar_bleue996/1000Programme pour l’exécution d’un tableau statistique Empty_bar_bleue  (996/1000)

http://developpeurs.o-n.fr

Revenir en haut Aller en bas

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

Message par Timon Lun 24 Mar - 1: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
Entier Naturel
Entier Naturel

Masculin
Nombre de messages : 61
Localisation : France
Réputation : 0
Points : 5951
Date d'inscription : 14/01/2008

Feuille de personnage
Capacité linguistique:
Programme pour l’exécution d’un tableau statistique Left_bar_bleue1000/1000Programme pour l’exécution d’un tableau statistique Empty_bar_bleue  (1000/1000)

http://tm.timon.free.fr

Revenir en haut Aller en bas

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

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

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