Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    array e funzioni: somma di elementi

    Ciao a tutti, buona domenica innanzitutto!
    Devo fare un'esercizio (1° anno ingegneria informatica) su array e funzioni: in particolare mi chiede di "Si definisca una procedura ricorsiva void somme2(int l1[], int length) che, ricevuto in ingresso un array l1 di interi, stampi a video gli interi dell’array di ingresso il cui valore è uguale alla somma dei due interi seguenti nell’array (a tal fine, gli ultimi due numeri di un’array sono automaticamente esclusi)".
    Ora: con la ricorsiva non sono stato in grado di svolgere l'esercizio così ho cercato di farla in modo "normale"! Ma purtroppo compila male: stampa a video anche numeri "a caso"...
    Questo è il mio codice:

    codice:
    #include <stdio.h>
    #define N 10
    
    int let_scrit (int vet_1[], int dim_v)
    {
        int i=0, x;
        
        do{
            printf ("Inserire un valore: ");
            scanf ("%d", &x);
            if (x != 0){
                vet_1[i]=x;
                i++;}
        } while (x != 0 && i<dim_v);
        return i;
    }
    
    void somme2 (int l1[], int length){
        
        int i=0, j, k=0, v_3[length];
        
        let_scrit (l1, length);
        
        do{
            if (l1[i]== l1[i+1]+l1[i+2]){
                v_3[k]=l1[i];}
            i++;
            k++;
        } while (i<length-2);
        
        for (j=0; j<k; j++)
            printf ("%d \n", v_3[j]);
    }
    
    int main()
    {
        int v[N];
        somme2 (v, 10);
        return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma

    length

    conterrà sempre e comunque 10 e non il numero effettivo di valori inseriti, che tu restituisci con

    return i;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    forse ho capito ma non so come modificarlo...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non sai come prelevare un valore restituito da una funzione?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    dalla funzione somme2?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il return i è nella funzione

    int let_scrit (int vet_1[], int dim_v)

    che viene chiamata in somme2 con

    let_scrit (l1, length);

    In questo modo passi l1 e length ma non ottieni il valore che restituisci (l'hai scritto tu return i ... perché?)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    non ricordo sinceramente, ho usato la funzione di un esercizio vecchio... provo a riscrivere tutto il programma allora. grazie!

  8. #8
    sarò molto invornito ma proprio non ci riesco...

    codice:
    #include <stdio.h>
    #define N 10
    
    int somma (int v[], int length){
        int v_2[length], i=0, j=0, l;
        
        do{
            if (v[i]== v[i+1]+v[i+2])
                v_2[j]=v[i];
                        i++;
                        j++;
        } while (i<length-2);
        
        for (l=0; l<j; l++)
            printf ("%d ", v_2[l]);
        return 0;
    }
    
    
    int main()
    {
        int i=0, x, v[N];
        
        do{
            printf ("Inserire valore: ");
            scanf ("%d", &x);
            if (x != 0)
                v[i]=x;
            i++;
        } while (x != 0 && i<N);
        
        somma (v, i);
        return 0; 
    }

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma perché non hai corretto il codice iniziale?

    Bastava qualcosa come

    codice:
    void somme2 (int l1[], int length)
    {
        int i, els;
        
        els = let_scrit (l1, length);
        
        for (i=0; i<els-2; i++)
    		if (l1[i]== l1[i+1]+l1[i+2])
    			printf ("%d \n", l1[i]);
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    perchè quando compilo e dopo aver inserito i valori (4, 6, 4, 2, 1, 1, 3, 1, 0) dell'array mi da:

    0
    6
    1606463316
    2
    1606418432
    32767

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.