[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);
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.
yeni mesaja git
Yeni mesajları sizin için sürekli kontrol ediyoruz, bir mesaj yazılırsa otomatik yükleyeceğiz.Bir Daha Gösterme