PDA

View Full Version : آموزش: راهنمایی برای نوشتن تابع با تعداد نامعلوم ورودی



hajizadeh.m
شنبه 12 آذر 1390, 19:58 عصر
با سلام.دوستان میخواستم تابعی رو برای برنامه ام بنویسم که تعداد نامعلومی عدد رو دریافت کنه و میانگینشونو بگیره و چاپ کنه.اما نکته مهم اینه که باید این تعداد نامعلوم به تابع ارسال بشه یعنی تعریف تابع به صورت زیر باشه:
double Avg( int , int , int , ......){};1:
پس تعداد نامعلوم int بگیره و اون تعداد رو هم بهش ندیم یعنی فقط اعدادی که میخوایم میانگین بگیریم رو ارسال کنیم.
کسی میتونه کمک کنه؟

BeginnerProgrammer
شنبه 12 آذر 1390, 20:12 عصر
میتونید اعدادی رو که میگیرین تو وکتور ذخیره کنید بعد سایز وکتور رو به عنوان آرگومان ورودی به تابع ارسال کنید(وکتورتون باید گلوبال باشه).

NIMA_1981
شنبه 12 آذر 1390, 20:30 عصر
این اعداد رو توی یک آرایه بریز بعد آرایه به تابع بفرست

sh4mid
شنبه 12 آذر 1390, 22:16 عصر
سلام
اگر تعداد نامعلوم بخواهی باید از stdarg (http://en.wikipedia.org/wiki/Stdarg.h)استفاده کنی(البته نامعلوم نامعلوم هم نیست)
مثال ساده


void printThem(int , ...);

int main()
{
printThem(1,2,3,4,5,6,NULL);
printThem(1,2,3,4,5,NULL);
printThem(1,2,3,NULL);
printThem(1,2,NULL);
printThem(1,NULL);
printThem(NULL);
system("pause");
return 0;
}

void printThem(int firstItem,...)
{
va_list mylist;
va_start(mylist,firstItem);
if(firstItem==NULL)
{
std::cout<<endl;
return;
}
do
{
std::cout<<firstItem<<"*";
firstItem=va_arg(mylist,int);
}
while(firstItem!=NULL);
va_end(mylist);
std::cout<<endl;
return;
}

بهشون میگن Variadic function (http://en.wikipedia.org/wiki/Variadic_function)

Aerox1
یک شنبه 13 آذر 1390, 19:07 عصر
میتونی یه حلقه همیشه درست مثلا while(1) بنویسی اول برنامه و عملیات رو توش انجام بدی . اینجوری تا هر موقع که بخوای میتونی عدد وارد کنی

soorena
دوشنبه 14 آذر 1390, 16:48 عصر
سلام
میتونی‌ خیلی‌ راحت از آرایه‌های پویا یعنی‌ همون لیست‌های پیوندی استفاده کنی‌ و هر تعداد نامعلومی که عدد داشته باشی‌ رو توش بگذاری.