Aiuto con una funzione che restituisce un puntatore...

di
Anonimizzato15574
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

  • Re: Aiuto con una funzione che restituisce un puntatore...

    Hai letto il regolamento prima di postare?
    Che titolo è?
    Il codice non è inserito tra tag CODE ...
    Non hai detto nulla dell'errore ...
  • Re: Aiuto con una funzione che restituisce un puntatore...

    Si scusa,, Ho provato a leggere il regolamento purtroppo mi ridireziona ad un sito in cui mi si visualizza un messaggio con la scritta "L’argomento richiesto non esiste." Ho modificato il messaggio per farmi capire meglio... spero e ci sia riuscito
  • Re: Aiuto con una funzione che restituisce un puntatore...

    Il primo errore è quando fai la scanf del char. Come argomento devi usare il nome dell'array e non l'indirizzo di memoria del nome dell'array, in quanto il nome è GIA un indirizzo di memoria (in particolare del primo elemento).

    Poi ptr dove l'hai dichiarato?

    Comunque anche te sei all'Università di Cesena?
  • Re: Aiuto con una funzione che restituisce un puntatore...

    senor93 ha scritto:


    Si scusa,, Ho provato a leggere il regolamento purtroppo mi ridireziona ad un sito in cui mi si visualizza un messaggio con la scritta "L’argomento richiesto non esiste." Ho modificato il messaggio per farmi capire meglio... spero e ci sia riuscito
    Parli di questo ?

    https://www.iprogrammatori.it/forum-programmazione/regolamento.php

    Se è come dici, hai qualche problema nel tuo PC ...
Devi accedere o registrarti per scrivere nel forum
4 risposte