//--------------------------------------------------------------------------- #include #include #include #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused float Pr(int [2][6],float,int,float,float,float,int &); int main(int argc, char* argv[]) { float Pred;//Предложение int buf=0;//Буфер для хранения непроданных газет float CZ=0.5,//Цена закупки CP=1,//Цена продажи CN=0.2;//Цена 'буферной' газеты //Таблица частот сросов int SprTab[2][6]={0,10,20,30,40,50, 3,17,37,29,12,2}; for(;;){ clrscr(); cout<<"Pred=";cin>>Pred; float Prib=0; for(int i=0;i<6;i++) Prib=Prib+Pr(SprTab,Pred,i,CP,CZ,CN,buf); Prib=Prib-CZ*buf; //cout<<"buf="<>a;if(a=='e') break; } return 0; } //--------------------------------------------------------------------------- //Функция, вычисляющая прибыль при данном предложении float Pr(int SprTab[2][6],float Pred,int i,float CP,float CZ,float CN,int &buf){ if (SprTab[0][i]<=Pred){//A buf=buf+(Pred-SprTab[0][i])*SprTab[1][i]; return ((CP-CZ)*SprTab[0][i]*SprTab[1][i]); }//A else if(SprTab[0][i]>Pred){//B if((SprTab[0][i]-Pred)>=buf){//1 int a=buf;buf=0; return ((CP-CZ)*Pred*SprTab[1][i]+(CN-CP)*a);//(0.5*Pred*SprTab[1][i]); }//1 else if((SprTab[0][i]-Pred)SprTab[1][i]){//2 buf=buf-(SprTab[0][i]-Pred)*SprTab[1][i]; return ((CP-CZ)*Pred*SprTab[1][i]+(CN-CZ)*SprTab[1][i]*(SprTab[0][i]-Pred)); }//2 else if(n<=SprTab[1][i]){//3 int a=buf;buf=0; return((CP-CZ)*Pred*SprTab[1][i]+(CN-CZ)*a); }//3 }//C }//B }//End of function