Lettura di un vettore da tastiera

di il
4 risposte

Lettura di un vettore da tastiera

Salve, mi chiamo Christian e sono uno studente al primo anno di informatica. Mi servirebbe aiuto con un esercizio la cui traccia è: Leggere da tastiera un vettore di n interi(considerare il vettore a 1 dimensione allocato dinamicamente). Trovare il valore minimo e il valore massimo del vettore. Stampare a video i valori trovati. In particolare mi servirebbe aiuto sulla lettura di un vettore da tastiera. Di seguito vi posto il mio codice:
#include <stdio.h>
#include <stdlib.h>

int val_min(int n, int v[n]);
int val_max(int n, int v[n]);

int main(void) {
	int n;
	int v[n];
	int i=0;
	while(i<n){
		scanf("%d", &v[n]);
		i++;
	}
	val_min(n, v);
	val_max(n, v);
	system("pause");
	return 0;
}

int val_min(int n, int v[n]) {
	int min=v[0];
	int i=0;
	while(i<n){
		if(min > v[i]){
			min=v[i];
		}
		i++;
	}
	printf("Valore minimo: %d", min);
	return 0;
}

int val_max(int n, int v[n]){
	int max=v[0];
	int i=0;
	while(i<n){
		if(max<v[i]){
			max=v[i];
		}
		i++;
	}
	printf("Valore massimo: %d", max);
	return 0;
}
Non sono sicuro della lettura del vettore. Il resto dovrebbe essere corretto.

4 Risposte

  • Re: Lettura di un vettore da tastiera

    Innanzitutto dichiari la variabile "n" senza assegnarle un valore, cosi essa contiene un valore spazzatura (casuale) e la successiva dichiarazione del vettore andrà ad occupare chissà quanto spazio.
    Dopodiché dimentica immediatamente che "int v[n]" sia il modo corretto di dichiarare un vettore dinamico e inizia a dare un'occhiata alle funzioni corrette: malloc, calloc, realloc e free. Nel tuo caso la prima e l'ultima dovrebbero essere sufficienti.
  • Re: Lettura di un vettore da tastiera

    Quindi dovrei dichiarare il vettore usando malloc e quindi allocandogli spazio dinamicamente?
  • Re: Lettura di un vettore da tastiera

    Si, l'utente deciderà la grandezza del vettore. Ovvero deciderà il valore di "n".
  • Re: Lettura di un vettore da tastiera

    Ho capito. Grazie mille della risposta. Andrò a vedermi le funzioni che mi hai detto
Devi accedere o registrarti per scrivere nel forum
4 risposte