PDA

View Full Version : خطای در اجرای برنامه c++



hamedafb
سه شنبه 28 اردیبهشت 1389, 19:39 عصر
سلام من دارم با c++ برنامه می نویسم :





void Process(long n1,long n2);
//****************************************
void main()
{
long n1,n2;
char ch;
cout <<"Avalin Adad Ra Vared Konid:";
cin >>n1;
process(n1);
getch();
cleardevice();




تو خط process(n1); ارور پایین رو میده علت چیه و چطور باید رفعش کرد.
ارور:
too few parameters in call to 'process(long,long)'

tdkhakpur
سه شنبه 28 اردیبهشت 1389, 21:49 عصر
کار تابع process معلوم نیست ولی این errore به این خاطر هست که باید دو پارامتر بهش ارسال شود که شما یکی را فرستادید. به این شکل


process(n1, n2);

hamedafb
سه شنبه 28 اردیبهشت 1389, 22:45 عصر
چرا نمیشه یه پارامتر ارسال کرد بعد یه پارامتر دیگه رو



Process(n1);
Process(n2);


برای حلش باید چیکار کرد

hamedafb
چهارشنبه 29 اردیبهشت 1389, 00:11 صبح
حل شد میزارم که دیگران براشون پیش نیاد:
کافیه :



process( 0 , n1 );

و برای فراخوانی n2



process( 0 , n2 );

اینطوری ارور به طور کامل برطرف میشه.

saeedIRHA
چهارشنبه 29 اردیبهشت 1389, 02:30 صبح
حل شد میزارم که دیگران براشون پیش نیاد:
کافیه :



process( 0 , n1 );

و برای فراخوانی n2



process( 0 , n2 );

اینطوری ارور به طور کامل برطرف میشه.



فک نمیکنم هیچ وقت در آینده کسی‌ به این مشکل بر بخوره!!
دوست عزیز قبل از پرسیدن سوالای اینچنینی بد نیست که یک مقدار مطالعه کنی‌ و با مبانی اولیه آشنا بشی‌

hamedafb
چهارشنبه 29 اردیبهشت 1389, 07:03 صبح
چرا؟
اگه کسی میدونست چرا وقتی سوال پرسیدم کسی جواب نداد .و tdkhakpur (http://www.barnamenevis.org/forum/member.php?u=99732) که پاسخ دادند راه حل ندادند فقط گفتند باید دوپارامتر باهم ارسال شوند.واین رو من هم میدونستم.ولی برخی از برنامه ها نیاز دارند که هر پارامتر باید جداگانه توسط تابع فراخوانی شده و اجرا شود تا برنامه درست اجرا شود و راه حل اش هم اینی بود که گفتم و مطمئن باشید باز هم کسانی هستند که به این مشکل برمی خورند.
با تشکر

Salar Ashgi
چهارشنبه 29 اردیبهشت 1389, 09:26 صبح
برخی از برنامه ها نیاز دارند که هر پارامتر باید جداگانه توسط تابع فراخوانی شده و اجرا شود تا برنامه درست اجرا شود و راه حل اش هم اینی بود که گفتم
باید خدمتتان عرض کنم که اصلا چنین کاری نه ممکن است و نه منطقی !

خوب اگه تابع شما یه ورودی میگیره ، پس چرا هنگام تعریف 2 تا پارامتر بهش میدی ؟

اگه دو تا میگیره ، حتما باید تمام پارامترها بصورت صحیح به تابع پاس داده شوند .

اونی که شما میخواین ، بحث پارامترهای اختیاری یا Optional هستش ، که تو این حالت اگه مقداری

به پارامتر پیش فرض تابع داده نشه ، کامپایل مقدار پیش فرضشو در نظر میگیره !



#include <iostream>
#include <conio>
int Add(int x,int y,int z=2){
return x+y+z;}
//============================
int main(){
cout<<Add(3,4,6)<<endl; //result = 13
cout<<Add(2,5)<<endl; // result = 9
getch();
}

hamedafb
چهارشنبه 29 اردیبهشت 1389, 16:12 عصر
خوب اگه تابع شما یه ورودی میگیره ، پس چرا هنگام تعریف 2 تا پارامتر بهش میدی ؟
من بهتون میگم دو تا پارامتر میگیره آقا .در ضمن این برنامه ای که من دارم می نویسم برنامه چرتکه هست.
ابتدا اولین عدد رو میگیره و به تابع میفرسته .سپس تابع اون رو در نمای گرافیکی نشون میده .بعد cleardevice میکنه.بعد عدد دوم رو میگیره و به تایع میفرسته .سپس تابع اون رو در نمای گرافیکی نشون میده .بعد دوباره cleardevice میکنه بعد میره یه عملگر رو انتخاب میکنه و این دو عدد رو با اون عملگر جمع یا کم یا ضرب میکنه بعد دوباره محاسبات انجام شده رو به تابع میفرسته تا تابع اونو در نمای گرافیکی اجرا کنه.
در این حالت نمیتونی:
اولا :دو پارامتر رو با هم فراخوانی کنی چون نظم برنامه به هم میخوره
دوما:نمیتونی چنین کاری کنی:



Process(n1);
Process(n2);

چون ارور میده.در چنین حالتی تنها راه راهییه که بهتون گفتم.
البته شاید چون کد رو کامل نگذاشتم سو تفاهم شده باشه.کد فراخوانی n1 , n2 این هست:



void Process(long n1,long n2);
//****************************************
void main()

{
int driver = DETECT,mode;
initgraph(&driver,&mode,"c:\\tc\\bgi");
long n1,n2;
cout <<"Avalin Adad Ra Vared Konid:";
cin >>n1;
Process(0,n1);
getch();
cleardevice();
cout <<"Dovomin Adad Ra Vared Konid:";
cin >>n2;
Process(0,n2);
getch();
cleardevice();
و ...


و فکر کنم که سو تفاهم ها برطرف شده
با تشکر

clover
پنج شنبه 30 اردیبهشت 1389, 11:52 صبح
البته شاید چون کد رو کامل نگذاشتم سو تفاهم شده باشه.کد فراخوانی n1 , n2 این هست:

دوست عزیز
اگر امکان دارد پیاده سازی تابع Process را هم قرار دهید تا سوء تفاهم، کاملا برطرف شود.