По разделам



Задача String 25


Дана строка, изображающая десятичную запись целого положительного числа. Вывести строку, изображающую двоичную запись этого же числа.

Код (C/C++)

#include <iostream>
#include <string>
using namespace std;


void div2(string& s, int& mem) //Деление на 2 числового значения записанного в строке. Вывод строка делёная на 2 и остаток от деления.
{
  int i;
  string s2=s;
  mem=0;
  for (i=0;i<(int)s.length();++i){
    s2[i] = (char)(((((int)(s[i])-48)+10 * mem) / 2)+48);
    if ((((int)(s[i])-48) % 2) == 1){mem = 1;}
    else {mem = 0;}
   };
  if (s2[0]=='0'){ s2.erase(0,1);}
   s.swap(s2);
}

int main()
{
    string s,temp;
    cout << "S:";
    cin >> s;
    string srez;
    int mem=0;
    for (srez="";!(s.empty());){
        div2(s,mem);
        srez+=char(mem+48);
    }
    int i;
    for (i=0;i<(int)srez.length();++i){
        s+=srez[srez.length()-i-1];
        cout <<""<<s[i]<<endl;
    }
    cout <<"="<<s<<endl;
    return 0;
}

Код (Python)

import random

def int2bin(i):
    if i == 0:
        return "0"
    s = ''
    while i:
        if i & 1 == 1:
            s = "1" + s
        else:
            s = "0" + s
        i = int(i/2)
    return s

for i in range(0,5):
    s_integer = str(random.randrange(1,100))
    i_integer = int(s_integer)
    print('{0} = {1:b}'.format(s_integer,i_integer))
    print('{0} = {1}'.format(s_integer,int2bin(i_integer)))
    print()
									

Код (Pascal)

program String5;
var
  i:integer;
  S,Srez:string;
  rez,Num:real;
  mem:byte;
 
Procedure div2(var s:string; var mem:byte); //Деление на 2 числового значения записанного в строке. Вывод строка делёная на 2 и остаток от деления.
 var
  i:integer;
  s2:string;
begin
  mem:=0;
   S2:=S;
  for i:=1 to length(s) do
   begin
    s2[i]:= chr((((ord(s[i])-48)+10*mem) div 2)+48);
    if ((ord(s[i])-48) mod 2) = 1  then mem:=1
    else mem:=0;
   end;
   if s2[1]='0' then delete(s2,1,1);
   s:=s2;
end;
 
 
begin
 Write('S:');
 Readln (S);
 Srez:='';
 while (s<>'') do //делю на 2 остаток от деления запсываю в строку.
  begin
   div2(S,mem);
   Srez:=Srez+chr(mem+48);
  end;
 
//разворачиваю строку
 for i:=1 to Length(Srez) do S:=S+Srez[Length(Srez)-i+1];
 
 Writeln(S);
end.
									




String. Абрамян
String 1 Просмотров: 38
String 2 Просмотров: 25
String 3 Просмотров: 35
String 4 Просмотров: 49
String 5 Просмотров: 32
String 6 Просмотров: 44
String 7 Просмотров: 23
String 8 Просмотров: 18
String 9 Просмотров: 193
String 10 Просмотров: 24
String 11 Просмотров: 38
String 12 Просмотров: 247
String 13 Просмотров: 28
String 14 Просмотров: 37
String 15 Просмотров: 47
String 16 Просмотров: 39
String 17 Просмотров: 38
String 18 Просмотров: 36
String 19 Просмотров: 160
String 20 Просмотров: 23
String 21 Просмотров: 37
String 22 Просмотров: 36
String 23 Просмотров: 60
String 24 Просмотров: 48
String 25 Просмотров: 47
String 26 Просмотров: 53
String 27 Просмотров: 58
String 28 Просмотров: 83
String 29 Просмотров: 56
String 30 Просмотров: 71
String 31 Просмотров: 40
String 32 Просмотров: 84
String 33 Просмотров: 60
String 34 Просмотров: 51
String 35 Просмотров: 49
String 36 Просмотров: 51
String 37 Просмотров: 53
String 38 Просмотров: 48
String 39 Просмотров: 51
String 40 Просмотров: 64
String 41 Просмотров: 52
String 42 Просмотров: 44
String 43 Просмотров: 51
String 44 Просмотров: 46
String 45 Просмотров: 46
String 46 Просмотров: 45
String 47 Просмотров: 36
String 48 Просмотров: 46
String 49 Просмотров: 49
String 50 Просмотров: 35
String 51 Просмотров: 41
String 52 Просмотров: 43
String 53 Просмотров: 30
String 54 Просмотров: 33
String 55 Просмотров: 46
String 56 Просмотров: 32
String 57 Просмотров: 49
String 58 Просмотров: 31
String 59 Просмотров: 24
String 60 Просмотров: 36
String 61 Просмотров: 24
String 62 Просмотров: 21
String 63 Просмотров: 64
String 64 Просмотров: 37
String 65 Просмотров: 45
String 66 Просмотров: 28
String 67 Просмотров: 20
String 68 Просмотров: 15
String 69 Просмотров: 38
String 70 Просмотров: 35

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться