Un programme en C ! besoin d'aide

Fermé
Khaliil - 23 mai 2009 à 01:54
the F Messages postés 150 Date d'inscription dimanche 22 mars 2009 Statut Membre Dernière intervention 22 mars 2011 - 23 mai 2009 à 19:59
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);}
}




}

13 réponses

naruto83700 Messages postés 42 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 16 novembre 2011 4
23 mai 2009 à 01:56
Le debut je comprend t'as langue mais le2e paragraphe c'est quelle langue?
0
vh_77 Messages postés 207 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 20 août 2009 2
23 mai 2009 à 02:57
int main (int argc, char *argv[])
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
23 mai 2009 à 08:12
Non non, c'est bien int en minuscule ;-))). Et les arguments sont facultatifs...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
23 mai 2009 à 08:23
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
ninouhhichem Messages postés 201 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 21 juin 2009 9
23 mai 2009 à 10:02
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
23 mai 2009 à 11:36
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
ninouhhichem Messages postés 201 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 21 juin 2009 9 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
23 mai 2009 à 15:35
ou est ton prg
ou tu est la pour just "bla bla"
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842 > ninouhhichem Messages postés 201 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 21 juin 2009
23 mai 2009 à 15:57
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
ninouhhichem Messages postés 201 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 21 juin 2009 9 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
23 mai 2009 à 16:01
mon programme est correcte
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842 > ninouhhichem Messages postés 201 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 21 juin 2009
23 mai 2009 à 16:09
Correcte ??
Il y a plein de fautes :s.
Relis mon poste 6, je t'ai signalé toutes tes erreurs.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
valgoku Messages postés 187 Date d'inscription lundi 17 avril 2006 Statut Membre Dernière intervention 22 janvier 2013 47
23 mai 2009 à 11:46
Petit conseil, utilise le plus possible la boucle for, cela t'évitera bien des bêtises dans l'avenir !
0
Lamp's Messages postés 54 Date d'inscription mercredi 13 mai 2009 Statut Membre Dernière intervention 24 septembre 2009 6
23 mai 2009 à 11:58
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
23 mai 2009 à 12:07
Salut
int x[4]; créé un tableau de 4 int dont le premier indice est 0.
x[4] n'existe donc pas.
0
vh_77 Messages postés 207 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 20 août 2009 2
23 mai 2009 à 12:00
pourquoi les fonction int main argv et argv sont facultative
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
23 mai 2009 à 12:11
Pourquoi ?
Ben car c'est la norme qui le dit.
Soit tu écris : int main(void); soit int main(int argc, char **argv);
0
vh_77 Messages postés 207 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 20 août 2009 2
23 mai 2009 à 13:05
de quel norme tu parles ?
c'est quoi le void je l'ai pas encore vue sur le site du zero ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
23 mai 2009 à 13:29
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
Mins Messages postés 43 Date d'inscription mardi 31 juillet 2001 Statut Membre Dernière intervention 28 mai 2009 9
23 mai 2009 à 13:08
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
vh_77 Messages postés 207 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 20 août 2009 2
23 mai 2009 à 13:15
mais void c'est pas un truc pour la voie ? pour parler ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
23 mai 2009 à 13:40
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
vh_77 Messages postés 207 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 20 août 2009 2
23 mai 2009 à 14:56
ha oui merci je confond.
0
the F Messages postés 150 Date d'inscription dimanche 22 mars 2009 Statut Membre Dernière intervention 22 mars 2011 13
23 mai 2009 à 19:54
Never miss your English lessons next time VH

:-D
0
the F Messages postés 150 Date d'inscription dimanche 22 mars 2009 Statut Membre Dernière intervention 22 mars 2011 13
23 mai 2009 à 19:59
@ 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