PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سوال سوال برنامه نویسی در زمینه ++c



greenvitriol
17th October 2008, 12:49 AM
من تو گذاشتن شمارنده ها مشکل دارم میشه کمکم کنین؟
برنامه های زیر را به زبان c++ به روش بازگشتی نوشته و شمارنده ای بگذارید که مشخص کند 1_ تابع چندبار فراخوانی گردید؟ 2_ مجموعا" چه تعداد دستور اجرا گردید؟
1_فاکتوریل 2_فیبوناچی 3_ جستجوی اعداد صحیح 4_ محاسبه ی مجموعه عناصر آرایه

ممنون میشم پاسخ بدین من سه مورد اول رو پیدا کردم البته فقط توابع رو و نتونستم شمارنده رو براشون ایجاد کنم .
@};-

greenvitriol
19th October 2008, 08:15 AM
سلام
این هم کد برنامه هاش فقط تو گذاشتن کانتر کمکم کنین! البته نمیدونم برنامه ای که نوشتم درسته یا نه! تو دوتا کد برنامه اصلی واسه فراخونی رو نذاشتم اگه اشکالی بود ممنون میشم اصلاحش کنین....@};-

char compare(int x,int y)
{
if (x>y)
return '>';
else if (x<y)
return '<';
else
return '=';
}
#define BINSEARCH_H
int binsearch(int *a,const int x,const int left,const int right)
{
if (left<=right)
{
int middle=(left+right)/2;
switch(compare(x,a[middle]))
{
case'>': return binsearch(a,x,middle + 1,right);
case'<': return binsearch(a,x,left,middle - 1);
case'=': return middle;
}
}
return -1;
}


#define FACT_H
int f(int n)
{
if (n<=1)
return 1;
else
return n*f(n-1);
}


#define FIB_H
int fib(int n)
{
if (n<=1)
return 1;// cout<<n<<endl;
else{
int a;
int b=0;
int c=1;
for(int i=2; i<=n; i++)
{
a=b+c;
b=c;
c=a;
}
return a;
}
}

Admin
19th October 2008, 08:37 AM
قالب برنامه های بازگشتی در سی ++ .!



# inaclude< ..>
{
main program

int returnfunc(a);

}
int returnfunc(..)
{

returnfunc main

}


ایم از داخل کتاب برات نوشتم تا تابع بازگشتی رو درست کنی تو برنامه هات اول:


# include< ... >
void sample ( int x , int y);
int main(){

int a,b;
...

sample(a,b);
...

return 0;

}
void sample ( int x,int y)
{

بدنه ی تابع

...

}

greenvitriol
19th October 2008, 11:42 PM
ممنون آقا مصطفی بابت این تذکرتون
اما من هنوز جواب اصلیمو نگرفتم:-s
اگه میشه تو گذاشتن کنترشم کمکم کنین ممنون میشم

Admin
20th October 2008, 07:42 AM
ممنون آقا مصطفی بابت این تذکرتون
اما من هنوز جواب اصلیمو نگرفتم:-s
اگه میشه تو گذاشتن کنترشم کمکم کنین ممنون میشمچشم ..!

این شمارنده برای دفعات فراخوانی..!
بعد می تونی مقدار c رو چاپ کنی که مشخص می کنه چند بار تابع فراخوانی شده.( رنگ قرمز)

چه تعداد دستور اجرا گردید رو هم .. رنگ سبز ببین

count == مقدار دستورات قابل چاپ که باید به خروجی برده بشه.
number == تعداد دستورات اجرا شده در وهله ی اول در برنامه.

number2 == تعداد دستورات اجرا شده در مراحل بعد در فراخوانی تابع


# include< ... >
void sample ( int x , int y);
int main(){
int c = 0;
int count = number;
int a,b;
...

sample(a,b);
...

return 0;

}
void sample ( int x,int y)
{

بدنه ی تابع

...
c++;
count = number + number2;

}

AliMazi
20th April 2009, 07:19 AM
سلام رفیق.
فقط کافیه یه متغیر استاتیک توی تابع تعریف کنی یا یک متغیر عمومی تعریف کنی. بعد قبل از if توی تابع بهش یکی اضافه کنی.
یعنی به این شکل:

int tx = 0;
char compare(int x,int y)
{
if (x>y)
return '>';
else if (x<y)
return '<';
else
return '=';
}
#define BINSEARCH_H
int binsearch(int *a,const int x,const int left,const int right)
{
tx++;
if (left<=right)
{
int middle=(left+right)/2;
switch(compare(x,a[middle]))
{
case'>': return binsearch(a,x,middle + 1,right);
case'<': return binsearch(a,x,left,middle - 1);
case'=': return middle;
}
}
return -1;
}

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد