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. test=scanf("%d",pa);

    apparement t'as oublier une * la.... je sais pas peut etre c ca ^^
    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
      1. Le debbugeur est ton ami...
        il te dira a quelle ligne il plante et pk!
        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."
          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
            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
              1. Concretement je n'arrive pas a voir ou tu initialise ta varible cible :-/