Aiuto con una funzione che restituisce un puntatore...

di il
4 risposte

Aiuto con una funzione che restituisce un puntatore...

Salve a tutti, ho un problema con questo piccolo programma:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define True 1
#define False 0
int main()
{
	srand((unsigned) time(NULL));
	int lung,i,num;
	int *ptrTrova;
	printf("Digitare quanto grande deve essere il vettore.\n");
	lung=interi(True);
	int *vet=(int*) malloc(lung * sizeof(int));
	if(vet==NULL)
		printf("Il vettore non è stato allocato corretamente.\n");
	else
	{
		printf("Il vettore sarà riempito con dei numeri interi casuali tra 1 e 1000...\n");
		for(i=0;i<lung;i++)
			*(vet+i)=rand()%10001;
		printf("Vettore riempito corettamente.\n\n");
		do
		{
			printf("Ricerca di un elemento nel vettore.\n");
			printf("Numero intero da ricercare?\n");
			num=interi();
			ptrTrova=cerca(vet,lung,num);
		        /*
                           Altri codice da implementare
                        */
		}while(!(getchar()=='\n'));
	}
	return 0;
}


int interi(int positivo)//Funzione che controlla l'input inserito dall'utente
{
	unsigned int num;//Numero che se restitutirà se la convalida è andata a buon fine
	char str1[50];//Array di caratteri che servono per convalidare la stringa inserita dall'utente
	int Errore=False;//Variabile intera che servirà a controllare l'input inserito dall'utente
	int i=0;//contatore utile per efettuare un for
	do
	{
		Errore=False;//Instanzio la variabile Errore come false, cosi facendo permetto al programma di ricontrollare una seconda stringa inserita dall'utente
		printf("Digita un numero intero:\n");
		scanf("%s",&str1);
		if(str1[0]=='-')
			i=1;
		for(i;i<strlen(str1)&&Errore==False;i++)//Ciclo for in cui si controllerà carattere per carattere l'intero array
		{
			if(!(isdigit(str1[i])))//Se l'eventuale carattere non è un numero
				Errore=True;			
		}
		if(positivo==True)
		{
			if( Errore==True || (atoi(str1))<=0)//Essendoci degli errori si procede al messaggio di avviso.
				{
					Errore=True;
					printf("Attenzione, inserire un valore intero positivo.");
				}
		}
		else
		{
			if( Errore==True)//Essendoci degli errori si procede al messaggio di avviso.
				{
					Errore=True;
					printf("Attenzione, inserire un valore intero positivo.");
				}
		}
	}while(Errore==True);//finchè ci sia un'errore nella convalida rrimarrà dentro il ciclo
	return num=atoi(str1);//Si ritorna il numero già convalidato e trasformato in int
}

int *cerca(int vettore[], int dimensione, int elem)
{
	*ptr=(int*) malloc((dimensione+2) * sizeof(int));
	int i,b=2;
	for(i=0;i<dimensione;i++)
	{
		if(elem==*(vettore+i))
		{
			*ptr=1;
			*(ptr+b)=i;
			b++;
		}
	}
	*(ptr+1)=b-2;
	if(!(*ptr==1))
		*ptr=-1;
	return ptr;
}
Quando provo a eseguire questo programma(Con devC++), non funziona... ovvero l'errore a cui fa riderimento il compilatore è la funzione "cerca". Dovrei postare una immagine?
Chiedo gentilmente se potete dare un'occhiata alla funzione "cerca" e al richiamo della funzione stessa dentro la main()... e dirmi se esiste errore alcuno..

4 Risposte

Devi accedere o registrarti per scrivere nel forum
4 risposte