Array multidimensionale sullo heap

di il
1 risposte

Array multidimensionale sullo heap

Ciao a tutti,
ho il seguente problema: voglio creare una classe che si occupi di generare un array bidimensionale (che ho chiamato A).
il mio problema e' che la dimensione dell'array (nodi) la vorrei inserire io con un "cin" e non so come fare dato che se creo un array non specificandone la dimensione il compiler mi da errore. Sono alle prime armi e per ora ho raggirato l'ostacolo inserendo tutto nella funzione main ma la cosa è ingestibile...

#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>

using namespace std;

int main()
{   
    
    srand(time(0)); 
       
    int nodi;    
    cout << "Selezionare il numero di nodi desiderato: ";
    cin >> nodi;
    
    int commodity;
    cout << "\nSelezionare il numero di commodity desiderato: ";
    cin >> commodity;
 
    // matrice di ADIACENZA (random)
         
    int i;
    int j;
    double num;  
    double rnd;
      
    int A[nodi][nodi];          
     
     for (i=0; i<nodi; i++)
     {                    
        for (j=0; j<nodi; j++)
        {
          if (i==j)
              A[i][j] = 0;
        
          else
          { 
             num = 1 + rand()%RAND_MAX;
             rnd = num/ RAND_MAX;
                                                                                     
              if (rnd > 0.4)
                 A[i][j] = 1;                                       
              else 
                 A[i][j] = 0;                                                                  
          }
        }  
     }
     
   // genera sorgenti e pozzi
    
   int k;
   int Sorgente[commodity];
   int Pozzo[commodity];
   int Domanda[commodity];
   
   for (k=0; k < commodity; k++)
   {       
       do
       {     
           Sorgente[-1]=-1;
           Pozzo[-1]=-1;             
                
           Sorgente[k] = rand() % nodi;
       
           Pozzo[k] = rand() % nodi;
           
           Domanda[k] = (10+rand()% nodi);
           
       }while(Sorgente[k] == Pozzo[k] || Sorgente[k-1] == Pozzo[k]||Pozzo[k-1]== Sorgente[k]);                
    }
    
    /*Assicurati che esista almeno un cammino (un arco) tra sorgente e 
      pozzo per la stessa commodity*/
      
    for (k=0; k<commodity; k++)
    {
        j=Sorgente[k];
        for (i=0; i<nodi; i++)
        {
            if(A[i][j]==1)
               A[i][j]=0;
        }
        
        i=Pozzo[k];
        for (j=0; j<nodi; j++)
        {
            if(A[i][j]==1)
               A[i][j]=0;
        }
    }  
          
    for (k=0; k<commodity; k++)
    {        
        i=Sorgente[k];
        j=Pozzo[k];
        
            if(A[i][j]==0)          
               A[i][j]=1;
    }
    
    /* Assegno un nome ad ogni arco modificando la matrice di adiacenza */   
    
    int nome_arco = 1;
    for (i=0; i<nodi; i++)
    {                    
        for (j=0; j<nodi; j++)
        {
            if(A[i][j] ==1)
            {
                       A[i][j] = nome_arco;
                        nome_arco++;
            }
        }
    }
    
    
    
  

    system("PAUSE");    
    return EXIT_SUCCESS;
}


1 Risposte

  • Re: Array multidimensionale sullo heap

    Semplice devi utilizzare l'allocazione dinamica. Qui hai una classe da prendere come esempio.

    Altra fonte:

    Guarda sezione: Array Multidimensionali - Matrici
Devi accedere o registrarti per scrivere nel forum
1 risposte