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
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.
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 :
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:
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é.
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é.
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
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
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
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 :)
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 :)
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])
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])
#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;
}
#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;
}
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
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
15 mars 2008 à 17:38
bonjour,
est ce que vous pouvez me m'aider a faire un programme en assembleur de tri croissant
est ce que vous pouvez me m'aider a faire un programme en assembleur de tri croissant
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
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();
}
#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();
}
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
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
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
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
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
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
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
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
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
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
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
17 mars 2008 à 13:30
Et la politesse ? Bonjour, ..., c'est un luxe ? http://www.commentcamarche.net/ccmguide/ccmcharte respect autrui.php3
// 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
#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
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
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
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");
}
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");
}
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!!!!!!!!!!!!
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!!!!!!!!!!!!
26 déc. 2005 à 13:01
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**
:)