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..