Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

erreur de programmation

9 réponses
Avatar
Babs2018
Bonjour aidez moi svp, ce ne marche pas.
, #include<stdio.h>
typedef struct
{
char nom[20], prenom[20];
int age;
}personne;
main()
{
personne p,pp,pm;
int n,i,x;
float ma;
do
{
printf("e;saisir nombre de personnen"e;);
scanf("e;%d"e;,&n);
}while(n>=0);
ma=0;
for(i=1;i<=n;i++)
{
printf("e;saisir nom personnen"e;);
scanf("e;%s"e;,&p.nom);
printf("e;saisir prenom personnen"e;);
scanf("e;%s"e;,&p.prenom);
printf("e;saisir age personnen"e;);
scanf("e;%d"e;,&p.age);


printf("e;le nom de la personne est%s"e; p.nom);
printf("e;le prenom de la personne est%s"e; p.prenom);
printf("e;l'age de la personne est%d"e; p.age);


if(i==1)
{
pp=p;
pm=p;
}else
if(pp.age<p.age)
{
pp=p;
}
if(pm.age>p.age)
{
pm=p;
}
ma=ma+p.age;
}
ma=ma%n;
printf("e;la personne la plus agee est%s %s %p"e;pp.nom,pp.prenom,pp.age);

}

9 réponses

Avatar
espie
- tes guillemets ont un probleme, ca fait du "e ici... apres a encoder des
trucs correctement.
- regarde la doc de scanf, ca renvoie un resultat (le nombre de valeurs
converties avec succes). Commence par gerer les erreurs a ce niveau...
apres on verra s'il reste des trucs sur lesquels t'aider.
Avatar
Olivier Miakinen
Bonjour,
Le 07/03/2018 14:36, Babs2018 a écrit :
Bonjour aidez moi svp, ce ne marche pas.

Outre les remarques de Marc Espie, il n'y a rien de moins informatif
que de dire « ce ne marche pas ».
Est-ce que :
- ça ne compile pas ?
- ton programme compile mais il s'arrête avant de demander les infos ?
- il s'arrête après avoir demandé les infos mais avant d'afficher les
résultats ?
- il affiche des résultats mais sur la mauvaise personne ?
- il affiche des résultats sur la bonne personne mais avec un truc
bizarre au lieu de l'âge ?
Indice :
printf("e;la personne la plus agee est%s %s %p"e;pp.nom,pp.prenom,pp.age);

C'est ça qui m'a fait poser la dernière question.
Mais encore une fois tu as très mal exposé ton problème. Essaye d'y
penser pour la prochaine fois.
--
Olivier Miakinen
Avatar
Samuel DEVULDER
Le 07/03/2018 à 14:36, Babs2018 a écrit :
do
{
printf("e;saisir nombre de personnen"e;);
scanf("e;%d"e;,&n);
}while(n>=0);

Donc tant qu'on entre un entier positif ca repose la question. Es-tu sur
que c'est ce que tu voulais faire? En outre il faudrait flush()er stdout
je pense. En tout cas ca ne ferait pas de mal. Et aussi les trucs que
les autres ont reportés (tester le code de retour de scanf(), etc.)
sam.
Avatar
espie
In article <p7qrcf$2v4$,
Samuel DEVULDER wrote:
Le 07/03/2018 à 14:36, Babs2018 a écrit :
do
{
printf("e;saisir nombre de personnen"e;);
scanf("e;%d"e;,&n);
}while(n>=0);

Donc tant qu'on entre un entier positif ca repose la question. Es-tu sur
que c'est ce que tu voulais faire? En outre il faudrait flush()er stdout
je pense. En tout cas ca ne ferait pas de mal. Et aussi les trucs que
les autres ont reportés (tester le code de retour de scanf(), etc.)

En fait c'est bien plus violent que ca... puisque si scanf echoue, n
ne sera pas change (donc jamais initialise), et en plus rien ne sera
lu sur le flux d'entree... donc ca va vite tourner a la boucle infinie.
-> ca sent le projet etudiant fait a la va-vite par un mec qui s'en fout
et qui n'est meme pas revenu prendre les reponses et nous en faire une 2e...
... en une bonne semaine, quand meme.
Avatar
espie
In article <p80ls1$2aah$, Marc Espie wrote:
In article <p7qrcf$2v4$,
Samuel DEVULDER wrote:
Le 07/03/2018 à 14:36, Babs2018 a écrit :
do
{
printf("e;saisir nombre de personnen"e;);
scanf("e;%d"e;,&n);
}while(n>=0);

