Pobleme sur programme [débutant]

Bonjour,
j'ai un soucis lorsque j'entre une cible négative mon programme plante te je ne sait comment y remédier...
voici le code tester le ...

#include<stdio.h>
#define MAX 100
#include<windows.h>

void main()
{
	int vec[MAX+1],i,nbel=-1,test,temp,j,cible,present,position,*pa;

	//blindage de saisie
	
	printf("\t\t\tDossier numero 1\n\n\n");
	while(nbel<=0 || nbel>MAX)
	{
	
	printf("Saisir le nombre de cases dans le vecteur > ");
	fflush(stdin);
	scanf("%d",&nbel);
	}

	printf("\n");
	
	i=0;
	pa=&vec[0];

	while(i<nbel)
	{

		test=0;
		while(test==0)
		{
			printf("Saisir une valeur dans la case %d> " ,i+1);
			fflush(stdin);
			test=scanf("%d",pa);
			pa++;
		}	
		
		i++;

		
	}
	printf("\n\n");
	printf("\t\t  Vecteur non trie:\n");
	printf("\t\t  ------------------\n");
	printf("\n");

	i=0;
	pa=&vec[0];

	while(i<nbel)
	{
		printf("\t[%d]",*pa);
		pa++;
		i++;
	}
	printf("\n\n");

	//Triage par extraction

	i=0;
	pa=&vec[0];


	while(i<nbel)
	{	
	
		j=i+1;
		pa=&vec[0];
		while(j<nbel)
		{	
			
			if(*(pa+1) < *pa)
			{
				
				temp=*pa;
				*pa=*(pa+1);
				*(pa+1)=temp;
			}
			j++;
			pa++;
		}
		i++;
		pa++;
	}

	//Affichage vecteur trié

	printf("\n");
	printf("\t\t   Vecteur trie:\n");
	printf("\t\t   -------------\n");
	printf("\n");

	i=0;
	pa=&vec[0];
	while(i<nbel)
	{
		printf("\t[%d]",*pa);
		i++;
		pa++;
	}
	printf("\n\n");


	//Cible, recherche par methode de la sentinelle

	test=0;
	while(test==0)
	{
		printf("\n\nSaisissez une cible a rechercher > ");
		fflush(stdin);
		test=scanf("%d",&cible);
	}
	
	i=0;
	pa=&vec[0];
	while(*pa != cible)
	{
		i++;
		pa++;
	}

	if(i<=nbel)
	{
		present=1;
		position=i;
	}
	else
	{
		present=0;
	}

	if(present==1)
	{
		printf("\n> La cible existe dans la case %d\n\n",i+1);
	}
	
	if(present==0)
	{
		printf("\n> La cible n'existe pas !\n\n");
	}


}
Configuration: Windows XP
Firefox 3.0.4

11 réponses

  1. bonjour

    si tu ne veux pas de nombre negatif

    if ( nb < 0)
    nb = -nb;

    Adns
    0
    1. Concretement je n'arrive pas a voir ou tu initialise ta varible cible :-/
      0
      1. Non en fait j'aimerai que quant je dit que la cible est un chiffre négatif ben qu'il m'affiche si la cible existe ou pas !
        Pour répondre a xav la cible c'est l'utilisateur qui la rentre
        0
        1. Ok a quel endroit ca plante dans ton programme?
          0
          1. Le programme tourne bien partout sauf quand l'utilisateur rentre une valeur négative dans la cible

            test=0;
            	while(test==0)
            	{
            		printf("\n\nSaisissez une cible a rechercher > ");
            		fflush(stdin);
            		test=scanf("%d",&cible);
            	}
            


            Si on rentre une valeur positive ça marche si non le prog plante
            0
            1. oui mais a quel endroit précisement???
              quelle ligne quoi?
              0
              1. J'en sais rien moi y plante quoi ! en me disant ceci

                "LC11.exe a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru."
                0
                1. Le debbugeur est ton ami...
                  il te dira a quelle ligne il plante et pk!
                  0
                  1. Effectivement !

                    il plante au while

                    i=0;
                    	pa=&vec[0];
                    	while(*pa != cible)
                    	{
                    		i++;
                    		pa++;
                    	}


                    pa= CXX0030: Error: expression cannot be evaluated
                    &vec[0]= &vec[0] 0x0012fdec

                    Mais tjs pas trouvé la solution
                    0
                    1. test=scanf("%d",pa);

                      apparement t'as oublier une * la.... je sais pas peut etre c ca ^^
                      0
                      1. Non non si je fait ça il foire tt au debut !
                        0