void RiempiVet(VettoreInt & Cent,int val)
{ Cent[0]=1;
Cent[1]=2;
Cent[2]=5;
Cent[3]=10;
Cent[4]=20;
Cent[5]=50;
}//fine-RiempiVet
int TrovaCombinazione(VettoreInt & V,int x)
{int N=V.Dimensione();
int k=0;
for(int i=0;i<N;i++)
{ if (V<x)
{k=i;}
}return k;//trovo il valore più grande in cui io lo posso scomporre
}//fine-TrovaMax
void CopiaVettore(VettoreInt & A,VettoreInt & B)
{int N=A.Dimensione();
for(int i=0;i<N;i++)
{B=A;}
}//fine-CopiaVettore
int TrovaCombinazioneMax(VettoreInt & V,int x)
{int N=V.Dimensione();
int k=0;
for(int i=0;i<N;i++)
{ if (V<=x)
{k=i;}
}return k;//trovo il valore più grande in cui io lo posso scomporre
}//fine-TrovaMax
void ScomponiValore(VettoreInt & V,int elem)
{ int i=0;//indice cassa
int k=0;//indice vettore che mando a video
int h=0;
int j=0;
int x=elem;
VettoreInt F;//vettore utilizzato per la messa a video degli elemnti
F.Dimensione(elem);
int N=F.Dimensione();
VettoreInt C;//vettore utilizzato per la copia di elementi
C.Dimensione(elem);
while(x>=1)
{ i=TrovaCombinazione(V,x);
F[k]=V;
cout<<F[k]<<"+";
x=x-V;
k++;
}//trovo la combinazione con i valori maggiori
cout<<endl;
k=0;i=0;//setto a zero gli indici
while(F[N-1]==0)
{CopiaVettore(F,C);
while (F[k]>=1)
{i=TrovaCombinazione(V,F[k]);
F[k]=V;
cout<<F[k]<<"+";
x=x-V;
k++;
}//trovo le combinazioni e le metto a video
if(k>0)
while (j!=k)
{cout<<"1+";
j++;}j=0;
while(C[h]!=0)
{F[k]=C[h];
cout<<F[k]<<"+";
k++;h++;
}//metti a video la restante combinazione
k=0;
while (F[k]==1)
{k++;}
cout<<endl;
}//fine combinazioni
}//fine-ScomponiValore
int main()
{ cout<<"Programma crea combinazioni centesimi";
int val=0;
cout<<endl<<"Inserire il numero da scomporre in centesimi:";
cin>>val;
cout<<endl<<"Combinazioni:"<<endl;
VettoreInt Cent;
Cent.Dimensione(6);
RiempiCassa(Cent,val);
ScomponiValore(Cent,val);
WaitESC("fine pprova");
return 0;
}
|