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");
	}


}
A voir également:

11 réponses

adns Messages postés 1152 Statut Membre 153
 
bonjour

si tu ne veux pas de nombre negatif

if ( nb < 0)
nb = -nb;

Adns
0
xav3601 Messages postés 3390 Statut Membre 311
 
Concretement je n'arrive pas a voir ou tu initialise ta varible cible :-/
0
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
xav3601 Messages postés 3390 Statut Membre 311
 
Ok a quel endroit ca plante dans ton programme?
0

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

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

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