Stampa di una matrice e qualche valore non ha senso!!

di il
1 risposte

Stampa di una matrice e qualche valore non ha senso!!

Salve a tutti.

Alla riga di comando 265 stampo una matrice.
Ahimè qualche valore esce sballato e non ne so il motivo.
Come mai?
I valori sono quelli generati alla riga 221.
#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ofstream f("C:\Domande programma tesi.txt",ios::out);
    int clienti;
    int istanti_di_tempo;
    int rack;
    int slot;
    int domanda_tot_sistema;
    int domanda_cliente;
    int i;
    int p;
    int t;
    int totale;
    int tipo_di_rack;
    int tipo_di_slot;
    int tipo_di_clienti;
    int tipo_di_domanda;
    int domanda_min;
    int domanda_max;
    int clienti_max;
    int clienti_min;
    int new_domanda_max;
    int new_domanda_min;
    int new_domanda_tot_sistema;
    int new_slot;
    int array_rack[clienti];
    srand((unsigned)time(NULL));
    cout<<"Quanti istanti di tempo vuoi considerare? ";
    cin>>istanti_di_tempo;
    cout<<endl;
    cout<<endl;
    cout<<"SCELTA DEL TIPO DI ISTANZA";
    cout<<endl;
    cout<<endl;
    cout<<"IL TIPO DI RACK E' BASSO (1) O ALTO (2)?  ";
    cin>>tipo_di_rack;
    cout<<endl;
    cout<<endl;
    cout<<"IL TIPO DI SLOT E' BASSO (1) O ALTO (2)?  ";
    cin>>tipo_di_slot;
    cout<<endl;
    cout<<endl;
    cout<<"IL TIPO DI CLIENTI E' BASSO (1) O ALTO (2)?  ";
    cin>>tipo_di_clienti;
    cout<<endl;
    cout<<endl;
    cout<<"IL TIPO DI DOMANDA E' UNIFORME (1) O HA ALTA VARIANZA (2)?  ";
    cin>>tipo_di_domanda;
    cout<<endl;
    cout<<endl;
        if (tipo_di_rack==1)
         {
           rack = rand() % (6) + 5;
         }
        else 
         {
          rack = rand() % (11) + 5;
         }
    cout<<"Numero di rack = "<<rack<<endl;
    cout<<endl;
    f<<"Numero di rack = "<<rack<<endl;
    f<<endl;
    
        if (tipo_di_slot==1)
        {
         slot = rand ()%(6)+5;  
        }
        else 
        {
        slot = rand ()%(11)+20;
        }
    cout<<"Numero di slot per rack = "<<slot<<endl;
    cout<<endl;
    f<<"Numero di slot per rack = "<<slot<<endl;
    f<<endl;
   
        if (tipo_di_domanda==1)
        {
         domanda_min=slot/3; 
         domanda_max=slot/3+1;
        }
        else 
        {
         domanda_min=1; 
         domanda_max=slot;
        }
    clienti_max=domanda_tot_sistema/domanda_min;
    clienti_min=domanda_tot_sistema/domanda_max;
        if (tipo_di_clienti==1)
        {
         clienti= rand()%((clienti_max-clienti_min)/3+1)+clienti_min;  
        }
        else 
        {
        clienti= rand()%(clienti_max-clienti_min/3+1)+clienti_max-(clienti_max-clienti_min)/3;  
        }  
    cout<<"Numero di clienti = "<<clienti<<endl;
    cout<<endl;

    f<<"Numero di clienti = "<<clienti<<endl;
    f<<endl;
    int array_domanda[clienti];
    domanda_tot_sistema=slot*rack;
    cout<<"CAPACITA' SISTEMA = "<<domanda_tot_sistema<<endl;
    cout<<endl;
    cout<<endl;
    cout<<endl;
    cout<<endl;
    f<<"CAPACITA' SISTEMA = "<<domanda_tot_sistema<<endl;
    f<<endl;
    f<<endl;
    f<<endl;
    f<<endl;
     
     
     for (t=1;t<=istanti_di_tempo;t++)
       {
        cout<<"Istante di tempo "<<t<<endl; 
        cout<<endl;
        cout<<endl;
        cout<<endl;
        f<<"Istante di tempo "<<t<<endl; 
        f<<endl;
        f<<endl;
        f<<endl;
        totale=0;
        new_domanda_max=domanda_max;
        new_slot=slot;
        new_domanda_min=domanda_min;
        new_domanda_tot_sistema=domanda_tot_sistema;
       for (i = 0; i<=clienti-1; i++) 
          {  
           domanda_cliente = rand() % (new_domanda_max-new_domanda_min+1)+(new_domanda_min);
           new_domanda_tot_sistema=new_domanda_tot_sistema-domanda_cliente;
           totale=totale+domanda_cliente;
           new_slot=new_domanda_tot_sistema/rack;
       if (tipo_di_domanda==1)
        {
         new_domanda_min=new_slot/3; 
         new_domanda_max=new_slot/3+1;
        }
        else 
        {
         new_domanda_min=1; 
         new_domanda_max=new_slot;
        }
           cout <<"Domanda cliente " << " = " << domanda_cliente << endl;
           cout<<endl;
           cout<<endl;
           f<<"Domanda cliente" << " = " << domanda_cliente << endl;
           f<<endl;
           f<<endl;
           array_domanda[i]=domanda_cliente;
           
          }
        int k;
        int temp;
        for (i=0;i<=clienti-1;i++)
        {
            for(k=i+1;k<clienti;k++)
            {
              if(array_domanda[i]>array_domanda[k])
              {
               temp=array_domanda[i];
               array_domanda[i]=array_domanda[k];
               array_domanda[k]=temp;                                     
              }                      
            }
        }  
        
        
        
    }
        
        
        
        
        
        
         
        for(i=0;i<=clienti-1;i++)
        {
        cout<<"CLIENTE "<<i+1<<" = "<<array_domanda[i]<<endl;
        f<<"CLIENTE "<<i+1<<" = "<<array_domanda[i]<<endl;
        }
        
        
        cout<<endl;
        cout<<"La capacita' richiesta dal sistema e' = "<<totale<<endl;
        cout<<endl;
        cout<<endl;
        cout<<endl;
        cout<<endl;
        cout<<endl;
        cout<<endl;
        cout<<endl;
        f<<endl;
        f<<"La capacita' richiesta dal sistema e' = "<<totale<<endl;
        f<<endl;
        f<<endl;
        f<<endl;
        f<<endl;
        f<<endl;
        f<<endl;
        
        
        int r=1;
        int new_rack=rack;
        int new_new_slot=slot;
        for(i=0;i<=clienti-1;i++)
        {
          etichetta:
          if (array_domanda[i]<=new_new_slot)
        {
          cout<<"CLIENTE "<<i+1<<" sta nel RACK "<<r<<endl;
          f<<"CLIENTE "<<i+1<<" sta nel RACK "<<r<<endl;
          new_new_slot=new_new_slot-array_domanda[i];
          array_rack[i]=r;
        }
        else 
        {
         if(r==new_rack)
         {
          new_rack=new_rack+1;
          r=r+1;
          new_new_slot=slot;
          goto etichetta;        
         }
         else
         {
         r=r+1;
         new_new_slot=slot;
         goto etichetta;
         }
        } 
    }
        cout<<endl;  
        cout<<endl;
        cout<<"SONO STATI AGGIUNTI "<<new_rack-rack<<" NUOVI RACK"<<endl;
        cout<<endl;  
        cout<<endl;
        f<<endl;  
        f<<endl;
        f<<"SONO STATI AGGIUNTI "<<new_rack-rack<<" NUOVI RACK"<<endl;   
        f<<endl;  
        f<<endl;   

      
       
      
        int matrice_domanda[clienti][istanti_di_tempo];
        int matrice_rack[clienti][istanti_di_tempo];
        for (t=1;t<=istanti_di_tempo;t++)
        {
          for (i=0;i<=clienti-1;i++)
          {
            matrice_domanda[i][t-1]=array_domanda[i];         
            matrice_rack[i][t-1]=array_rack[i];
            cout<<matrice_rack[i][t-1]<<endl;
            f<<matrice_rack[i][t-1]<<endl;
          }  
            
        }
            
if(!f)
{
cout<<endl;
cout<<endl;
cout<<"Errore nella scrittura del file";
return 1;
}
cout<<endl;
cout<<endl;
cout<<"Scrittura avvenuta con successo!!!";
    cout<<endl;
    system("PAUSE");
    return 0;





}

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte