مشکل در نوشتن برنامه تبدیل مبنا

دروپامن

New Member
سلام
من می خوام یک برنامه بنویسم که عددی را از ورودی یگیرد و در مبنای 16 آن را حساب نماید برنامه رو نوشتم ولی نمی دونم چرا خروجی رو درست نمی ده لطفا راهنمایی کنید
2014-06-26_21-58-31.png
 

the_king

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

اعداد مبنای 16 شامل فقط ارقام 0 الی 9 نیستند، شامل حروف a الی f هم هستند، پس برای ذخیره سازی شان نباید از int استفاده کنید، باید از رشته *char استفاده کنید.
در ضمن ()int main یک مقدار خروجی int لازم داره، در انتهای main برگرداندن یک مقدار int را فراموش نکنید، فرضا بنویسید ;return 0 تا مقدار 0 را برگرداند.

کد:
#include <stdio.h>
#include <conio.h>

//using namespace std;

char* base (int a);

int main()
{
    int n;
    printf("\nEnter your number:");
    scanf("%d",&n);
    printf("\nThe result is:%s\n", base(n));
    getch();
    return 0;
}

char* base(int a)
{
    int i;
    char* s = new char[10];
    s[9] = 0;
    for (i = 8; (a != 0) || (i == 8); i--)
    {
        if (a % 16 < 10)
            s[i] = '0' + a % 16;
        else
            s[i] = 'A' + a % 16 - 10;
        a = a / 16;
    }
    return &s[i + 1];
}
 

دروپامن

New Member
خیلی ممنون از جوابی که دادید
الان مشکلی که دام اینه که دو تا تابع نوشتم در برنامه که یکی مبنای 2 و دومی مبنای 16 را حساب می کند الان می خوام زمانی که دو تا عدد رو بدست آورد مقایسه با هم کنه اگر هر کدام کوچکتر بود پیامی را چاب کند
مشکل اینجاست که نمی دوم عبار شرطی بین دو تابع رو چه جوری می شه نوشت.
 

the_king

مدیرکل انجمن
خیلی ممنون از جوابی که دادید
الان مشکلی که دام اینه که دو تا تابع نوشتم در برنامه که یکی مبنای 2 و دومی مبنای 16 را حساب می کند الان می خوام زمانی که دو تا عدد رو بدست آورد مقایسه با هم کنه اگر هر کدام کوچکتر بود پیامی را چاب کند
مشکل اینجاست که نمی دوم عبار شرطی بین دو تابع رو چه جوری می شه نوشت.

مساله شما از نظر الگوریتمی مشکلی نداره، همیشه میشه یک رشته رو با یک رشته دیگه مقایسه کرد، اما از نظر مفهومی مقایسه تون بی معنا است،
یک عدد n در هر مبنایی که باشه همون عدد ئه، چه به مبنای 16 تبدیل بشه و چه مبنای 2، همچنان n ئه و با هم برابر اند.
 

جدیدترین ارسال ها

بالا