Donc tant qu'on entre un entier positif ca repose la question. Es-tu sur
que c'est ce que tu voulais faire? En outre il faudrait flush()er stdout
je pense. En tout cas ca ne ferait pas de mal. Et aussi les trucs que
les autres ont reportés (tester le code de retour de scanf(), etc.)

En fait c'est bien plus violent que ca... puisque si scanf echoue, n
ne sera pas change (donc jamais initialise), et en plus rien ne sera
lu sur le flux d'entree... donc ca va vite tourner a la boucle infinie.
-> ca sent le projet etudiant fait a la va-vite par un mec qui s'en fout
et qui n'est meme pas revenu prendre les reponses et nous en faire une 2e...
... en une bonne semaine, quand meme.

Typiquement, dans mes cours d'initiation, je leur file meme une fonction
int get_entier(const char *prompt);
avec les explications (qui affiche un prompt, lis une valeur jusqu'a obtenir
quelque chose, avec flush, affichage de message d'erreur, et absorption
de stdin jusqu'au n suivant si pas bon)
Avatar
Samuel DEVULDER
Le 10/03/2018 à 14:16, Marc Espie a écrit :
-> ca sent le projet etudiant fait a la va-vite par un mec qui s'en fout
et qui n'est meme pas revenu prendre les reponses et nous en faire une 2e...
... en une bonne semaine, quand meme.

Bah, tu sais ce que j'ai (presque) entendu dire? Le C c'est dépassé.
L'informatique c'est du php et de la config.xml. Alors bon oui la
lecture au clavier quand on se restreint au web, forcément ca coince au
niveau du concept.. Ah la la, pauvre monde!
sam.
Avatar
espie
In article <p80msm$3fi$,
Samuel DEVULDER wrote:
Le 10/03/2018 à 14:16, Marc Espie a écrit :
-> ca sent le projet etudiant fait a la va-vite par un mec qui s'en fout
et qui n'est meme pas revenu prendre les reponses et nous en faire une 2e...
... en une bonne semaine, quand meme.

Bah, tu sais ce que j'ai (presque) entendu dire? Le C c'est dépassé.
L'informatique c'est du php et de la config.xml. Alors bon oui la
lecture au clavier quand on se restreint au web, forcément ca coince au
niveau du concept.. Ah la la, pauvre monde!

Ca me sidere toujours autant... surtout qu'au final, il faut quand meme
des gens qui font du C pour ecrire le prochain interpreteur php...
on est loin des langages des annees 60 a la lisp qui se bootstrappaient
tranquillou.
Avatar
Lucas Levrel
Le 10 mars 2018, à 13:16, Marc Espie a écrit :
un mec qui s'en fout et qui n'est meme pas revenu prendre les reponses

Ça tu n'en sais rien (sauf peut-être si tu es admin chez giganews ?) ;-)
--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Avatar
babs2018
Le mercredi 07 Mars 2018 à 14:36 par Babs2018 :
Bonjour aidez moi svp, ce ne marche pas.
, #include<stdio.h>
typedef struct
{
char nom[20], prenom[20];
int age;
}personne;
main()
{
personne p,pp,pm;
int n,i,x;
float ma;
do
{
printf("e;saisir nombre de personnen"e;);
scanf("e;%d"e;,&n);
}while(n>=0);
ma=0;
for(i=1;i<=n;i++)
{
printf("e;saisir nom personnen"e;);
scanf("e;%s"e;,&p.nom);
printf("e;saisir prenom personnen"e;);
scanf("e;%s"e;,&p.prenom);
printf("e;saisir age personnen"e;);
scanf("e;%d"e;,&p.age);
printf("e;le nom de la personne est%s"e; p.nom);
printf("e;le prenom de la personne est%s"e; p.prenom);
printf("e;l'age de la personne est%d"e; p.age);
if(i==1)
{
pp=p;
pm=p;
}else
if(pp.age<p.age)
{
pp=p;
}
if(pm.age>p.age)
{
pm=p;
}
ma=ma+p.age;
}
ma=ma%n;
printf("e;la personne la plus agee est%s %s
%p"e;pp.nom,pp.prenom,pp.age);
}
merci mes amis j'ai reussi a le corriger grace a vous.