Array dinamico in C

di il
6 risposte

Array dinamico in C

Salve a tutti!
Sto cercando di scrivere un algoritmo che, dati in ingresso due valori, mi crei un array dinamico contenente i valori dell'intervallo (dato dai due valori in input).

Esempio: input 9 e 5, l'array sarà 5 6 7 8 9.

#include <stdio.h>
#include <stdlib.h>

int main()
{

	int *v; //Dichiarazione array dinamico
	int max, min, i; //Estremi dell'intervallo

	printf("Max: "); scanf("%d", &max);
	printf("Min: "); scanf("%d", &min);
	
	int d = (max - min) + 1; //dimensione intervallo (estremi compresi)
	printf("d vale %d\n", d);

	v = malloc(d*sizeof(int)); //allocazione dinamica array v

	
	for(i = min; i <= max; i++) //caricamento array dinamico
		v[i];
	
	printf("Intervallo caricato dinamicamente: \n");
	for(i = min; i <= max; i++) //stampa intervallo (estremi compresi)
		printf("v[%d] vale %d\n", i, v[i]);

	return 0;

}
Il problema è che, per esempio, con 9 e 5 mi stampa:
v[5] vale 0
v[6] vale 135137
v[7] vale 0
v[8] vale 0
v[9] vale 0
Mentre vorrei che stampasse:
v[5] vale 5
v[6] vale 6
v[7] vale 7
v[8] vale 8
v[9] vale 9

Credo che il problema sia nell'indice i, ma non so come risolvere.

Grazie per l'eventuale aiuto.

6 Risposte

  • Re: Array dinamico in C

    Quando carichi i valori scrivi semplicemente

    v;

    e quindi non carichi proprio nulla.

    Considerando che i deve partire da 0 e devi assegnare i, deve essere

    v[i-min] = i;

    Anche nella printf devi scrivere

    v[i-min]
  • Re: Array dinamico in C

    Ora funziona, grazie infinite!!
  • Re: Array dinamico in C

    Prego. Dato che avevi calcolato il numero di elementi in d, potevi anche scrivere
    
       for(i = 0; i < d; i++)
          v[i]=i+min;
       
       printf("Intervallo caricato dinamicamente: \n");
       for(i = 0; i < d; i++) 
          printf("v[%d] vale %d\n", i, v[i]);
    
    o anche usando una sola for
    
       printf("Intervallo caricato dinamicamente: \n");
       for(i = 0; i < d; i++)
       {
          v[i]=i+min;
          printf("v[%d] vale %d\n", i, v[i]);
       }
    
  • Re: Array dinamico in C

    Ok, grazie ancora.
    Ora che ci sono ti chiedo un'altra cosa: se il blocco di codice che ho postato, non fosse stato nel main ma fosse appartenuto ad una funzione e se avessi voluto passare i valori che ho inserito da tastiera come parametri utilizzando i puntatori, come avrei dovuto fare?
  • Re: Array dinamico in C

    Dipende da cosa avrebbe dovuto fare la funzione ...

    Comunque, per un'altra domanda apri un thread apposito ...
  • Re: Array dinamico in C

    Ok, grazie ancora!!
Devi accedere o registrarti per scrivere nel forum
6 risposte