Unexpected identifier-id before 'if'
Fermé
Marie
-
Modifié le 5 mai 2021 à 16:08
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 5 mai 2021 à 16:08
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 5 mai 2021 à 16:08
A voir également:
- Unexpected identifier-id before 'if'
- Identifier appareil avec adresse mac - Guide
- Email id - Forum Consommation & Internet
- Document id lycamobile ✓ - Forum Mobile
- Id de membre perfect money - Forum Logiciels
- Identifier un numéro de gsm belgique - Forum Mobile
2 réponses
Jean20B
Messages postés
1797
Date d'inscription
dimanche 6 avril 2014
Statut
Membre
Dernière intervention
17 décembre 2024
2 316
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
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
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