این داور acm اعصابم را ریخته بهم
سلام
یک برنامه ی خیلی ساده توی این acm شریف هست به نام moaddel که باید معدل چند کارنامه را حساب کنی:38:
اینم لینکش :
[HTML]http://acm.sharif.edu/arbiter/translation/view.jsf?name=moaddel[/HTML]
حالا این برنامه ی مسخره را از دو روش نوشتم ، براش که میفرستم میگه نادرست . :4:
خودم با مثالی که زده امتحانش کردم درست بود.
روش اول : کل ورودی ها را میگیره و بعد نتیجه را چاپ میکنه ، اینم کدش :
[PHP]#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
//
class karname
{
public:
void print()
{
cout<<setprecision(2)<<setiosflags(ios::showpoint| ios::fixed)<<DOmoaddel()<<endl;
}
void Set(int nd,int z[],int n[])
{
_ndarse=nd;
//
for(int i=0;i<_ndarse;i++)
{
zarib[i]=z[i];
nomre[i]=n[i];
}
}
private:
float DOmoaddel()
{
sum=0;
vahed=0;
for(int i=0;i<_ndarse;i++)
{
sum+=zarib[i]*nomre[i];
vahed+=zarib[i];
}
moaddel=(static_cast<float>(sum)/vahed)*100;
moaddel=floor(moaddel);
if(static_cast<int>(moaddel)%2!=0)
moaddel+=1;
moaddel/=100;
return moaddel;
}
int _ndarse; //tedad dars ha ra negah midarad.
int vahed;
int sum;
int zarib[25]; //zarib haye darse ha.
int nomre[25]; //nomre student.
float moaddel; //moadel student;
}; //end class Karname
int main()
{
int nkarname=0; //tedad karname haye voroodi ra negah midarad.
int nd=0; //tedad darse ha ra negah midarad.
karname *ka=new karname[1];
while(true)
{
cin>>nd;
//
if(nd!=0)
{
int z[25]={0}; //zarib haye darse ha.
int n[25]={0}; //nomre student.
//
for(int i=0;i<nd;i++)
cin>>z[i];
for(int i=0;i<nd;i++)
cin>>n[i];
//
ka[nkarname].Set(nd,z,n);
nkarname++;
karname *temp = new karname[ nkarname ];
for( int i = 0; i < nkarname; i++ )
temp[ i ] = ka[ i ];
delete [] ka;
ka = new karname[ nkarname + 1 ];
for( int i = 0; i < nkarname; i++ )
ka[ i ] = temp[ i ];
}
else
{
for(int i=0;i<nkarname;i++)
ka[i].print();
break;
}
}
return 0;
}[/PHP]
روش دوم : بعد دریفات اطلاعات هر کارنامه معدل را چاپ میکنه ، اینم کدش :
[PHP]
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
//
int main()
{
int nkarname=0; //tedad karname haye voroodi ra negah midarad.
int nd=0; //tedad darse ha ra negah midarad.
int vahed=0;
int sum=0;
float moaddel;
while(true)
{
cin>>nd;
//
if(nd!=0)
{
sum=0;
vahed=0;
moaddel=0;
int z[25]={0}; //zarib haye darse ha.
int n[25]={0}; //nomre student.
//
for(int i=0;i<nd;i++)
cin>>z[i];
for(int i=0;i<nd;i++)
cin>>n[i];
//
for(int i=0;i<nd;i++)
{
sum+=z[i]*n[i];
vahed+=z[i];
}
moaddel=(static_cast<float>(sum)/vahed)*100;
moaddel=floor(moaddel);
if(static_cast<int>(moaddel)%2!=0)
moaddel+=1;
moaddel/=100;
cout<<setprecision(2)<<setiosflags(ios::showpoint| ios::fixed)<<moaddel<<endl;
}
else
{
break;
}
}
return 0;
}[/PHP]
لطفا در هر کدوم از این روش ها بگید اشکال کارم کجاست ؟:37:
باتشکر