Un programme en C ! besoin d'aide

Khaliil -  
the F Messages postés 162 Statut Membre -
Bonjour,
je voudraii cree un programme qui affiche :
nombre de personne par batiment , en sachant que chaque batimen se compose de 4 appartment .
nombre de personne par quartier en sachant qu'au quartier se trouve 4 batiment .
le batiment a plu grand nombre de personne.

Voila deja ce que jai faii / je voi pa ou est le probleme :/

#include <stdio.h>
#include <conio.h>

int main ()
{
int a1 , a2 , a3 , a4 , b1 , b2 , b3 , b4 , q , i;

for ( i=1 ; i<=4 ; i++ )
{ printf("entrez le nombre de personne de l'apartement n 1 :\n");
scanf("%d",&a1);
printf("entrez le nombre de personne de l'apartement n 2 :\n");
scanf("%d",&a2);
printf("entrez le nombre de personne de l'apartement n 3 :\n");
scanf("%d",&a3);
printf("entrez le nombre de personne de l'apartement n 4 :\n");
scanf("%d",&a4);

if ( i = 1 ) {b1=a1+a2+a3+a4;
printf("le nombre de personne du batiment n 1 est :\n %d",b1);
scanf("%d",&b1);}
else if ( i= 2) {b2=a1+a2+a3+a4;
printf("le nombre de personne du batiment n 2 est :\n %d",b2);
scanf("%d",&b2);}
else if ( i= 3) {b3=a1+a2+a3+a4;
printf("le nombre de personne du batiment n 3 est :\n %d",b3);
scanf("%d",&b3);}
else if ( i=4) {b4=a1+a2+a3+a4;
printf("le nombre de personne du batiment n 4 est :\n %d",b4);
scanf("%d",&b3);}
else if ( i=4 ) {q = b1 + b2 + b3 + b4 ;
printf("le nombre de personne au quartier est :\n %d",q);
scanf("%d",&q);}
}

}
Configuration: Windows XP
Firefox 2.0.0.1

