Probleme de C
Résolu
StrikerX
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
marouendjerbien Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
marouendjerbien Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je dois faire un programme en C, je vous explique: on a un tableau de 10 cases ou on y entre des valeurs manuellement, les valeurs sont lues puis a la fin le programme doit dire si la suite de nombre est egale, croissante, decroissant ou differente.
voici des exemples:
1 1 1 1 1 1 1 1 1 1 = egaux
1 1 1 1 1 1 1 1 1 2 = croissants
1 2 3 4 5 6 7 8 9 10 = croissants
2 2 2 2 2 1 1 1 1 1 = decroissants
3 9 3 7 8 5 2 6 7 9 = differents
Et voici mon programme qui va pas comme il le devrait... pourriez vous m'aider svp???
je dois faire un programme en C, je vous explique: on a un tableau de 10 cases ou on y entre des valeurs manuellement, les valeurs sont lues puis a la fin le programme doit dire si la suite de nombre est egale, croissante, decroissant ou differente.
voici des exemples:
1 1 1 1 1 1 1 1 1 1 = egaux
1 1 1 1 1 1 1 1 1 2 = croissants
1 2 3 4 5 6 7 8 9 10 = croissants
2 2 2 2 2 1 1 1 1 1 = decroissants
3 9 3 7 8 5 2 6 7 9 = differents
Et voici mon programme qui va pas comme il le devrait... pourriez vous m'aider svp???
#include <stdio.h> void main () { int v[10],i,a,b,c; printf("Veuillez entrer des entiers\n"); for(i=0;i<10;i++) { printf("Entrer la valeur de la case %d: ",i+1); scanf("%d",&v[i]); } for(i=0;i<=9;i++) { if(v[i]==v[i+1]) { a++; } if(v[i]<v[i+1]) { b++; } if (v[i]>v[i+1]) { c++; } } if(a==9 && b==0 && c==0) { printf("Les nombres sont egaux"); } else { if(a>=0 && b!=0 && c==0) { printf("Les nombres sont croissants"); } else { if(a>=0 && b==0 && c!=0) { printf("Les nombres sont decroissats"); } else { if(a!=0 && b!=0 && c!=0) { printf("Les nombres sont differents\n"); } } } } }<code>Configuration: Windows Vista Internet Explorer 7.0</code>
17 réponses
Salut,
J'ai jeté un coup rapidement. Dis-moi si ceci marche.
Sinon, tu peux utiliser plutôt des switch, au lieu de if pour augmenter la lisibilité. Enfin, c'est pas ça qui fait que ça marche mieux ^^.
Cdlt
J'ai jeté un coup rapidement. Dis-moi si ceci marche.
Sinon, tu peux utiliser plutôt des switch, au lieu de if pour augmenter la lisibilité. Enfin, c'est pas ça qui fait que ça marche mieux ^^.
Cdlt
#include <stdio.h> int main (void) { int v[10],i,a,b,c; printf("Veuillez entrer des entiers\n"); for(i=0;i<10;i++) { printf("Entrer la valeur de la case %d: ",i+1); scanf("%d",&v[i]); } a=b=c=0; for(i=0;i<9;i++) { if(v[i]==v[i+1]) { a++; } if(v[i]<v[i+1]) { b++; } if (v[i]>v[i+1]) { c++; } } if(a==9 && b==0 && c==0) { printf("Les nombres sont egaux"); } else { if(a>=0 && b!=0 && c==0) { printf("Les nombres sont croissants"); } else { if(a>=0 && b==0 && c!=0) { printf("Les nombres sont decroissats"); } else { if(a!=0 && b!=0 && c!=0) { printf("Les nombres sont differents\n"); } } } } return 0; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai oublier.....
Et je vien de trouver une autre erreur pour le else final les != faut les mettre en >=
Et je vien de trouver une autre erreur pour le else final les != faut les mettre en >=
Bin quand dans le dernier else a et b et c =!=0 sa bugguais sa n'affichais rien
maintenant que j'ai modifier de != en sa >= sa va
il tourne bien la
maintenant que j'ai modifier de != en sa >= sa va
il tourne bien la
d'après ce que je vois, ... tu est trop restrictif sur tes tests,
tu coups tu ne rentre pas dans tes if car au moment ou tu incrémente a, b ou c tu va jusqu'a la case 11, de ton tableau soit une valeur que tu connais pas ... du coup sa peu soit incrementé a, b ou c
par exemple la suite 1,2,3,4,5,6,7,8,9,10
-> a=0, b=9 et c=1 et du coup tu ne peux entrer dans aucun "if"
je sais pas si j'ai été assez clair,
j'essaye de corriger ton programe
tu coups tu ne rentre pas dans tes if car au moment ou tu incrémente a, b ou c tu va jusqu'a la case 11, de ton tableau soit une valeur que tu connais pas ... du coup sa peu soit incrementé a, b ou c
par exemple la suite 1,2,3,4,5,6,7,8,9,10
-> a=0, b=9 et c=1 et du coup tu ne peux entrer dans aucun "if"
je sais pas si j'ai été assez clair,
j'essaye de corriger ton programe
Shinji7800
Je vien de tester la suite de nombre que tu as marquer 1 2 3 4 5 6 7 8 9 10
Le programme me dis qu'il est croissant
Je vien de tester la suite de nombre que tu as marquer 1 2 3 4 5 6 7 8 9 10
Le programme me dis qu'il est croissant
Re,
J'en ai profité pour épurer ton programme ;)
Cdlt
J'en ai profité pour épurer ton programme ;)
#include <stdio.h> #define MAX 10 int main (void) { int v[MAX],i,a,b,c; puts("Veuillez entrer des entiers"); for(i=0;i<MAX;i++) { printf("Entrer la valeur de la case %d: ",i+1); scanf("%d",&v[i]); } a=b=c=0; for(i=0;i<MAX-1;i++){ if(v[i]==v[i+1]) a++; else if(v[i]<v[i+1]) b++; else if (v[i]>v[i+1]) c++; } if(a==MAX-1 && b==0 && c==0) puts("Les nombres sont egaux"); else if(b && !c) puts("Les nombres sont croissants"); else if(!b && c) puts("Les nombres sont decroissants"); else puts("Les nombres sont differents"); return 0; }
Cdlt
#include <stdio.h> void main () { int v[10],i,a=0,b=0,c=0; printf("Veuillez entrer des entiers\n"); for(i=0;i<10;i++) { printf("Entrer la valeur de la case %d: ",i+1); scanf("%d",&v[i]); } for(i=0;i<9;i++) { if(v[i]==v[i+1]) a++; else if(v[i]<v[i+1]) b++; else if (v[i]>v[i+1]) c++; } printf("a=%d",a); printf("b=%d",b); printf("c=%d\n",c); if(a==9 && b==0 && c==0) printf("Les nombres sont egaux\n"); else if(a>=0 && b!=0 && c==0) printf("Les nombres sont croissants\n"); else if(a>=0 && b==0 && c!=0) printf("Les nombres sont decroissants\n"); else if(a>=0 && b>=0 && c>=0) printf("Les nombres sont differents\n"); system("pause"); }
j'arrive trop tard :D
pense a le mettre en resolu