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

Report
სხვადასხვა სისტემაში რიცხვების
გადაყვანის გამოყენებითი პროგრამის
შექმნა
მომხსენებლები:
მარიამ გოგილაშვილი, ბაჩანა ბერაძე, დიმიტრი
ამილახვარი
ხელმძღვანელი:
ნათელა არჩვაძე
ამოცანა:
რიცხვების კონვერტირება :
ათობით და ორობით თვლის სისტემებს შორის.
(მარიამ გოგილაშვილი)
 ათობით და რვაობით თვლის სისტემებს შორის.
(ბაჩანა ბერაძე)
 ათობით და თექვსმეტობით თვლის სისტემებს
შორის.
(დიმიტრი ამილახვარი)

მიზანი:
ცნობილი ალგორითმების საშუალებით
შევქმნათ პროგრამული კოდი და
შესაბამისი 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(int i=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’;

რვაობითი
0
1
2
3
4
5
6
7
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;
ორობითი
000
001
010
011
100
101
110
111
ალტერნატიული პროგრამული კოდი:
int main(){
int number=0;
cout<<“shemoitanet ricxvi”<<endl;
cin>>number;
cout<<oct<<number<<endl;
return 0;
}
რვაობითი->ათობითი
 პროგრამული კოდის ფრაგმენტი:
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;
}
ათობით და თექვსმეტობით სისტემებს
შორის კონვერტირება
ალგორითმი:
 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
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
ორობითი
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
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<<“shemoitanet ricxvi”<<endl;
cin>>number;
cout<<hex<<number<<endl;
return 0;
}
თექვსმეტობითი->ათობითი

პროგრამული კოდის ფრაგმენტი:
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;
}
}
გმადლობთ ყურადღებისთვის!

similar documents