13 réponses

  1. naruto83700 Messages postés 58 Statut Membre 4
     
    Le debut je comprend t'as langue mais le2e paragraphe c'est quelle langue?
    0
  2. vh_77 Messages postés 539 Statut Membre 2
     
    int main (int argc, char *argv[])
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Non non, c'est bien int en minuscule ;-))). Et les arguments sont facultatifs...
      0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,

    Plusieurs remarques :
    conio.h : évite de l'inclure dans la mesure du possible, car non standard.


    <ital>int main ()
    en C, le prototype sans arguments est : int main(void)
    for ( i=1 ; i<=4 ; i++ )</ital> : je te conseille de faire des boucles en partant de 0 car les tableaux commencent à l'indice 0, cela t'évitera bien des complications.

    if ( i = 1 ) : condition toujours vraie. L'opérateur de comparaison en C est le double égal (==). Le simple égal est utilisé pour l'affectation. Ceci fera i=1 et cela renverra 1 valeur vraie. Donc, le compilateur fera i=1; puis tout le bloc du if sera exécuté.

    Pour les autres else if, voire remarque ci-dessus.

    Ton dernier else if sera mieux de mettre i==5. Puisqu'en respectant la logique du programme, elle doit s'exécuter à la fin du for. Encore mieux car plus lisible, mettre ce bloc en dehors du for.

    N'oublie pas de mettre return 0; à la fin pour signaler que tout va bien.

    Cdlt
    0
  4. ninouhhichem Messages postés 303 Statut Membre 9
     
    slt,on veut calculer
    1)nombre de personne par quartier
    2)le batiment a plus grand nombre de personne

    #include <stdio.h>

    main ()
    {
    int a1 , a2 , a3 , a4 , b1 , b2 , b3 , b4 ,i,j,q,max,x[4];
    for ( i=1 ; i<=4 ; i++ ) {
    printf("entrez le nombre de personne de l'apartement n 1 :\n");
    scanf("%d",&a1);
    printf("entrez le nombre de personne de l'apartement n 2 :\n");
    scanf("%d",&a2);
    printf("entrez le nombre de personne de l'apartement n 3 :\n");
    scanf("%d",&a3);
    printf("entrez le nombre de personne de l'apartement n 4 :\n");
    scanf("%d",&a4);
    if ( i = 1 ) {b1=a1+a2+a3+a4;x[i]=b1;}
    if ( i = 2 ) {b2=a1+a2+a3+a4;x[i]=b2;}
    if ( i = 3 ) {b3=a1+a2+a3+a4;x[i]=b3;}
    if ( i = 4 ) {b4=a1+a2+a3+a4;x[i]=b4;}
    }

    q = b1 + b2 + b3 + b4
    printf("le nombre de personne au quartier est :\n %d",q);

    max=x[1];
    for ( j=1 ; j<=4 ; j++ )
    if (max<x[j]) max=x[j];

    }
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Salut,
      main ()
      Ce n'est pas le bon prototype. Tu dois spécifier int devant !

      if ( i = 1 ) {b1=a1+a2+a3+a4;x[i]=b1;}
      L'opérateur de comparaison en C est le double égal (==) !

      q = b1 + b2 + b3 + b4
      En C, une instruction se termine par un point-virgule.

      Ton tableau int x[4] est un tableau de 4 int dont le dernier indice est 3 et non 4. Ton programme pose donc problème. Voilà exactement pourquoi j'ai dit qu'il valait mieux commencer les boucles for à l'indice 0.

      Et enfin, n'oublie pas le return 0 final.
      0
    2. ninouhhichem Messages postés 303 Statut Membre 9 > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
       
      ou est ton prg
      ou tu est la pour just "bla bla"
      0
    3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > ninouhhichem Messages postés 303 Statut Membre
       
      Tu relis mon poste 4, et il y a toutes les corrections qu'il faut apporter à son programme.
      Le but du forum est d'aider, d'expliquer, pas de réaliser un programme en entier (qui plus est, avec des fautes) sans rien n'expliquer comme tu l'as fait.
      0
    4. ninouhhichem Messages postés 303 Statut Membre 9 > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
       
      mon programme est correcte
      0
    5. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > ninouhhichem Messages postés 303 Statut Membre
       
      Correcte ??
      Il y a plein de fautes :s.
      Relis mon poste 6, je t'ai signalé toutes tes erreurs.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. valgoku Messages postés 213 Statut Membre 47
     
    Petit conseil, utilise le plus possible la boucle for, cela t'évitera bien des bêtises dans l'avenir !
    0
  7. Lamp's Messages postés 57 Statut Membre 6
     
    J'ai un petit doute : le fait de déclarer ton tableau int x[4] créé-t-il un tableau à 4 cases ou allant jusque la case numéro 4?

    Les tableaux en C commençant par la case [0], la première solution poserait probleme ici puisque la case [4] n'existerait pas.
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Salut
      int x[4]; créé un tableau de 4 int dont le premier indice est 0.
      x[4] n'existe donc pas.
      0
  8. vh_77 Messages postés 539 Statut Membre 2
     
    pourquoi les fonction int main argv et argv sont facultative
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Pourquoi ?
      Ben car c'est la norme qui le dit.
      Soit tu écris : int main(void); soit int main(int argc, char **argv);
      0
  9. vh_77 Messages postés 539 Statut Membre 2
     
    de quel norme tu parles ?
    c'est quoi le void je l'ai pas encore vue sur le site du zero ?
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Je parle des normes du C (ANSI, C99) qui régissent le C.
      Eh oui, sur le site du zéro, il n'y a pas tout ^^. Mais c'est un excellent début.
      0
  10. Mins Messages postés 45 Statut Membre 9
     
    void c'est rien. Ca veut dire qu'il ne prend rien en argument si tu le mets à la place des paramètres. tu peux aussi avoir void comme retour de fonction si ta fonction ne doit rien retourner.

    Bonne journée
    0
  11. vh_77 Messages postés 539 Statut Membre 2
     
    mais void c'est pas un truc pour la voie ? pour parler ?
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Euh non void, c'est pour préciser qu'il n'y a pas de valeurs.
      Tu confondrais pas avec le mot anglais "voice" ? ^^.
      0
  12. vh_77 Messages postés 539 Statut Membre 2
     
    ha oui merci je confond.
    0
  13. the F Messages postés 162 Statut Membre 13
     
    Never miss your English lessons next time VH

    :-D
    0
  14. the F Messages postés 162 Statut Membre 13
     
    @ hichem :
    il n'y a pas de #serviteurs# dans ce furom en plus quand qq 1 te corrige : pas besoin de lui declarer la guerre
    0