#1 Le 28/08/2006, à 11:59
- Maxouille
[resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
salut
j'aimerais savoir comment résoudre les erreur du programme svp
#include <stdio.h>
#include <math.h>
#define NFOIS 2
main()
{
int i;
int float x;
float racx;
printf("Calculons une racine carrée \n ");
printf("Pour %d nombres\n", NFOIS);
for (i=0; NFOIS; i++)
{
printf ("donne un nombre") ;
scanf ("%f", &x)
if ( x < 0.0 )
printf("carée négative impossible" x);
else
{racx = sqrt (x)
printf ("Le nombre %f a pour racine carré : %f\n", x, racx);
}
}
printf (" c'est fini, a bientôt ");
}
L'erreur du terminal ..
max@max-desktop:/programme_C$ sudo gcc -o main main.c && ./main
main.c: Dans la fonction «main» :
main.c:8: erreur: two or more data types in declaration specifiers
main.c:14: erreur: syntax error before «)» token
main.c:18: erreur: syntax error before «if»
main.c: Hors de toute fonction :
main.c:26: erreur: syntax error before string constant
main.c:26: erreur: conflicting types for «printf»
main.c:26: note: a parameter list with an ellipsis can»t match an empty parameter name list declaration
main.c:26: attention : la définition de données n'a pas de type ni de classe de stockage
merci de votre aide
Dernière modification par Maxouille (Le 28/08/2006, à 13:34)
Hors ligne
#2 Le 28/08/2006, à 12:13
- Balkoth
Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
Bonjour,
main.c:8: erreur: two or more data types in declaration specifiers
int float x; -> float x. Une variable est soit entière soit flottante mais pas les deux.
main.c:12: erreur: stray «\» in program
main.c:12: erreur: syntax error before «n»
main.c:12: erreur: caractère " de terminaison manquant
printf("Pour %d nombres" \n", NFOIS); -> printf("Pour %d nombres \n", NFOIS); (un " en trop)
for (i=0; NFOIS; i++) -> for (i=0; i<NFOIS; i++)
C'est un test qu'il faut mettre en deuxième paramètre d'une boucle for.
Il manque des ; à la fin des lignes :
scanf ("%f", &x)
racx = sqrt (x)
Tu as des cours de c ici :
http://www.developpez.com/c/cours/
Edit : pas besoin de sudo devant gcc pour compiler
Dernière modification par Balkoth (Le 28/08/2006, à 12:14)
Hors ligne
#3 Le 28/08/2006, à 12:18
- Maxouille
Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
merci bcp
mais il reste cela
gcc -o main main.c && ./main
main.c: Dans la fonction «main» :
main.c:20: erreur: syntax error before «x»
main.c: Hors de toute fonction :
main.c:27: erreur: syntax error before string constant
main.c:27: erreur: conflicting types for «printf»
main.c:27: note: a parameter list with an ellipsis can»t match an empty parameter name list declaration
main.c:27: attention : la définition de données n'a pas de type ni de classe de stockage
edit: et sur ton site ya une vielle bare bleue a gauche on peux rien lire
Dernière modification par Maxouille (Le 28/08/2006, à 12:23)
Hors ligne
#4 Le 28/08/2006, à 12:43
- Balkoth
Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
main.c:20: erreur: syntax error before «x»
printf("carée négative impossible" x); ->
soit printf("carée négative impossible");
soit printf("carée négative impossible pour %f",x)
edit: et sur ton site ya une vielle bare bleue a gauche on peux rien lire lol
Bah elle masque rien et elle est pas large la barre, faut pas y faire attention ^^
Dernière modification par Balkoth (Le 28/08/2006, à 12:46)
Hors ligne
#5 Le 28/08/2006, à 12:55
- Maxouille
Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
/tmp/ccy6Wskb.o : Dans la fonction "main":main.c:(.text+0xab): référence indéfinie vers « sqrt »
collect2: ld a retourné 1 code d'état d'exécution
max@max-desktop:/programme_C$
C'est quoi sa encore
Hors ligne
#6 Le 28/08/2006, à 13:18
- Balkoth
Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
Ah oui pour utiliser les fonctions mathématiques, il faut rajouter -lm. Donc :
gcc -lm -o main main.c.
Et sinon, apparemment tu compiles avec sudo dans le dossier /programme_C, c'est pas la meilleure solution. Il vaut mieux créer le répertoire ~/programme_C, dans ton dossier utilisateur donc, et tu n'auras pas besoin de sudo pour compiler.
Hors ligne
#7 Le 28/08/2006, à 13:20
- Maxouille
Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
dsl mais je sais pas la différence entre ~/ et /
edit : TRop fort sa marche
merci bcp
Dernière modification par Maxouille (Le 28/08/2006, à 13:25)
Hors ligne
#8 Le 28/08/2006, à 13:30
- Balkoth
Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
Alors / est la racine du disque dur (correspond au c: de windows).
~/ est un raccourci pour /home/utilisateur_courant; /home/max dans ton cas.
Tu n'as pas besoin des droits root pour travailler dans ton répertoire personnel.
edit : un petit [résolu] ?
Dernière modification par Balkoth (Le 28/08/2006, à 13:30)
Hors ligne
#9 Le 28/08/2006, à 13:33
- Maxouille
Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
donc autan faire
sudo mkdir home/max/prog_C
c'est pareil ??
merci bcp pour ton aide
Hors ligne
#10 Le 28/08/2006, à 13:36
- Balkoth
Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
donc autan faire
sudo mkdir home/max/prog_C
Non, l'intérêt c'est que tu n'as pas besoin de sudo, et que comme ça tu ne risques pas de perturber le système de fichiers.
mkdir /home/max/prog_C ou mkdir ~/prog_C suffit. (pas oublier le / avant home).
Hors ligne
#11 Le 28/08/2006, à 13:38
- Maxouille
Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
okey merci bcp ..
aurais-tu msn si cela ne te derange pour pour mes prochain prog ?
edit: sa recommance
#include <stdio.h>
#include <math.h>
main()
{
int i;
float x;
float racx;
printf("Calculons une racine carrée\n ");
printf("Combient de racines veut-tu calculer?\n")
scanf ("%f", &x);
for (i=0; i<%f; i++)
{
printf ("donne un nombre") ;
scanf ("%f", &x);
if ( x < 0.0 )
printf("carée négative impossible pour %f", x);
else
{racx = sqrt (x);
printf ("Le nombre %f a pour racine carré : %f\n", x, racx);
}
}
printf (" c'est fini, a bientôt\n ");
}
max@max-desktop:/programme_C$ gcc -lm -o main main2.c
main2.c: Dans la fonction «main» :
main2.c:13: erreur: syntax error before «scanf»
main2.c:16: erreur: syntax error before «{» token
main2.c:16: erreur: syntax error before «)» token
main2.c: Hors de toute fonction :
main2.c:29: erreur: syntax error before string constant
main2.c:29: erreur: conflicting types for «printf»
main2.c:29: note: a parameter list with an ellipsis can»t match an empty parameter name list declaration
main2.c:29: attention : la définition de données n'a pas de type ni de classe de stockage
max@max-desktop:/programme_C$
Dernière modification par Maxouille (Le 28/08/2006, à 13:42)
Hors ligne
#12 Le 28/08/2006, à 13:50
- Balkoth
Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
okey merci bcp ..
aurais-tu msn si cela ne te derange pour pour mes prochain prog ?
Arf je préfère que tu m'envoie un mail si besoin; je ne suis pas très présent sur msn.
Et puis là vu les erreurs que tu fais, tu as besoin de bosser les bases, surtout la syntaxe.
Donc lis les tutos
Pour ton erreur, tu as encore oublié un point-virgule :
printf("Combient de racines veut-tu calculer?\n");
Et dans les paramètres du for, il faut mettre un nom de variable, pas un %f:
for (i=0; i<%f; i++) -> for(i=0; i<x; i++)
Hors ligne
#13 Le 28/08/2006, à 13:53
- Maxouille
Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
oué je lavais rajouter apres l'avoir ecri ici ..
mais les erreur sont tjr les meme ..
fin bon ...
ta pa un BON site ou ya pa de bare bleu XD
Hors ligne
#14 Le 28/08/2006, à 14:04
- Balkoth
Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
Google rapide :
http://www.progzone.free.fr/tutoriel/c/sommaire.html
Hors ligne
#15 Le 28/08/2006, à 14:07
- Maxouille
Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
merci pour tout
Hors ligne
#16 Le 28/08/2006, à 14:09
- Balkoth
Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]
Hors ligne