Probleme de C
Résolu
StrikerX
Messages postés
12
Statut
Membre
-
marouendjerbien Messages postés 35 Statut Membre -
marouendjerbien Messages postés 35 Statut Membre -
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
-
-
-
Je veux pas dire de betises , mais je crois que tes "else" sont en causes,
je fais quelques tests -
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#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 -
petite precision tu n'initialise pas les valeurs de a, b, c
-
J'ai oublier.....
Et je vien de trouver une autre erreur pour le else final les != faut les mettre en >= -
fiddy j'ai corriger dans le tien comme ce que tu avais corriger etait bon
-
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 -
-
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 -
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 -
Re,
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 -
Merci a vous 2 de bien avoir voulu me consacrer un peu de votre temps ;)
-
-
initialise d'abord a,b et c puis compile et essai encore.en fait si tu n'initialise pas les variables non globales elles ont des valeurs qui sont aléatoires,c'est peut etre à cause de cela.