[ANSI C] Select case e stampa a video di un array

di il
17 risposte

17 Risposte - Pagina 2

  • Re: [ANSI C] Select case e stampa a video di un array

    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);
    }
    
  • Re: [ANSI C] Select case e stampa a video di un array

    Questo è un piccolo video che dimostra l'errore. Quando compilo su windows non ho errori, quando compilo su linux mi escono gli indirizzi di memoria:

    windows: https://youtu.be/vjBBA-Bdgh
    linux: https://youtu.be/2pKFifOdBG
  • Re: [ANSI C] Select case e stampa a video di un array

    Non so se poi hai risolto, comunque nella printf metti &d al posto di d (il "&" si mette nella scanf), quindi ti stampa l'indirizzo della variabile anzichè il valore. Inoltre hai dichiarato vettore come double ma gli stai passando degli interi
Devi accedere o registrarti per scrivere nel forum
17 risposte