Şimdi Ara

c ++ yardım lütfen.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
553
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • [bilgisayar müh. 1.sınıf]hocamız bir program ödevi verdi 16lık tabanda girdiğimiz 2 sayıya toplama , çıkarma , çarpma ve ya bölme işlemleri yaptırıyoruz.
    herşeyi tamamladım, 2 tane 16lık taban da sayı girdiriyorum sonra bunları arasında işlemi yaptırıyorum, sonuç 10luk tabanda dönüyor bir fonksiyon yazdım sayıyı 10luk tabandan 16lık tabana çevirmesi için, ama çözemedeğim bir problem va.öreneğin F*F işlemini yaptırdığmda cevabı E111E olarak gösteriyor,E1 göstereceği yerde. yardımlarınız için şimdiden çok teşekkürler.
    saygılarımlar.
     
    #include <iostream>
    #include <conio.h>

    using namespace std;
    void hexfunc(double);

    int main()
    {double result;
    int num1,num2;
    int choice;
    char base;


    cout<<"Enter the base that you want ,hexademical(h) or octademical(o)\n";
    cin>>base;

    //base hexademical
    if(base=='h')
    {cout<<"Enter first integer in that base\n";
    cin>>hex>>num1;
    cout<<"Enter second integer in that base\n";
    cin>>hex>>num2;
    cout<<num1<<" "<<num2<<endl;
    //now our x value in 10 base
    //işlemler
    cout<<"Please choose an option by entering the number\n";
    cout<<"1 - Addition\n";
    cout<<"2 - Subtraction\n";
    cout<<"3 - Division\n";
    cout<<"4 - Multiplication\n";
    cin>>choice;
    if(choice=1)
    {
    result=num1+num2;
    //conversion hex to demical
    hexfunc(result);

    }
    //subtraction

    if(choice=2)
    {result=num1-num2;

    hexfunc(result);}
    //devided
    if(choice=3)
    {result=num1/num2;

    hexfunc(result);
    }//mult
    if(choice=4)
    {result=num1*num2;
    hexfunc(result);
    }
    }return 0;
    }

    //my myfunc.

    void hexfunc(double result_par)
    {int remainder;

    while (result_par>=1)
    { remainder=static_cast<int>(result_par)%16;
    if (remainder>9)
    {
    if( remainder==10 )
    cout<<"A";
    if ( remainder==11 )
    cout<<"B";
    if( remainder==12 )
    cout<<"C";
    if ( remainder==13 )
    cout<<"D";
    if( remainder==14 )
    cout<<"E";
    if(remainder==15 )
    cout<<"F"; }


    else if(remainder<=9) {
    cout<<remainder;
    }
    result_par=result_par/16;
    if (result_par==0)break;
    }}







  • acaba sorunumu mu anlatmakta basarısız oldum ? :(
  • usteki kodu fazla incelemedim anladıgım kadarıyla hex i sayıyı çevirmede problem var eger oyleyse bunu deneyin.

    int xtoi(const char* xs, unsigned int* result) {
    size_t szlen = strlen(xs);
    int i, xv, fact;

    if (szlen > 0) {
    // Converting more than 32bit hexadecimal value?
    if (szlen>8) return 2; // exit

    // Begin conversion here
    *result = 0;
    fact = 1;

    // Run until no more character to convert
    for(i=szlen-1; i>=0 ; i--) {
    if (isxdigit(*(xs+i))) {
    if (*(xs+i)>=97) {
    xv = ( *(xs+i) - 97) + 10;
    } else if ( *(xs+i) >= 65) {
    xv = (*(xs+i) - 65) + 10;
    } else {
    xv = *(xs+i) - 48;
    }
    *result += (xv * fact);
    fact *= 16;
    } else {
    // Conversion was abnormally terminated
    // by non hexadecimal digit, hence
    // returning only the converted with
    // an error value 4 (illegal hex character)
    return 4;
    }
    }
    }

    // Nothing to convert
    return 1;
    }

    int main()
    {
    char str[10];
    unsigned int k;
    scanf("%s",str);
    xtoi(str, &k); //str int e cevrilip k ye atanıyor.
    }
    not: kod alıntıdır daha önce lazım olmuştu denedim gayet güzel çalışıyor.




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.