Salve a tutti, vi ringrazio ancora una volta per le risposte date ! Ho tardato nella risposta a causa di problemi personali in famiglia, e sopratutto perchè ho tentato di risolvere l'inghippo da solo!
enricoscarsissimo ha scritto:
Te l'ho un po' sistemato e funziona, fammi sapere
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i, d; //dichiaro tutto a inizio main
int * vettore = NULL;
char c = '1';
switch(c) //ho gia posto c = '1', negli altri casi non fa nulla
{
case'1':
//int d; //qui dichiaravi le variabili nel corpo della switch
// int *vettore;
// int i // tra l'altro chiamavi due variabili con lo stesso nome all'interno della stessa funzione,
printf("dammi la dimensione del vettore: "); // cosa che non puoi fare
scanf("%d",&d);
vettore = (int *)malloc(sizeof(int) * d); //allochi spazio in memoria, in particolare ora hai un vettore di d elementi
for(i=0; i<d; i++){
printf("dammi i valori da salvarci dentro\n");
scanf("%d",&vettore[i]); //inializzi il vettore coi valori che vuoi
}
printf("i valori salvati nel vettore sono:\n");
for (i=0; i<d; i++) /* stampo array a video */
printf(" %d\n",vettore[i]);
break;
default:
break;
}
free(vettore);
}
TI ringrazio enrico! Il progetto funzionava su Debian, ma quando ho tentato la compilazione tramite LinuxMint, mi sono accorto che restituisce gli indirizzi di memoria e non i valori contenuti nel vettore! Ho tentato di aggiustare il codice da me, ma non sono realmente riuscito a concludere molto , magari ho sbagliato qualcosa mentre lo adattavo alle mie esigenze?
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i, d; /*dichiaro tutto a inizio main*/
double * vettore = NULL;
char c = '1';
printf("\nSeleziona una delle seguenti funzioni:\n1)Restituzione di un insieme di numeri reali inseriti da tastiera\n2)Stampa a video un insieme di numeri reali\n3)Determina ricorsivamente se un numero appartiene all'insieme\n4)Determina ricorsivamente se il primo insieme è contenuto nel secondo\n5)Esegue l'unione di due insiemi\nInserisci il numero della funzione desiderata:");
i = getchar (); /*prendiamo in input la selezione */
switch(c)
{
case '1':
printf("dammi la dimensione del vettore: "); /* cosa che non puoi fare*/
scanf("%d",&d);
vettore = (int *)malloc(sizeof(int) * d); /*allochi spazio in memoria, in particolare ora hai un vettore di d elementi*/
printf("il valore della var d attualmente e': %d\n", &d); /*print di controllo in fase debug */
for(i=0;
i<d;
i++)
{
printf("dammi i valori da salvarci dentro\n");
scanf("%d",&vettore[i]); /*inializzi il vettore coi valori che vuoi*/
}
printf("i valori salvati nel vettore sono:\n");
for (i=0;
i<d;
i++) /* stampo array a video */
printf(" %d\n",vettore[i]);
break;
default:
break;
}
free(vettore);
return(0);
}