Народ пожалуйста помогите учу по Дейтелу, для прохождения четвертой главы осталось решить только одну задачу. Уже 2 дня над ней ломаю голову перечитывал главы но я даже не могу начать ее писать, плиз напишите вот условие.
Введите целые данные, содержащие только нули и единицы (т. е. двоичные целые, и напечатайте их десятичный эквивалент. Подсказка. Используйте операции деления и вычисления остатка, чтобы отрывать разряды двоичного числа по одному справа налево. В десятичной системе самая правая цифра имеет позиционное значение 1, следующая цифра слева имеет позиционное значение 10, затем 100, затем 1000 итд в двоичной системе чисел самая правая цифра имеет позиционное значение 1 следующая цифра слева имеет позиционное значение 2, затем 4, затем 8 и т. д. Таким образом, Десятичное число 234 может быть представлено как 4*1+3*10+2*100. Десятичным эквивалентом двоичного 1101 является 1*1+0*2+1*4+1*8 что равняется 13
Другие языки программирования и технологии
Народ помогите осталась одна задача и все.
Разжевываю условие: вводишь целое десятичное число, состоящее из 0 и 1, например x=1011 (тысяча одиннадцать). Программа затем рассматривает его как двоичное: берет последнюю цифру (остаток от деления на 10, т. е. x%10, если не понял), добавляет эту цифру к результату r (r становится 1). Затем берет предпоследнюю цифру (т. е. сначала делит x на 10 нацело, а потом берет последнюю цифру), умножает на 2 и прибавляет к r (теперь уже 3). Затем - следующую цифру, умножает уже на 4 и прибавляет к r (все еще 3, там ведь был 0). И самую старшую цифру - уже умножив на 8. Итого 1011(2)=11(10).
На всякий случай разжую еще подробнее: все надо делать в цикле, а коэфициенты - степени 2 держать в отдельной переменной (ее умножать на 2 на каждой итерации).
На всякий случай разжую еще подробнее: все надо делать в цикле, а коэфициенты - степени 2 держать в отдельной переменной (ее умножать на 2 на каждой итерации).
а вот на Паскале
program cel;
uses crt;
var a,n,d:integer;
Str:string;
begin
clrscr;
writeln('Перевод числа из двоичной в десятичную СС ');
writeln('-------------------------------------------');
Write('Число в двоичной С2--> '); ReadLn(Str);
d := 0;
for n := 1 to Length(Str) do
if Str[N] = #48 then D := D shl 1 else
if Str[N] = #49 then D := D shl 1 + 1 else
begin WriteLn('число не двоичное'); Halt; end;
WriteLn('число в 10 системе= ',d);
writeln(' конец задачи');
readln;
end.
program cel;
uses crt;
var a,n,d:integer;
Str:string;
begin
clrscr;
writeln('Перевод числа из двоичной в десятичную СС ');
writeln('-------------------------------------------');
Write('Число в двоичной С2--> '); ReadLn(Str);
d := 0;
for n := 1 to Length(Str) do
if Str[N] = #48 then D := D shl 1 else
if Str[N] = #49 then D := D shl 1 + 1 else
begin WriteLn('число не двоичное'); Halt; end;
WriteLn('число в 10 системе= ',d);
writeln(' конец задачи');
readln;
end.
Перевод из 2-ой сс в 10-ую сс


Похожие вопросы
- Пожалуйста, народ, помогите как можно быстрее решить хотя бы одну из задач Турбо Паскаля.
- Народ! Помогите решить задачи на языке паскаль. Очень срочно надо! Буду рада решению хотя бы одной из списка=)
- Народ! Помогите, не могу решить задачу по С++
- Pascal. Помогите пожалуйста решить задачу в паскале !
- Народ помогите пожалуйста, не могу решить задачу на С++
- помогите пожалуйста решить задачу по работе компьютера!
- Помогите пожалуйста разобрать задачу по програмированию на C++.
- Помогите с решение задачи по информатике!!!
- Помогите до решать задачу на паскале
- Помочь с реализацией задачи на С++
#include
using namespace std;
#include
int main()
{
setlocale(LC_ALL, "rus");
long int dvoichni;
long int result = 0;
cout << "Введите двоичное число";
cin >> dvoichni;
while (dvoichni != 0) {
result <<= 1; // (умножение на 2)
result | = ((binary % 10) == 1? 1 : 0);
dvoichni /= 10;
}
cout << "количество" << result << endl;
return 0;
}
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
int x = 1011, r = 0, d = 1;
cout << "Введите число" << endl;
cout << "==> ";
while (x)
{
r += (x % 2)*d;
x = x / 2;
d = d * 10;
}
cout << r;
cout << endl;
system("pause");
return 0;
}