Pobleme sur programme [débutant]

kent87042 -  
 kent87042 -
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. adns Messages postés 1152 Statut Membre 153
     
    bonjour

    si tu ne veux pas de nombre negatif

    if ( nb < 0)
    nb = -nb;

    Adns
    0
  2. xav3601 Messages postés 3390 Statut Membre 312
     
    Concretement je n'arrive pas a voir ou tu initialise ta varible cible :-/
    0
  3. kent87042
     
    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
  4. xav3601 Messages postés 3390 Statut Membre 312
     
    Ok a quel endroit ca plante dans ton programme?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. kent87042
     
    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
  7. xav3601 Messages postés 3390 Statut Membre 312
     
    oui mais a quel endroit précisement???
    quelle ligne quoi?
    0
  8. kent87042
     
    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
  9. xav3601 Messages postés 3390 Statut Membre 312
     
    Le debbugeur est ton ami...
    il te dira a quelle ligne il plante et pk!
    0
  10. kent87042
     
    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
  11. xav3601 Messages postés 3390 Statut Membre 312
     
    test=scanf("%d",pa);

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