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;
}