Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 yikes

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 lol

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 tongue

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  smile
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] ? smile

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]

Maxouille a écrit :

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 sad

#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]

Maxouille a écrit :

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 smile

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 smile 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  wink

Hors ligne

#16 Le 28/08/2006, à 14:09

Balkoth

Re : [resolu] Pourquoi cela marche pas ?? {languageC}[resolu]

smile

Hors ligne