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   -
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???


#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

shinji7800 Messages postés 297 Date d'inscription   Statut Membre Dernière intervention   47
 
Bonjour,

laisse moi 5 min je jette un oeil :)
0
StrikerX Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Merci
0
shinji7800 Messages postés 297 Date d'inscription   Statut Membre Dernière intervention   47
 
Je veux pas dire de betises , mais je crois que tes "else" sont en causes,

je fais quelques tests
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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;
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
shinji7800 Messages postés 297 Date d'inscription   Statut Membre Dernière intervention   47
 
petite precision tu n'initialise pas les valeurs de a, b, c
0
StrikerX Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai oublier.....

Et je vien de trouver une autre erreur pour le else final les != faut les mettre en >=
0
sennin Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   35
 
Peut être un cas où B n'est jamais incrémenté? du coup il ne rentre pas dans la 3eme condition...
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
T'as testé le code que je t'ai donné plus haut ?
Cdlt
0
StrikerX Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
fiddy j'ai corriger dans le tien comme ce que tu avais corriger etait bon
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ce que je veux dire, c'est que sur ma machine ça marche.
Donc, qu'est-ce qui ne va pas dans le code au final ?
0
StrikerX Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
StrikerX Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
en tout cas MERCI BEAUCOUP de votre aide^^
0
shinji7800 Messages postés 297 Date d'inscription   Statut Membre Dernière intervention   47
 
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
0
StrikerX Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
shinji7800 Messages postés 297 Date d'inscription   Statut Membre Dernière intervention   47
 
en faite je parlais de ton programme initial :)
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
0
StrikerX Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
merci beaucoup
0
shinji7800 Messages postés 297 Date d'inscription   Statut Membre Dernière intervention   47
 
#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
0
StrikerX Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Merci a vous 2 de bien avoir voulu me consacrer un peu de votre temps ;)
0
marouendjerbien Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour,
ton programme est-il résolu ??
0
tapsaid Messages postés 60 Date d'inscription   Statut Membre Dernière intervention   1
 
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.
0
marouendjerbien Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   1
 
je veux juste savoir si ça donne du résultats correctes ;
si ça marche c'est bien, sinon je vais essayer de faire un programme .
0