نمایش نتایج 1 تا 16 از 16

نام تاپیک: بدست آوردن مقلوب یک عدد با تابع بازگشتی

  1. #1
    کاربر دائمی آواتار BOB
    تاریخ عضویت
    خرداد 1383
    محل زندگی
    http://www.mshams.ir
    پست
    450

    بدست آوردن مقلوب یک عدد با تابع بازگشتی

    سلام

    این سوال خیلی آسونه ... ولی در عین آسانی نیاز به کمی دقت و خلاقیت داره.

    یک تابع بازگشتی بنویسید که عددی را به عنوان ورودی دریافت و مقلوب آن را محاسبه کرده و بازگرداند.(منظور از مقلوب همان وارونه است).
    مثلا مقلوب عدد 13056 برابر با 65031 و مقلوب 1700 عدد 71 میشود. زیرا صفر پشت عدد معنی نداشته و این تابع نیز ، مقلوب محاسبه شده را در یک متغیر عددی باید برگرداند.
    پس اعلان تابع به این شکل میشود ...


    long rev(long x)
    {
    .....
    .....
    }

  2. #2
    سلام
    این برنامه جالبی بود ولی بهتر نبود اول خودت کمی روش فکر می کردی شاید به نتیجه می رسیدی !
    ولی خوب من برنامه را نوشتم و می ذارم این جا . در ضمن من عددم را int گرفتم ولی اگر می خواهی می تونی تو long int بگیری فرقی نمی کند ؟
    خوشحال می شوم اگر از برنامه استفاده کردی بگی که برنامه به دردت خورد یا نه یا اشکالات برنامه ام را بگویی .
    موفق باشی
    #include<stdio.h>
    #include<conio.h>
    void maghloob(int x){
    if (x/10){
    if (x%10)
    printf("%d",x%10);
    maghloob(x/10);
    }
    }
    void main(void){
    int x;
    clrscr();
    printf("Enter an integer number:");
    scanf("%d",&x);
    printf("\nmaghloob=");
    maghloob(x);
    getch();
    }

  3. #3
    با سلام مجدد
    برنامه قبلی که نوشتم برای عدد 1700 جواب می دهد ولی برای 13056 جواب درست نمی داد تصحیح شده اش را دوباره برایت گذاشتم :
    باز هم ممنون می شوم اگر نظرت را در رابطه با برنامه بگویی یا اشکالش را بگویی ؟
    #include<stdio.h>
    #include<conio.h>
    void maghloob(int x){
    if (x){
    printf("%d",x%10);
    maghloob(x/10);
    }
    }
    void main(void){
    int x;
    clrscr();
    printf("Eneter an integer number:");
    scanf("%d",&x);
    while (x%10==0)
    x=x/10;
    printf("\nmaghloob=");
    maghloob(x);
    getch();
    }

  4. #4
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط BOB
    (منظور از مقلوب همان وارونه است)
    مقلوب عدد 13056 برابر با 65031 و
    مقلوب 1700 عدد 71 میشود. زیرا صفر پشت عدد معنی نداشته و این تابع نیز ،
    مقلوب محاسبه شده را در یک متغیر عددی باید برگرداند.
    مقلوب دیگه چیچیه؟
    فارسی نداره این کلمه؟ یک چیزی در مایه‌هایه "برعکس"،"پشت و رو" و یا "وارانه"؟
    فردوسی را از یاد نبرید!
    ۴ بار گفیتد مقلوب، یک بار وارونه!

  5. #5
    نقل قول نوشته شده توسط اَرژنگ
    مقلوب دیگه چیچیه؟
    فارسی نداره این کلمه؟ یک چیزی در مایه‌هایه "برعکس"،"پشت و رو" و یا "وارانه"؟
    فردوسی را از یاد نبرید!
    ۴ بار گفیتد مقلوب، یک بار وارونه!
    سلام دوست عزیز
    شما چرا اصل مطلب را ول کردید به فرعیات چسبیدید ؟

  6. #6
    کاربر دائمی آواتار BOB
    تاریخ عضویت
    خرداد 1383
    محل زندگی
    http://www.mshams.ir
    پست
    450
    سلام

    دوست عزیز gm.sara ... اگر خودم جوابشو نمیدونستم ، مطلب رو به شکل دیگری عنوان میکردم!
    فکر میکنم شما اصلا به صورت مسئله توجه نکردین ..! جواب دادن به این سوال ، به شکلی که شما نوشتین کار بسیار ساده ای است .
    اصل مسئله اینه که ، تابع مربوطه باید خروجی عددی داشته باشه ، وگرنه چاپ ارقام پشت سرهم که کاری نداشت. برای همین اعلان تابع رو نیز ذکر کردم :

    long rev(long x)
    {
    .....
    .....
    }

  7. #7
    سلام
    خوب می شه به جای خط printf در تابع متغییری در نظر گرفت که داخلش این عبارت باشد :
    p=x%10+10*p

    البته در اول تابع در هنگام تعریف متغیر p مقدار اولیه به صفر باید داد وبرای جلوگیری از صفرشدن مرتب p می توان آن را به صورت سراسری تعریف کرد . و در پایان هم مقدار p را return کنی و در بدنه اصلی برنامه استفاده کنی .
    اگر باز هم منظورت را اشتباه متوجه شدم بگو .

  8. #8
    کاربر دائمی آواتار BOB
    تاریخ عضویت
    خرداد 1383
    محل زندگی
    http://www.mshams.ir
    پست
    450
    سلام
    دوست عزیز ممکنه با این دست راه حلها به جواب برسی ... ولی فکر نمیکنی اینکار با اصول اولیه استفاده و کاربرد توابع در تناقضه !! ( استفاده از متغیر سراسری در تابع !!!! )
    جواب مورد نظر ، یک تابع بازگشتی مستقل و با رعایت اصول برنامه نویسی میباشد .
    موفق باشید.

  9. #9
    ممنون
    روی راه حل آن فکر می کنم .

  10. #10
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط gm.sara
    سلام دوست عزیز
    شما چرا اصل مطلب را ول کردید به فرعیات چسبیدید ؟
    من اصل مطلب را ول کردم به فرعیات چسبیدم؟
    اسمه این انجمن "انجمن الگریتمه"، سوالی که پرسیده شده و جوابهایه که فرستاده شدن در سی میباشند.
    میشه این کار را در سه خط پاسکال نوشت، ولی این بخش ،بخش الگریتم.
    نتیجتاً
    ۱.این سوال مربوط به این بخش نیست، باید بستش و بردش به قسمت سی.
    ۲.از جواب دادن به سوال در بخش الگریتم با هر زبانی خواصی باید پرهیز کرد.
    ۳.چرا در بخش الگریتم خیلیها سوال را در یک زبان بخصوص جواب میدند؟ برایه پاسکال بخش پاسکال هست، برایه سی انجمن سی هست .....
    بخش الگریتم برایه الگریتمه.
    اگر کسی فرق الگریتم را با پایوند کردن الگریتم در یک زبان بخصوصی نمیدند، باید یاد آوری کنیم.

    اگر اشتباه میگم ، بفرمائید
    با تشکر فراوان که نظرتان را بیان کردید.
    آخرین ویرایش به وسیله اَرژنگ : دوشنبه 19 دی 1384 در 02:30 صبح

  11. #11
    دوست عزیز
    برای اینکار بهتر است که شما ورودی را به رشته تبدیل کنید و سپس آنرا وارونه نمایید و در نهایت تبدیل کنید به عدد که صفرهای ابتدای آن هم خود به خود پاک میشود

  12. #12
    این شبه کد همونه که می خواین؟

    int Rev(N);
    Begin
    if n>0 Then
    return Power(10,Trunc(Ln(n)/Ln(10)))* (n mod 10)+Rev(N div 10);
    ENd;
    You never know what you can do until you try

  13. #13
    سلام نظرت درباره این چیه ؟
    #include<stdio.h>
    #include<conio.h>
    int maghloob(int x,int p){
    if (x){
    p=x%10+p*10;
    maghloob(x/10,p);
    }
    else
    return p;
    }
    void main(void){
    int x,p=0;
    clrscr();
    printf("Eneter an integer number:");
    scanf("%d",&x);
    while (x%10==0)
    x=x/10;
    printf("\nmaghloob=");
    p=maghloob(x,p);
    printf("%d",p);
    getch();
    }

    این همونیه که می خواستی ؟

  14. #14
    کاربر دائمی آواتار BOB
    تاریخ عضویت
    خرداد 1383
    محل زندگی
    http://www.mshams.ir
    پست
    450
    سلام
    جناب mzjahromi متشکرم ، پاسخ شما بسیار زیبا میباشد. دوست عزیز gm.sara قرار بود تابع فقط یک عدد را به عنوان پارامتر ورودی دریافت کنه ، با کمی تغییر در تابع میتوانی به جواب مورد نظر برسی.
    فرمایش جناب ارژنگ نیز درست میباشد. ولی شخصا فکر نمیکنم اشکالی داشته باشه که پاسخها به زبان خاصی نوشته شوند. در هر صورت یک برنامه نویس باید بتواند با دیدن کد ، به هر زبانی ، به الگوریتم آن پی ببرد.

    موفق باشید.

  15. #15
    دوست عزیز
    پس دیگه ببخشید که نتونستم کمکتون کنم .

  16. #16

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

    برای VB6 چگونه بنویسیم ؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •