suraty
پنج شنبه 19 آبان 1390, 01:35 صبح
سلام
برنامه ای بنویسید که دارای بخش های زیر باشد.
الف) تابع اول شی از کلاس را برگرداند که توسط آن شماره دانشجویی را در آرایه 10 عنصری کلاس جستجو کند.
ب) اعضای داده ای اختصاصی کلاس 10 دانشجو به همراه کد دانشجویی و معدل آنها را نگهدارد.
ج) سازنده ای که اعضای داده ای کلاس را مقدار دهی کند.
د) تابع 10 دانشجو را به ترتیب معدل به صورت صعودی مرتب نماید.(با استفاده از انتساب اشیا)
ه) تابع سوم بتواند عملیات انتساب اشیا را انجام دهد.(فرض کنید این تابع بخواهد max معدل ها را محاسبه نماید.)
من این برنامه رو به شکل زیر نوشتم که کار می کرد، اما برنامه ام اصلا بهینه نیست. مثلا در قسمت جستجو و محاسبه ماکزیمم معدل عملیات انتساب اشیا بی جهت استفاده شده.
می خواستم اگه می تونید کمکم کنید که بتونم برنامه رو بهینه تر بنویسم.
#include"iostream.h"
#include"conio.h"
class class1{
int c[10];
float ave[10];
public:
class1(){
for(int i=0;i<10;i++){
c[i]=0;
ave[i]=0;}
}
void input(){
for(int i=0;i<10;i++)
cin>>c[i]>>ave[i];
}
void show(){
for(int i=0;i<10;i++)
cout<<"code="<<c[i]<<" ave="<<ave[i]<<"\n";
}
friend class1 fun1(int a,class1 ob);
friend class1 fun2(class1 ob);
friend class1 fun3(class1 ob);
};
class1 fun1(int a,class1 ob){
for(int i=0;i<10;i++)
if(ob.c[i]==a)
cout<<"find\n";
else
cout<"not find\n";
return ob; }
class1 fun2(class1 ob){
int a;
float b;
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
if(ob.ave[j]>ob.ave[j+1]){
b=ob.ave[j];
a=ob.c[j];
ob.ave[j]=ob.ave[j+1];
ob.c[j]=ob.c[j+1];
ob.ave[j+1]=b;
ob.c[j+1]=a;
}
return ob;
}
class1 fun3(class1 ob){
float max=0;
for(int i=0;i<10;i++){
if(ob.ave[i]>max)
max=ob.ave[i];}
cout<<max;
return ob; }
int main(){
class1 ob1,ob2;
ob1.input();
int n;
cin>>n;
ob2=fun1(n,ob1);
ob2=fun2(ob1);
ob2.show();
ob2=fun3(ob1);
return 0;
}
برنامه ای بنویسید که دارای بخش های زیر باشد.
الف) تابع اول شی از کلاس را برگرداند که توسط آن شماره دانشجویی را در آرایه 10 عنصری کلاس جستجو کند.
ب) اعضای داده ای اختصاصی کلاس 10 دانشجو به همراه کد دانشجویی و معدل آنها را نگهدارد.
ج) سازنده ای که اعضای داده ای کلاس را مقدار دهی کند.
د) تابع 10 دانشجو را به ترتیب معدل به صورت صعودی مرتب نماید.(با استفاده از انتساب اشیا)
ه) تابع سوم بتواند عملیات انتساب اشیا را انجام دهد.(فرض کنید این تابع بخواهد max معدل ها را محاسبه نماید.)
من این برنامه رو به شکل زیر نوشتم که کار می کرد، اما برنامه ام اصلا بهینه نیست. مثلا در قسمت جستجو و محاسبه ماکزیمم معدل عملیات انتساب اشیا بی جهت استفاده شده.
می خواستم اگه می تونید کمکم کنید که بتونم برنامه رو بهینه تر بنویسم.
#include"iostream.h"
#include"conio.h"
class class1{
int c[10];
float ave[10];
public:
class1(){
for(int i=0;i<10;i++){
c[i]=0;
ave[i]=0;}
}
void input(){
for(int i=0;i<10;i++)
cin>>c[i]>>ave[i];
}
void show(){
for(int i=0;i<10;i++)
cout<<"code="<<c[i]<<" ave="<<ave[i]<<"\n";
}
friend class1 fun1(int a,class1 ob);
friend class1 fun2(class1 ob);
friend class1 fun3(class1 ob);
};
class1 fun1(int a,class1 ob){
for(int i=0;i<10;i++)
if(ob.c[i]==a)
cout<<"find\n";
else
cout<"not find\n";
return ob; }
class1 fun2(class1 ob){
int a;
float b;
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
if(ob.ave[j]>ob.ave[j+1]){
b=ob.ave[j];
a=ob.c[j];
ob.ave[j]=ob.ave[j+1];
ob.c[j]=ob.c[j+1];
ob.ave[j+1]=b;
ob.c[j+1]=a;
}
return ob;
}
class1 fun3(class1 ob){
float max=0;
for(int i=0;i<10;i++){
if(ob.ave[i]>max)
max=ob.ave[i];}
cout<<max;
return ob; }
int main(){
class1 ob1,ob2;
ob1.input();
int n;
cin>>n;
ob2=fun1(n,ob1);
ob2=fun2(ob1);
ob2.show();
ob2=fun3(ob1);
return 0;
}