خب شما اومدی یه اشاره گر به تابع استفاده کردی خروجی تابع شما هم اولین عدد ارایه که سه باشه هست
اینکه ادرس اشاره گر رو افزایش بدی دلیلی بر اینکه تو ارایه حرکتی انجام بشه نیست
خب شما اومدی یه اشاره گر به تابع استفاده کردی خروجی تابع شما هم اولین عدد ارایه که سه باشه هست
اینکه ادرس اشاره گر رو افزایش بدی دلیلی بر اینکه تو ارایه حرکتی انجام بشه نیست
به جای بازگشتی میشه از یه حلقه while استفاده کرد و هربار عدد رو تقسیم بر ده کرد و باقبمانده رو با ماکسیسمم مقایسه کرد و هذ وقت عدد صفر شد حلقه تموم میشه
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
من میدونم روش کار چطوریه ولی برنامه این سوال رو نمیدونم خودم یکی براش نوشتم ولی اجرا میشه اما بعد خطای اجرا نشون میده
#include <iostream>
using namespace std;
int maxdir (int a)
{
int max=0;
int maxx=maxdir(a);
while (maxx>0)
{
if (maxx%10>max)
{
max=maxx%10;
}
maxx/=10;
}
return max;
}
int main()
{
int a;
cin>>a;
cout<<maxdir(a);
return 0;
}
Last edited by Ahoo78; 08-11-2018 at 16:10.
هدف از نوشتن برنامه بصورت بازگشتی اینه که while استفاده نشه
تابع بازگشتی شما شرط خروج نداره همینجوری تا جایی ک جون سیستم بالا بیاد ادامه داره
اول کار باید یه شرط داشته باشی ک اگه عددت کوچکتر از ۱۰ بود خود عدد رو برکردونه ... این میشه شرط خروج که نمیذاره اورفلو بده
پایین کار همونطوری ک پست قبلی نوشته شده
هرکار کردم نشد دیگ مخم پوکیدددد تورو خدا بگین تو برنامه بالا کجا بزارمش دیگ نمیدونم چ کنم
۸ دیقه طول کشید مخت از کار بیوفته؟
بازگشتی اول کارش سخته ولی وقتی مخ ادم را بیوفته خیلی راحت میشه نوشتش
شرط خروج که مشخصه بعد از اون دو کار باید انجام بشه
تقسیم عدد به دو قسمت
اولی تک رقم سمت راستی و دومی بقیه عدد
اینا رو ک حتما میدونی چطور بدست بیاری
اولی با عملگر %
دومی هم با تقسیم ساده بر ۱۰
اولی هیچ کاری لازم نیست انجام بدی خودش تک رقمه
دومی رو هم میدی ب تابع که بزرگترین عدد رو پیدا کنه بیاره
بعد شما این دو تا رو مقایسه میکنی و بزرگتر رو return میکنی
من برنامه را دوباره طبق چیزی ک بالا گفتین نوشتم ولی این جمله ی پایینی رو نمیفهمم چطوری بنویسمش؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟
داخل b هم بزرگترین رقم خارج قسمت تقسیم بر 10 رو (چون متغییر از نوع صحیح هست اعشارش خودبخود حذف میشه) .. این قسمت همون بازگشتی میشه یعنی باز خود همین تابع رو فراخوانی میکنی و خارج قسمت رو بهش ورودی میدی و مقداری که برمیگردونه رو میریزی داخل b
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)