معادل عدد در مبنای 16 - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

معادل عدد در مبنای 16 [بسته شد]

0 امتیاز
سلام دوستان برنامه ای میخوام بنویسم که یک عدد بخونه و معادل آن عدد رو در مبنای 16 نمایش بده می خوام از ساختار switch استفاده کنم .
بسته شد به خاطر مشابه بودن با: تبدیل مبنای 10 به 16 در C
سوال شده خرداد 6, 1393  بوسیله ی Mr.Mohammad (امتیاز 189)   17 17 24
بسته شد خرداد 7, 1393 بوسیله ی BlueBlade
دوستان راهنمایی کنید

2 پاسخ

+2 امتیاز
 
بهترین پاسخ

این الگوریتم تو اردر log n جواب میده
البته اگر از تابع لگاریتم کتابخانه ی math صرف نظر کنیم

 

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int num;
    cin>>num;
    int size=int(log2(num))/4+1;
    int A[size];
    for(int i=0; num!=0; i++)
    {
        A[i]=num%16;
        num/=16;
    }
    for(int i=size-1; i>=0; i--)
    {
        if(A[i]<10)
            cout<<A[i];
        else
        {
            switch(A[i])
            {
            case 10:
                cout<<'a';
            case 11:
                cout<<'b';
            case 12:
                cout<<'c';
            case 13:
                cout<<'d';
            case 14:
                cout<<'e';
            case 15:
                cout<<'f';
            }
        }
    }
    return 0;
}

اگر مهمه که از توابع بیرونی استفاده نکنیم میتونید تابع log2 رو این طوری بنویسید

int log2(int num)
{
    int c=-1;
    while(num!=0)
    {
        num/=2;
        c++;
    }
    return c;
}

 

پاسخ داده شده خرداد 6, 1393 بوسیله ی MaGaroos (امتیاز 658)   11 18 36
انتخاب شد خرداد 7, 1393 بوسیله ی Mr.Mohammad
0 امتیاز
while(n!=0)
{
c=n/16
if(c<10)
cout<<c
switch(c)
{
case 10; cout<<"a";break
case 11; cout<<"b";break
case 12; cout<<"c";break
case 13; cout<<"d";break
case 14; cout<<"e";break
case 15; cout<<"f";break

}
n=n/16
}

 

پاسخ داده شده خرداد 6, 1393 بوسیله ی senator77 (امتیاز 226)   6 14 25
اشتباه است
درسته هاااااا
جلوی case باید : بذاری سمیکالن اشتباهه
دو تا دستور جلوی هر case رو باید تو آکلاد بذاری
جلوی break هم سمیکالن میخواد

+میتونی متغیر c رو حذف کنی
خب من نیومدم که کد کامل رو بزارم اومدم فقط ی چیزایی از اصلشو بزارم همین
...