PDA

View Full Version : مشکل این برنامه من چیه؟



dmax2328
پنج شنبه 28 آذر 1387, 15:52 عصر
# include <iostream.h>
# include <conio.h>
int meghdar(int);
int erja(int&);
float sum ,count ;
meghdar(int avg)
{
sum+=number;
avg=sum/count;
return avg;
}
erja (int& avg)
sum+=number;
avg=sum/count;
return avg;
}
int main()
{
clrscr();
float number,sum=0,count=0;
char name;
cout<<" enter name and number for 10 students: "<<endl;
for (int i=0; i<10; i++)
{
count++;
cin>>name>>number;
cout<<endl;
}
meghdar;
erja;
getch();
return 0;
}


این هم سوال برنامه:

برنامه ای که نام ونمره 10 دانش آموز را از ورودی دریافت میکنه ، بعد در خروجی یکبار معدل کل کلاس را بر اساس یک تابع به روش call by value و یکبار بر اساس یک تابع بوسیله call by reference انجام داده و نمایش دهد.

deopen
پنج شنبه 28 آذر 1387, 16:26 عصر
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
float callByValue(float [],const int);
void callByRef(float &,float [],const int);
void print(float [],const int);
int main() {
//define
const int size=5;
float val=0,ref;
float nmr[size]={12,15,4,19,3};
//show array
print(nmr,size);
//call function value
val=callByValue(nmr,size);
//show val
cout<<"average by value : "<<val<<endl;
//------------------------------
//call function refrence
callByRef(ref,nmr,size);
cout<<"average by ref : "<<ref<<endl;
//stop screen
cout<<"";
cin.get();
return 0;
}
float callByValue(float arr[],const int size) {
float CBV=0;
for(int i=0;i<size;i++)
CBV+=arr[i];
CBV/=size;
return CBV;
}
void callByRef(float &number,float arr[],const int size) {
number=0;
for(int i=0;i<size;i++)
number+=arr[i];
number/=size;
}
void print(float arr[],const int size) {

for(int i=0;i<size;i++)
cout<<i<<" : "<<arr[i]<<"\n";
}





در کد بالا فرق توابع refrence با توابعی که یک کپی از مقدار را نگه میدارند مشخص است همانطور که میبینید تابع callByVal به val نسبت داده شده یعنی ابتدا تابع کار خود را انجام میدهد سپس یک مقدار بر میگرداند ولی در تابع callByRef تابع به چیزی نسبت داده نمیشود در عوض متغیری را بعنوان آرگومان دریافت میکند و به آن ارجاع میکند , تابع یک کپی از مقدار را نگه نمیدارد بلکه دسترسی به خود مقدار دارد.

dmax2328
پنج شنبه 28 آذر 1387, 16:43 عصر
یک دنیا ممنونتم انشالله همیشه موفق باشی