Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [C] funzione con matrice

    ciao ragazzi volevo chiedervi una mano su questo esercizio:
    scrivere il codice di una funzione C che dati due vettori di double passati come argomento, restituisca una matrice in cui l'elemento generico di indici i,j ha un valore pari al prodotto dell'elemento i-esimo del primo vettore per l'elemento j-esimo del secondo vettore.
    Ecco il mio codice:
    codice:
    void quadratomat (double a[],double b[],double **mres,int righe,int colonne,int dim){
    int i,j,k;
    for(i=o;i<righe,i++){
    for (j=0;j<colonne;j++)
    mres [i][j]=0.0;
    for (k=0;k<dim;k++)
    mres [i][j]+=a[i][k]*b[k][j];
    }
    }
    mi hanno detto che è sbagliato.ma dov'è l'errore?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quando compili, non ti dice nulla di questa linea

    for(i=o;i<righe,i++){

    ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Originariamente inviato da oregon
    Quando compili, non ti dice nulla di questa linea

    for(i=o;i<righe,i++){

    ?
    si scusa ho scritto male.
    la riga corretta è:

    for(i=0;i<righe;i++){

    per il resto che ne dici?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Hai dichiarato a e b come array a 1 dimensione:
    double a[] double b[]

    dopo di che li usi come se avessero 2 dimensioni:
    a[i][k] b[k][j]

    che sia sbagliato credo che lo sai anche tu.

    Però dubito che imparerai mai il C se continui a postare codice che non hai mai compilato,
    scrivendo quello che ti salta in mente senza pensare a quello che stai facendo e perchè lo stai facendo.

  5. #5
    scusate ragazzi ma dalle vostre correzioni capisco quelli che sono i miei errori.
    ho riscritto il codice:
    codice:
    void quadratomat (double *a,double *b,double **mres,int righe,int colonne,int dim){ int i,j,k; 
    for(i=0;i<righe;i++){ 
    for (j=0;j<colonne;j++) 
    mres [i][j]=0.0; 
    for (k=0;k<dim;k++) 
    mres [i][j]+=a[i][k]*b[k][j]; 
    }
     }
    così potrebbe andare?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Ti ripeto NON compila neppure per via degli array
    dichiarati come a 1 dimensione e poi usati a 2 dimensioni:

    questa riga (mres [i][j]+=a[i][k]*b[k][j]) ti dà quindi questi errori di compilazione:

    b.c:6:18: error: subscripted value is neither array nor pointer nor vector
    b.c:6:26: error: subscripted value is neither array nor pointer nor vector

  7. #7
    Originariamente inviato da c0der
    Ti ripeto NON compila neppure per via degli array
    dichiarati come a 1 dimensione e poi usati a 2 dimensioni:

    questa riga (mres [i][j]+=a[i][k]*b[k][j]) ti dà quindi questi errori di compilazione:

    b.c:6:18: error: subscripted value is neither array nor pointer nor vector
    b.c:6:26: error: subscripted value is neither array nor pointer nor vector
    dice cioè che mres non è ne un array ne un puntatore.
    ma io l'ho dichiarato come segue:
    double **mres
    quindi non capisco perchè dia errore

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Un puntatore doppio è un puntatore doppio, non è un array a due dimensioni.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Te lo ridico ancora una volta non te la prendere.
    Non compila (poi non so se funziona, non voglio neanche guardarlo ora)
    per via di "a" e "b", non di mres. Mi riquoto:

    Hai dichiarato a e b come array a 1 dimensione:
    double a[] double b[] (o double *a,double *b, stessa cosa)

    dopo di che li usi come se avessero 2 dimensioni:
    a[i][k] b[k][j]

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.