خب شما اومدی یه اشاره گر به تابع استفاده کردی خروجی تابع شما هم اولین عدد ارایه که سه باشه هستنقل قول:
اینکه ادرس اشاره گر رو افزایش بدی دلیلی بر اینکه تو ارایه حرکتی انجام بشه نیست
Printable View
خب شما اومدی یه اشاره گر به تابع استفاده کردی خروجی تابع شما هم اولین عدد ارایه که سه باشه هستنقل قول:
اینکه ادرس اشاره گر رو افزایش بدی دلیلی بر اینکه تو ارایه حرکتی انجام بشه نیست
به جای بازگشتی میشه از یه حلقه while استفاده کرد و هربار عدد رو تقسیم بر ده کرد و باقبمانده رو با ماکسیسمم مقایسه کرد و هذ وقت عدد صفر شد حلقه تموم میشهنقل قول:
کد:max =0;
while n >0
{
c= n\10;
if c>max
max=c;
n=n/10;
}
من میدونم روش کار چطوریه ولی برنامه این سوال رو نمیدونم خودم یکی براش نوشتم ولی اجرا میشه اما بعد خطای اجرا نشون میده
#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;
}
هدف از نوشتن برنامه بصورت بازگشتی اینه که while استفاده نشهنقل قول:
تابع بازگشتی شما شرط خروج نداره همینجوری تا جایی ک جون سیستم بالا بیاد ادامه داره
اول کار باید یه شرط داشته باشی ک اگه عددت کوچکتر از ۱۰ بود خود عدد رو برکردونه ... این میشه شرط خروج که نمیذاره اورفلو بده
پایین کار همونطوری ک پست قبلی نوشته شده
ممنون برم ببینم درست میشه یا نه
هرکار کردم نشد دیگ مخم پوکیدددد تورو خدا بگین تو برنامه بالا کجا بزارمش دیگ نمیدونم چ کنم
۸ دیقه طول کشید مخت از کار بیوفته؟
بازگشتی اول کارش سخته ولی وقتی مخ ادم را بیوفته خیلی راحت میشه نوشتش
شرط خروج که مشخصه بعد از اون دو کار باید انجام بشه
تقسیم عدد به دو قسمت
اولی تک رقم سمت راستی و دومی بقیه عدد
اینا رو ک حتما میدونی چطور بدست بیاری
اولی با عملگر %
دومی هم با تقسیم ساده بر ۱۰
اولی هیچ کاری لازم نیست انجام بدی خودش تک رقمه
دومی رو هم میدی ب تابع که بزرگترین عدد رو پیدا کنه بیاره
بعد شما این دو تا رو مقایسه میکنی و بزرگتر رو return میکنی
محض اطلاع این کارارو اون بالا انجام دادم
بنظر میاد بترتیب انجام ندادید
من برنامه را دوباره طبق چیزی ک بالا گفتین نوشتم ولی این جمله ی پایینی رو نمیفهمم چطوری بنویسمش؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟
داخل b هم بزرگترین رقم خارج قسمت تقسیم بر 10 رو (چون متغییر از نوع صحیح هست اعشارش خودبخود حذف میشه) .. این قسمت همون بازگشتی میشه یعنی باز خود همین تابع رو فراخوانی میکنی و خارج قسمت رو بهش ورودی میدی و مقداری که برمیگردونه رو میریزی داخل b