Una function nella function

di il
6 risposte

Una function nella function

Salve, volevo chiedere una info perchè non sono molto pratico col lunguaggio C++.
Supponiamo di avere una function che calcoli il prodotto scalare tra due vettori e supponiamo che essa sia chiamata in questo modo
prodscal (float x[], float y[], float c, int n)
che chiamo in un eventuale main.
Quello che io voglio però sapere è: dal momento che il prodotto matrice vettore di rifà ad un prodotto scalare, come posso inserire la function prodscal nel main per tale scopo?
Ad esempio in un ciclo for del tipo
for(i=0;i<n;i++)
for(j=0;j<n;j++)
c[i]=c[i]+prodscal(A[i][j], x[j]);
So di aver scritto una baggianata, ma vorrei un tipo di scrittura simile per richiamare la prodscal nel main per calcolo prodotto matrice vettore.
Grazie

6 Risposte

  • Re: Una function nella function

    Non ho capito molto ma se vuoi chiamare una funzione all'interno di un'altra lo puoi fare ...

    Spiegati meglio ...
  • Re: Una function nella function

    Ad esempio consideriamo algoritmo del prodotto matrice vettore, nel codice come faccio a scrivere il prodotto riga per colonna attraverso una function prodscal tra la riga iesima e il vettore dato ?
  • Re: Una function nella function

    Non sai scrivere il codice di quella funzione ? Ma cosa c'entra la questione del titolo del thread (funzione in una funzione)?
  • Re: Una function nella function

    Non so se ho capito bene quello che intendi.
    Forse tu vuoi scrivere una funzionne per calcolare il prodotto di una matrice per un vettore e vuoi riutilizzare la funzione prodscal che fa il prodotto scalare tra due vettori.
    Se è così, puoi scrivere la funzione chiamando sulla riga i-esima la tua funzione, costruirai il vettore che conterrà il prodotto cercato.

    Un prototipo della funzione potrebbe essere:

    int * prodmxv(int **m, int *v, int r, int c);

    P.s.
    La tua funzione dovrebbe ritornare un int, per poterla utilizzare in questo caso specifico.
  • Re: Una function nella function

    SVNiko ha scritto:


    Non so se ho capito bene quello che intendi.
    Forse tu vuoi scrivere una funzionne per calcolare il prodotto di una matrice per un vettore e vuoi riutilizzare la funzione prodscal che fa il prodotto scalare tra due vettori.
    Esattamente!

    SVNiko ha scritto:


    Se è così, puoi scrivere la funzione chiamando sulla riga i-esima la tua funzione, costruirai il vettore che conterrà il prodotto cercato.

    Un prototipo della funzione potrebbe essere:

    int * prodmxv(int **m, int *v, int r, int c);
    Ok, però come esprimo che il posto iesimo del vettore risultato è dato dal prodotto scalare tra la riga iesima e il vettore v?
  • Re: Una function nella function

    Ma non è difficile, provo a scriverti al volo una porzione di codice.

    /* I parametri sono:
    m la matrice su cui cicli riga per riga
    v il vettore per il prodotto
    r numero righe
    c numero colonne

    La funzione ritorna il puntatore al vettore desiderato
    */

    int * prodmxv(int **m, int *v, int r, int c){
    int i;
    /* Dovresti allocare qui il vet_ritorno */
    for(i=0; i<c; i++){
    vet_ritorno = prodscal (m, v, r, c);
    }
    return vet_ritorno;
    }

    Non l'ho provato ma dovrebbe funzionare.

    P.s. Perdonami ma non riesco ad indentare, se sai come si fa dimmelo che lo faccio
Devi accedere o registrarti per scrivere nel forum
6 risposte