Unexpected identifier-id before 'if'
Fermé
Marie
-
Modifié le 5 mai 2021 à 16:08
mamiemando Messages postés 33663 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 13 mai 2025 - 5 mai 2021 à 16:08
mamiemando Messages postés 33663 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 13 mai 2025 - 5 mai 2021 à 16:08
A voir également:
- Unexpected identifier-id before 'if'
- Identifier appareil avec adresse mac - Guide
- Identifier une signature de peintre - Forum Loisirs / Divertissements
- Id telephone - Guide
- Document id lycamobile - Forum LG
- Id chinois one piece fighting path - Forum Jeux vidéos smartphones
2 réponses
Jean20B
Messages postés
1819
Date d'inscription
dimanche 6 avril 2014
Statut
Membre
Dernière intervention
13 mai 2025
2 331
5 mai 2021 à 15:06
5 mai 2021 à 15:06
Bonjour, à la ligne 23, il y a un \n à l'extérieur des guillemets. Essayez ceci :
printf ("\n la valeur de x doit être dans l'intervalle [0,1[ \n");
mamiemando
Messages postés
33663
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
13 mai 2025
7 850
Modifié le 5 mai 2021 à 16:17
Modifié le 5 mai 2021 à 16:17
Bonjour,
Quelques recommandations
1) Tu devrais indenter ton code, pour qu'il soit plus facile à lire (j'ai corrigé ton premier message en conséquence).
2) Tu devrais utiliser un éditeur texte adapté pour développer, qui t'aidera à voir directement les erreurs de syntaxe.
Tant que tu ne fais que des petits programmes tu peux envisager
Quand tu feras des programmes plus compliqués (impliquant de nombreux fichiers), il pourra être intéressant d'envisager des logiciels plus évolués (code::blocks, devcpp sous windows ;
3) Tes retours à la ligne sont bizarrement placés. Généralement on les met en fin de chaîne plutôt qu'en début de chaîne. Il n'y a aucune raison de mettre un espace devant
4) Généralement on écrit les messages d'erreur dans la sortie d'erreur (
5) Si j'ai bien compris ce que tu veux faire, la structure de ton programme devrait être organisée autour de blocs
Ainsi, ton programme peut se réécrire comme suit :
Bonne chance
Quelques recommandations
1) Tu devrais indenter ton code, pour qu'il soit plus facile à lire (j'ai corrigé ton premier message en conséquence).
2) Tu devrais utiliser un éditeur texte adapté pour développer, qui t'aidera à voir directement les erreurs de syntaxe.
Tant que tu ne fais que des petits programmes tu peux envisager
- notepad++ sous windows
-
kate
ougedit
sous linux
Quand tu feras des programmes plus compliqués (impliquant de nombreux fichiers), il pourra être intéressant d'envisager des logiciels plus évolués (code::blocks, devcpp sous windows ;
anjutaou
kdevelopsous linux)
3) Tes retours à la ligne sont bizarrement placés. Généralement on les met en fin de chaîne plutôt qu'en début de chaîne. Il n'y a aucune raison de mettre un espace devant
'\n'ou
'\t'.
4) Généralement on écrit les messages d'erreur dans la sortie d'erreur (
stderr). Les résultats du programmes s'écrivent généralement dans la sortie standard (
stdout). C'est exactement ce que fait
printf(qui est équivalent à
fprintf(stdout, ...)). Pour la culture,
scanf(...)est une réécriture de
fscanf(stdin, ...)(lecture dans l'entrée standard).
5) Si j'ai bien compris ce que tu veux faire, la structure de ton programme devrait être organisée autour de blocs
if ... else if ... else if ... elsepuisque tu veux adapter le comportement de ton programme en fonctions de partitions de l'ensemble des nombres réels. Car ici la condition de ton dernier
ifsemble fausse (
x > 1au lieu de
x < 1). De plus tu calcules y dans ce dernier cas alors que le résultat de ce calcul n'est pas utilisé.
Ainsi, ton programme peut se réécrire comme suit :
#include <stdio.h> int main() { float x, y; printf("Entrez la valeur de x:\t"); scanf("%f", &x); if (x < 0 || x >= 1) { fprintf(stderr, "la valeur de x doit être dans l'intervalle [0,1[\n"); return -1; } else if (x < 0.5) { // x in [0, 0.5[ y = 20 * x ; } else if (x < 2 / 3) { // x in [0.5, 2 / 3[ y = (30 * x * x) + (50 * x) - (15 / 2); } else { // x in [2 / 3, 1[ y = (30 * x * x) - (60 * x) - (35 / 6); } printf("la solution est : %f\n", y); return 0; }
Bonne chance