სხვადასხვა სისტემაში რიცხვების გადაყვანის გამოყენებითი

Download Report

Transcript სხვადასხვა სისტემაში რიცხვების გადაყვანის გამოყენებითი

სხვადასხვა სისტემაში რიცხვების გადაყვანის გამოყენებითი პროგრამის შექმნა

მომხსენებლები

:

მარიამ გოგილაშვილი

,

ბაჩანა ბერაძე

,

დიმიტრი ამილახვარი ხელმძღვანელი

:

ნათელა არჩვაძე

ამოცანა

: რიცხვების კონვერტირება :   ათობით და ორობით თვლის სისტემებს შორის .

( მარიამ გოგილაშვილი ) ათობით და რვაობით თვლის სისტემებს შორის . ( ბაჩანა ბერაძე )  ათობით და თექვსმეტობით თვლის სისტემებს შორის . ( დიმიტრი ამილახვარი )

მიზანი

:  ცნობილი ალგორითმების საშუალებით შევქმნათ პროგრამული კოდი და შესაბამისი windows აპლიკაცია , რომლის მეშვეობითაც შესაძლებელი იქნება დასმული ამოცანის განხორციელება .

ათობით და ორობით სისტემებს შორის კონვერტირება

  ალგორითმი : 10/2=5(0) 5/2=2(1) 2/2=1(0) 1/2=0(1)  1*2 3 +0*2 2 +1*2 1 +0*2 0 =10

10

10

= 1010

2

 ათობითი -> ორობითი პროგრამული კოდის ფრაგმენტი : do { If(number%2) binary[counter++]=‘1’; else binary[counter++]=‘0’; number=number/2; }while(number); binary[counter++]=‘\0’;

ალტერნატიული ალგორითმი

:  ლოგიკური ოპერატორები &( და ), |( ან ), ~( არა )  ძვრის ოპერატორები >> , <<

do { If(number&1) binary[counter++]=‘1’; else binary[counter++]=‘0’; number=number>>1; }while(number); binary[counter++]=‘\0’;

 ორობითი -> ათობითი პროგრამული კოდის ფრაგმენტი : for(int i=strlen(binary); i ; i--,multiplier*=2) { If(binary[i-1]==‘1’) number+=multiplier; } else if(binary[i-1]!=‘0’) return 1; cout<

ათობით და რვაობით სისტემებს შორის კონვერტირება

  ალგორითმი : ათობითი -> ორობითი 137 10 =10001001 2 -> რვაობითი 10001001 2 =010 001 001 2 =211 8  2*8 2 +1*8 1 +1*8 0 =137 10

ათობითი

->

რვაობითი

 პროგრამული კოდის ფრაგმენტი : for(j=0; j<3-length%3; j++) { convert[j]=‘0’; } for(i=length; i>0; i--) { convert[j++]=binary[i-1]; } convert[j++]=‘\0’;

რვაობითი ორობითი 0 000 1 001 2 3 6 010 011 4 100 5 101 110 7 111 for(i=0, k=0; i

ალტერნატიული პროგრამული კოდი : int main(){ int number=0; cout<<“shemoitanet ricxvi”<>number; } cout<

 რვაობითი -> ათობითი პროგრამული კოდის ფრაგმენტი : { for(int i=strlen(oct); i; i--, multiplier*=8) switch(oct[i-1]){ case ‘0’: mul=0; break; ……………..

case ‘7’: mul=7; break; default: cout<<“mistake”; return 1; } } number+=mul*multiplier;

ათობით და თექვსმეტობით სისტემებს შორის კონვერტირება

  ალგორითმი : 589 10 =1001001101 2 1001001101 2 =0010 0100 1101 2 =24D 16  2*16 2 +4*16 1 +13*16 0 = 589 10

ათობითი -> თექვსმეტობითი  პროგრამული კოდის ფრაგმენტი : for(j=0; j<4-length%4; j++) { convert[j]=‘0’; } for(i=length; i>0; i--) { convert[j++]=binary[i-1]; } convert[j++]=‘\0’;

თექვსმეტობითი 0 1 2 ორობითი 0000 0001 0010 3 4 5 6 0011 0100 0101 0110 7 0111 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111

for(i=0, k=0; i

case 15: hex[k]=‘F’; break;} } hex[k++]=‘\0’;

ალტერნატიული პროგრამის კოდი

: } int main(){ int number=0; cout<<“shemoitanet ricxvi”<>number; cout<

თექვსმეტობითი -> ათობითი  პროგრამული კოდის ფრაგმენტი : } } for(int i=strlen(hexadecimal); i; i--,multiplier*=16) { mul=hexadecimal[i-1]-48; if(mul>0 && mul<10) number+=mul*multiplier; else { mul=toupper(hedecimal[i-1])-65; if(mul<0 || mul>6) return 1; number+=(10+mul)*multiplier;

გმადლობთ ყურადღებისთვის

!