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

    Memorizzare una matrice di array

    Ho una funzione che dovrebbe ritornare una matrice 4x4 fatta in questa maniera:

    double *funzione(.........)

    double *matr[4];

    for(int i=0; i<4; i++)
    {
    matr[i] = new double[4];
    }

    matr[0][0] = valore1;
    matr[0][1] = valore2;
    .................
    .................
    matr[3][3] = valore16;

    return *matr;

    Come faccio a memorizzare i valori ritornati da matr nel main? Nel main devo costuire un'altra matrice 4x4 o un vettore di 16 elementi? Come li memorizzo? Come li scorro?
    Grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Fossi in te, la matrice la allocherei cosi'

    codice:
    double **funzione()
    {
      double **matr;
    
      matr = new double*[4];
      for(int i=0; i<4; i++)
        matr[i] = new double[4];
    
        matr[0][0] = 1.0;
        matr[0][1] = 2.0;
        matr[0][2] = 3.0;
        matr[0][3] = 4.0;
    
        matr[1][0] = 1.1;
        matr[1][1] = 2.1;
        matr[1][2] = 3.1;
        matr[1][3] = 4.1;
    
        matr[2][0] = 1.2;
        matr[2][1] = 2.2;
        matr[2][2] = 3.2;
        matr[2][3] = 4.2;
    
        matr[3][0] = 1.3;
        matr[3][1] = 2.3;
        matr[3][2] = 3.3;
        matr[3][3] = 4.3;
    
        return matr;
    }
    e la puoi usare nel main cosi'

    codice:
    int main()
    {
      double **p = funzione();
    
      for(int i=0; i<4; i++)
        for(int j=0; j<4; j++)
          cout << p[i][j] << endl;
    
      return 0;
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ok, grazie per la risposta.
    Ti volevo chiedere un'altra cosa:

    quando sono nel main i dati ritornati li vorrei stampare in questa maniera:

    printf(" %f %f %f %f\n", p[0][0], p[0][1], p[0][2], p[0][3]);
    printf(" %f %f %f %f\n", p[1][0], p[1][1], p[1][2], p[1][3]);
    printf(" %f %f %f %f\n", p[2][0], p[2][1], p[2][2], p[2][3]);
    printf(" %f %f %f %f\n", p[3][0], p[3][1], p[3][2], p[3][3]);

    cioè come se fosse una matrice.
    Perchè alla seconda riga sballa tutto, dando dei numeri senza senso?
    E invece scrivendo così i dati uno dietro l'altro

    printf(" %f .......... %f\n", p[0][0], p[0][1],.........p[3][2], p[3][3]);

    non accade?

  4. #4
    se vuoi lavorare in c++ usa la libreria iostream e i manipolatori
    Codice PHP:
    #include <iostream>
    #include <iomanip>

    double **funzione()
    {
      
    double **matr;

      
    matr = new double*[4];
      for(
    int i=0i<4i++)
        
    matr[i] = new double[4];

        
    matr[0][0] = 1.0;
        
    matr[0][1] = 2.0;
        
    matr[0][2] = 3.0;
        
    matr[0][3] = 4.0;

        
    matr[1][0] = 1.1;
        
    matr[1][1] = 2.1;
        
    matr[1][2] = 3.1;
        
    matr[1][3] = 4.1;

        
    matr[2][0] = 1.2;
        
    matr[2][1] = 2.2;
        
    matr[2][2] = 3.2;
        
    matr[2][3] = 4.2;

        
    matr[3][0] = 1.3;
        
    matr[3][1] = 2.3;
        
    matr[3][2] = 3.3;
        
    matr[3][3] = 4.3;

        return 
    matr;
    }

    int main()
    {
      
    double **funzione();

      for(
    int i=0i<4i++) {
        for(
    int j=0j<4j++)
          
    std::cout << std::setw(10) << std::fixed << p[i][j] ;
        
    std::cout << std::endl;
      }

      return 
    0;


  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Perchè alla seconda riga sballa tutto, dando dei numeri senza senso?
    A parte il fatto che puoi seguire il consiglio di Sergio, non capisco ... veramente viene visualizzato correttamente

    1.000000 2.000000 3.000000 4.000000
    1.100000 2.100000 3.100000 4.100000
    1.200000 2.200000 3.200000 4.200000
    1.300000 2.300000 3.300000 4.300000

    Di quali "numeri senza senso" stai parlando?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Tutto ok.... Risolto!

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Originariamente inviato da Matthew82
    Tutto ok.... Risolto!
    Come?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.