[C] corrigé.moi.cet.exercice.svp

Fermé
rachad - 25 déc. 2005 à 16:47
 farid87 - 4 mai 2008 à 19:03
slt

j'espere bien que vs me corrigé cette exercice en language c :

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

void main ()
{int i=0,n;
char nom[20],prenom[20];
float moy[20];
clrscr();
printf("Donner le nombre des eleves\n");
scanf("%d",&n);
for (i=0;i<n;i++)
{
clrscr();
printf("nom :");
scanf("%s",nom[i]);
printf("prenom :");
scanf("%s",prenom[i]);
printf("note =");
scanf("%f",&moy[i]);
}
for (i=0;i<n;i++)
printf("%s %s %f\n",nom[i],prenom[i],moy[i]);
getch();
}



et merci bcp.

16 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
26 déc. 2005 à 04:09
Bonjour,

Ce serait bien de nous donner un minimum d'indice sur le problème, sur l'erreur....

Deviner l'énoncé du problème et chercher en quoi il y a une erreur sans la moindre indication, c'est fatiguant, d'autant plus quand il s'agit d'un language qui fait mal à la tête comme le C.

Le soucis est dans les tableaux nom et prenom.
char nom[20],prenom[20]; 

Ce sont des tableaux de caractères que tu as déclaré (ou chaines de caractères) et non pas des tableaux de chaines de caractères comme tu l'aurais voulu je suppose.
Car dans :
scanf("%s",nom[i]); 

Là par exemple tu essaie de mettre une chaine de caractère dans un emplacement réservé à un seul caractère.
En gros dans nom[20] tu ne peux stocker qu'un seul nom.

Mais tu peux déclarer des tableaux de chaines de caractères comme ceci:
char nom[100][20],prenom[100][20]; 

Voilà deux tableaux de 100 chaines caractères pouvant chacune contenir 20 caractères. Ca veut dire que le nombre d'élèves ne devra pas excéder 100, l'idéal serait d'utiliser des tableaux dynamiques, mais comme je ne connais pas ton niveau en C, je ne m'avance pas là-dessus.

Voilà, donc à priori tes scanf fonctionneront bien comme ça en déclarant tes tableaux comme je t'ai montré.
2
nicO.2x45 Messages postés 76 Date d'inscription vendredi 11 novembre 2005 Statut Membre Dernière intervention 17 novembre 2007 2
26 déc. 2005 à 13:01
Bonjour !!!

Exact, avec ce que j'avais dit, ce ne sera pas un tableau de chaine de caractère (a moins qu'il ne prévois de rentrer qu'un seul mot pour nom et prénom (ce que j'avais pensé)), sinon, pour les tableaux de chaines de caractères, on peut aussi déclarer avec le char**
:)
0
ca fait longtemps que j'ai pas fait du c en console mais je dirais que le problème vient de scanf("%s",nom[i]); et scanf("%s",nom[i]); :
je ne crois pas que la commande scanf te permette de saisir du texte (et que si tu lui envoie du texte elle renvoie 0)
Il me semble que la commande pour saisir une chaine est gets
1
nicO.2x45 Messages postés 76 Date d'inscription vendredi 11 novembre 2005 Statut Membre Dernière intervention 17 novembre 2007 2
25 déc. 2005 à 23:34
Bonsoir Manu !!

SI normalement le %s marche aussi pour les chaines de caractères, mais en effet il vaut mieux utiliser le gets. Par contre, je ne sais plus si le gets se trouve dans la librairie stdio.h ou si il se trouve dans string.h !!! (Et puis je l'avoue, j'ai pas le courage un 25/12 à me replonger illico presto dans mes cours !!! Même si j'adore la prog !!! ;p)

Par contre, Rachad, il est impératif si tu utilise le gets pour enregistrer tes chaines de caractères, que tu places un getchar(), ou un getch(), après chaque scanf, il me semble, sinon tu auras des piti problemes avec !!! :)

Bonne soirée :)
0
salut, moi c doualeh de djibouti et concernant votre exercice , je dirait k'il est juste dans le sens ou on veux simplement afficher le nom,prenomet la note dans un tableau.
si c'est seulement ca le but de ce programme j'opte a dire k'il est juste .

bonne chance .(etudiant en master [analyste programmeur])
1
#include <stdio.h>
#include <stdlib.h>

int main ()
{int i,n;
char nom[20],prenom[20];
float moy[20];

printf("Donner le nombre des eleves\n");
scanf("%d",&n);
for (i=0;i<n;i++)
{

printf("nom :");
scanf("%s",nom[i]);
printf("prenom :");
scanf("%s",prenom[i]);
printf("note =");
scanf("%f",&moy[i]);
}
for (i=0;i<n;i++)
printf("%s %s %f\n",nom[i],prenom[i],moy[i]);
system("pause");return 0;
}
1

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

Posez votre question
salam mec, c est mohammed maroc! consernant votre exercice je pense qu il faut utiliser les structures, sin non il fau fusioner les deux boucle et enlevé dans scanf les [] et ça va marcher!! mais l affichage des infos va etre paralellement avec l insertion!!!lol
1
mahouda Messages postés 31 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 11 mai 2009
15 mars 2008 à 17:38
bonjour,
est ce que vous pouvez me m'aider a faire un programme en assembleur de tri croissant
0
belhauss Messages postés 69 Date d'inscription dimanche 24 décembre 2006 Statut Membre Dernière intervention 9 février 2012 3
3 févr. 2008 à 00:06
mai bon urtilise la fonction gets !!!!
#include <stdio.h>
#include <conio.h>

