C, trovare minimo array con ricorsione

di il
6 risposte

C, trovare minimo array con ricorsione

Dato un file di testo, devo memorizzarne i valori interi, in un vettore di dimensione opportuna. Poi di questo array devo trovarne il minimo attraverso una funzione ricorsiva.

Non mi da errori in compilazione, ma non funziona correttamente
#include <stdio.h>
#include <stdlib.h>

int* leggi_array(const char* nomefile, int* n);

int minimo(int* array, int size);

int minimoDiRic(int vett[], int size, int minimo, int i);


int main()
{
    char* nomefile = "file1.txt";
    int size = 0;
    
    int* v = leggi_array(nomefile, &size);
    
    printf("v = ");
    int i;
    for(i = 0; i < size; i++)
	printf("[%d]", v[i]);
    printf("\n");
    
    minimo(v, size);
    
}

int* leggi_array(const char* nomefile, int* n)
{
	FILE *f  = fopen(nomefile,"r");
	if(f == NULL)
	{
		printf("Errore apertura file\n");
		exit(1);
	}
	int *v, el, i = 0;

	while(fscanf(f, "%d", &el) != EOF)
		(*n)++;
	fseek(f, 0, 0);
	v = (int*) malloc ((*n) * sizeof(int));
	while(fscanf(f, "%d", &el) != EOF)
	{
		v[i] = el;
		i++;
	}
		
	printf("*n = %d\n", (*n));
	return v;
}


int minimo(int* array, int size)
{
	int i = 0, mini = array[i], res;
	printf("minimo: %d\n", minimoDiRic(array, size, mini, i));
	
}

int minimoDiRic(int vett[], int size, int minimo, int i)
{
	if(i+1 == size)
		return minimo;
	if(vett[i] < minimo)
		minimo = vett[i];
	minimoDiRic(vett, size, minimo, ++i);
}

6 Risposte

Devi accedere o registrarti per scrivere nel forum
6 risposte