Un programme en C ! besoin d'aide
Khaliil
-
the F Messages postés 162 Statut Membre -
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);}
}
}
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
Résumé de la discussion
Un exemple de programme en C vise à afficher le nombre de personnes par bâtiment et par quartier, sachant que chaque bâtiment comporte 4 appartements et chaque quartier regroupe 4 bâtiments. Plusieurs réponses soulignent des erreurs de logique et de saisie, comme utiliser l’opérateur = au lieu de == dans les conditions et viser des adresses scanf incorrectes. En cas de corrections proposées, il est conseillé d'initialiser correctement les variables de somme, d’utiliser un tableau pour regrouper les bâtiments et d’éviter les lectures maladresses du buffer, notamment via le vide du '\n'.
-
Le debut je comprend t'as langue mais le2e paragraphe c'est quelle langue?
-
-
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 -
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];
}-
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. -
-
-
-
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Petit conseil, utilise le plus possible la boucle for, cela t'évitera bien des bêtises dans l'avenir !
-
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. -
pourquoi les fonction int main argv et argv sont facultative
-
de quel norme tu parles ?
c'est quoi le void je l'ai pas encore vue sur le site du zero ? -
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 -
-
-
-
@ 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