void main ()
{int i=0,n;
char nom[20],prenom[20];
float moy[20];
clrscr();
printf("Donner le nombre des eleves\n");
scanf("%d",&n);
for (i=0;i<n;i++)
{
clrscr();
printf("nom :");
gets(nom);
printf("prenom :");
gets(prenom);
printf("note =");
scanf("%f",&moy[i]);
}
for (i=0;i<n;i++)
printf("%s %s %f\n",nom,prenom,moy);
getch();
}
1
Ecrire un programme c permettant de lancer la commande passée en argument
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
12 févr. 2008 à 19:48
Salut,

Etudiant, tu voudrais pas qu'on fasse ton travail à ta place aussi ?
Cherche un peu et poste tes recherches, et dis nous ce qui te bloque ;)

Cordialement
1
abdess111 Messages postés 40 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 mai 2008 1
24 févr. 2008 à 23:25
lt tt le monde
il yas plusieurs erreur dans ce programme
on peu pas saisir une chaine de caractere pas la fonction scanf si nn on fai une boucle.voiala un exemple
for("i=0;i<n;i++)
{printf("saisi un caractere");
scanf("%c",&nom[i]) mais ca marche pas par ce que lutilisateur doit saisi le nom caractere par caractere et cest pas juste
cest pour ca on utilise un pointeur et on aloue lespace illimité pous le nom
voila un exemple:
noublie jamais que si tu utilse les pointeurs il fo appelle un bebloitéq #incluse<stdlib.h> et noublie pas aussi que pour utiliser la fonction gets il fau #include<string.h> voila un exemple
_____________________________
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
char *nom;
nom=malloc(sizeof(char));
printf("saisi votre nom");
gets(nom);
puts(nom);
}
ce programme est bien compilé

puts cest comme printf on peu meme faire
for(i=0;i<n;i++)
{
printf("%c",*(p+i));
}
par ca on va affiché caractere par caractere
alors cest mieux detuliser puts
bon courage pr t le monde
1
a propo de la declaration int i=0 est fausse car t'es besoin d'incrementé le i
alors on la declaré par int i;

et pour les tableaux tu les declare comme ça par exemple
printf("%s",liste[i].nom) et voila le prbleme a ete resoudre
1
a propo de la declaration int i=0 est fausse car t'es besoin d'incrementé le i
alors on la declaré par int i;

et pour les tableaux tu les declare comme ça par exemple
printf("%s",liste[i].nom) et voila le prbleme a ete resoudre
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
17 mars 2008 à 13:30
Et la politesse ? Bonjour, ..., c'est un luxe ? http://www.commentcamarche.net/ccmguide/ccmcharte respect autrui.php3
1
// EXERCICE 1
#include<stdio.h>
#include<conio.h>
// FONCTION DE SAISIE
void saisie(int n, int T[])
{
for(int i=0;i<n;i++)
{
scanf("%d",&T[i]);
}
}

// FONCTION DE CALCUL
int calcul(int n, int T[], int a, int b)
{
int p;
p=0;
for(int i=0;i<n;i++)
{
if(T[i]==a && T[i+1]==b)
{
p=p+1;
}
}
return p;
}

// FONCTION PRINCIPALE
int main ()
{
int n,a,b,r,;
printf("entrer taille du tableau= ");
scanf("%d",&n);
int T[n];
saisie(n,T);
printf("entrer la valeur de a et de b,\n");
scanf("%d %d",&a,&b);
r=calcul(n,T,a,b);
}

testé le dit comment faire pour pas que l'ecran disparaisse pendant l'execution
1
salut svp je veut la corraction de cette exo svp en plus tout possible :ecrire le programe assembleur mips r3000 ki permis d afficher les majuscules quand il faut
1
fanni1234 Messages postés 7 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 4 décembre 2007 1
4 déc. 2007 à 14:06
tu sais koi il faut mieux d'utiliser une structure ici pour ke tu puisse donner des infos sur une personne sans problemme
comme ex:
struct etudiant{
char nom[20];
char prenom[20];
int moy;
};
mais quand tu vx inserer les infos consernant une personne il faut appler la structure dans le prog comme
#include <stdio.h>
#include <stdlib.h>
struct etudiant
{
char nom[20];
char prenom[20];
float moy; };
void main ()
{int i,n;

etudiant etud;
printf("Donner le nombre des eleves\n");
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("nom :");
scanf("%s",etud.nom);
printf("prenom :");
scanf("%s",etud.prenom);
printf("note =");
scanf("%f",&etud.moy);
}
for (i=0;i<n;i++)
printf("%s %s %f\n",etud.nom,etud.prenom,etud.moy);
system("pause");
}
0
soit un triangle abc rectangle en a tel que:
ab=8cm et bc=9cm
A/construire le triangle abc.
B/calculer la longueurAC.On donnera la valeur exacte en cm,puis la valeur approchée arrondie au dixième de cm.
C/Calculer le sinus de l'angla ABC et en déduir une valeur approchée dela mesure de l'angle ABC, arrondie à 0.1°prés.
D/Calculer, en justifiant le calcul, le rayon du cercle circonscrit au triangla ABC.




aider moi!!!!!!!!!!!!
0