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
    1. Concretement je n'arrive pas a voir ou tu initialise ta varible cible :-/
      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. 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. 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 debbugeur est ton ami...
              il te dira a quelle ligne il plante et pk!
              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. test=scanf("%d",pa);

                  apparement t'as oublier une * la.... je sais pas peut etre c ca ^^