Unexpected identifier-id before 'if'
Bonjour, voici mon programme mais je ne comprend pas pourquoi est ce que le compilateur le rejeté
#include <stdio.h> int main() { float x, y; printf("Entrez la valeur de x:\t"); scanf("%f", &x); if (x >= 0 || x < 0.5) { y = 20 * x ; printf("la solution est : %f", y); } if (x >= 0.5 || x < 2/3) { y = ((30 * x * x) + (50 * x) - (15 / 2)); printf("\n la solution est : %f", y); } if (x >= 2/3 || x > 1) { y = ((30 * x * x) - (60 * x) - (35 / 6)); printf("\n la valeur de x doit être dans l'intervalle [0,1[" \n); } return 0; }
Configuration: Android / Chrome 79.0.3945.116
A voir également:
- Unexpected identifier-id before 'if'
- Identifier appareil avec adresse mac - Guide
- Id telephone - Guide
- Identifier un tableau à partir d'une photo - Forum Loisirs / Divertissements
- Document id lycamobile - Forum LG
- Trouver le nom d'un tableau avec sa photo. - Forum Graphisme
2 réponses
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");
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