Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171

    funzione in c

    salve.
    io devo scrivere un programma con una funzione che mi calcoli i quadrati dei numeri da 1 a 10.

    ho scritto questo codice pero la funzione trova solo il primo elemento dell'array, e mi porta il quadrato solo del primo.
    cosa ho sbagliato?
    grazie.

    #include <stdio.h>
    int quadrati(int []);

    main(){
    int a[]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int i;

    int b;

    b=quadrati(a);
    for(i=0; i<10; i++)

    printf("il quadrato di %d e %d\n", a[i], b);

    system("pause");

    }

    int quadrati(int a[]){
    int j=0;

    for(j=0; j<10; j++)

    return (a[j]* a[j]);


    }

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    perchè nella funzione fai un return, quindi nel for dopo il primo ciclo si ferma (il return chiude fa funzione)

    codice:
    void quadrati(int a[])
    {
    int j=0;
    
    for(j=0; j<10; j++)
        a[j] = a[j]* a[j];
    
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171
    ho provato a fare come dici tu pero il risultato e questo.

    il quadrato e 1
    il quadrato e 4
    il quadrato e 9

    invece io vorrei che il risultato fosse

    il quadrato di 1 e 1
    il quadrato di 2 e 4
    il quadrato di 3 e 9

    invece funziona solo il for della funzione e quello del main non funziona.

    b=quadrati(a);
    for(i=0; i<10; i++)

    printf("il quadrato di %d e %d\n", a[i], b);

    io faccio cosi pero il quadrato non lo stampa b ma lo stampa a[i];
    mentre secondo me a[i] dovrebbe stampare l'array non il suo quadrato.
    forse sbaglio a richiamare la funzione ??

  4. #4
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    perchè la funzione quadrati che ti ho scritto trasforna l'array in input in un array di quadrati

    tu invece vuoi che ti generi un'altro array con i quadrati del primo.. quindi devi usare i puntatori

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171
    questo e il testo dell'esercizio.

    scrivere una funzione quadrati() e usarla per stampare i quadrati dei numeri da 1 a 10:
    1 1
    2 4
    3 9
    4 16
    ...
    9 81
    10 100

    non si puo fare senza puntatori ?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171
    scusa siccome ancora non ho capito bene come si usano i puntatori mi potresti scrivere il codice con i puntatori.
    grazie.
    e scusa se chiedo molto.

  7. #7
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    tipo questo

    codice:
    #include <stdio.h>
    int quadrati(int []);
    
    main(){
    int a[]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int i;
    
    int* b;
    
    b=quadrati(a);
    for(i=0; i<10; i++)
    
    printf("il quadrato di %d e %d\n", a[i], b[i]);
    
    system("pause");
    
    }
    
    int* quadrati(int a[]){
    int j=0;
    int[] b = new int[10];
    
    for(j=0; j<10; j++)
        b[j] = a[j] * a[j];
    
    return b;
    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171
    provo a farlo girare ma mi dice che ce errore qui
    b=quadrati(a);

  9. #9
    Originariamente inviato da Stoicenko
    tipo questo
    Manca il delete [].
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171
    sto provando in tutti i modi ma non riesco a capire perche
    d = quadrati(a);
    mi da errore

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.