210 likes | 608 Views
სხვადასხვა სისტემაში რიცხვების გადაყვანის გამოყენებითი პროგრამის შექმნა. მარიამ გოგილაშვილი, ბაჩანა ბერაძე, დიმიტრი ამილახვარი. მომხსენებლები :. ხელმძღვანელი:. ნათელა არჩვაძე. ამოცანა:. რიცხვების კონვერტირება : ათობით და ორობით თვლის სისტემებს შორის. ( მარიამ გოგილაშვილი )
E N D
სხვადასხვა სისტემაში რიცხვების გადაყვანის გამოყენებითი პროგრამის შექმნა მარიამ გოგილაშვილი, ბაჩანა ბერაძე, დიმიტრი ამილახვარი მომხსენებლები: ხელმძღვანელი: ნათელა არჩვაძე
ამოცანა: რიცხვების კონვერტირება : • ათობით და ორობით თვლის სისტემებს შორის. (მარიამ გოგილაშვილი) • ათობით და რვაობით თვლის სისტემებს შორის. (ბაჩანა ბერაძე) • ათობით და თექვსმეტობით თვლის სისტემებს შორის. (დიმიტრი ამილახვარი)
მიზანი: • ცნობილი ალგორითმების საშუალებით შევქმნათ პროგრამული კოდი და შესაბამისი windowsაპლიკაცია , რომლის მეშვეობითაცშესაძლებელი იქნება დასმული ამოცანის განხორციელება.
ათობით და ორობით სისტემებს შორის კონვერტირება • ალგორითმი: • 10/2=5(0) 5/2=2(1) 2/2=1(0) 1/2=0(1) • 1*23+0*22+1*21+0*20 =10 1010= 10102
ათობითი->ორობითი • პროგრამული კოდის ფრაგმენტი: 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(inti=strlen(binary); i ; i--,multiplier*=2) { If(binary[i-1]==‘1’) number+=multiplier; else if(binary[i-1]!=‘0’) return 1; } cout<<number;
ათობით და რვაობით სისტემებს შორის კონვერტირება • ალგორითმი: ათობითი->ორობითი ->რვაობითი • 13710=100010012 100010012=010 001 0012=2118 • 2*82+1*81+1*80 =13710
ათობითი->რვაობითი • პროგრამული კოდის ფრაგმენტი: 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’;
for(i=0, k=0; i<strlen(convert); i+=3, k++){ triada[0]=convert[i]; triada[1]=convert[i+1]; triada[2]=convert[i+2]; triada[3]= ‘\0’; if(!strcmp(triada, “000”)) oct[k]= ‘0’; ……………………… else oct[k]=‘7’; } oct[k++]=‘\0’; cout<<oct;
ალტერნატიული პროგრამული კოდი: int main(){ int number=0; cout<<“shemoitanetricxvi”<<endl; cin>>number; cout<<oct<<number<<endl; return 0; }
რვაობითი->ათობითი • პროგრამული კოდის ფრაგმენტი: for(inti=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; }
ათობით და თექვსმეტობით სისტემებს შორის კონვერტირება • ალგორითმი: • 58910=10010011012 10010011012=0010 0100 11012=24D16 • 2*162+4*161+13*160 = 58910
ათობითი->თექვსმეტობითი • პროგრამული კოდის ფრაგმენტი: 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 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 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<strlen(convert); i+=4; k++){ number=0; if(convert[i+3]==‘1’) number+=1; if(convert[i+2]==‘1’) number+=2; if(convert[i+1]==‘1’) number+=2*2; if(convert[i]==‘1’) number+=2*2*2; switch(number){ case 0: hex[k]=‘0’; break; …………………….. case 15: hex[k]=‘F’; break;} } hex[k++]=‘\0’;
ალტერნატიული პროგრამის კოდი: int main(){ int number=0; cout<<“shemoitanetricxvi”<<endl; cin>>number; cout<<hex<<number<<endl; return 0; }
თექვსმეტობითი->ათობითი თექვსმეტობითი->ათობითი • პროგრამული კოდის ფრაგმენტი: for(inti=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; } }
გმადლობთ ყურადღებისთვის!