Помогите разобраться. Всё сделано в паскале.
var i,choice:integer;
firstTen,secondTen, rez, rezTwo, st_10:real;
first,second:string;
begin
i := 2;
1:
write('Введите двоичное число');
readln(first);
for i := 1 to length(first) do begin
if ((first[i] <> '1')and(first[i] <> '0')) then begin
clrscr;
writeln('введено некорректное число ');
goto 1
end
end;
firstTen := 0; {ОТСЮДА НАЧИНАЕТСЯ ПЕРЕВОД}
for i := 1 to length(first) do
if (first[i] = '1') then
firstTen := firstTen + power(2, length(first)-i);
Другие языки программирования и технологии
Добрый вечер. Преподаватель задал разобраться каким образом с помощью функций производится перевод в десятичную систему.
Редкостно безграмотно переводится. Представленный кусок программы - абсолютный говнокод, достойный публикации на сайте govnokod.ru
Вадим Крылов
Но при этом он перевод абсолютно правильно.
Vitali Mantei
Да ладно уж вам, разве что цикл запустить в обратном порядке - а так читабельный алгоритм - который показывает принцип перевода bin2dex. Что еще от школьников требовать ?
var i,choice:integer;
firstTen,secondTen, rez, rezTwo, st_10:real;
first,second:string;
begin
i := 2;
1:
write('Введите двоичное число');
readln(first);
for i := 1 to length(first) do begin /от 1 до длины строки введённой делаем проверку
if ((first[i] <> '1')and(first[i] <> '0')) then begin /если элемент от 1 до длины строки не равен 1 и не равен 0 то очищаем экран и выводим что введено некорректное число и заставляем перейти к записи строки снова, потому что ввели не правильно. если ввели правильно то переходим дальше
clrscr;
writeln('введено некорректное число ');
goto 1
end
end;
firstTen := 0; {ОТСЮДА НАЧИНАЕТСЯ ПЕРЕВОД} здесь начинается перевод потому что проверку введённая строка прошла
for i := 1 to length(first) do опять начинаем проверять с 1 до длины строки (сколько символов в ней)
if (first[i] = '1') then если символ равен 1 то
firstTen := firstTen + power(2, length(first)-i); то к строке прибавляем прошлое ее состояние и с помощью функции повер а то есть возведение в степень, возводим каждые элемент с конца в степень двойки то-есть если длина 5 символов то в строке first символ 5-1 возводим в степень 2
firstTen,secondTen, rez, rezTwo, st_10:real;
first,second:string;
begin
i := 2;
1:
write('Введите двоичное число');
readln(first);
for i := 1 to length(first) do begin /от 1 до длины строки введённой делаем проверку
if ((first[i] <> '1')and(first[i] <> '0')) then begin /если элемент от 1 до длины строки не равен 1 и не равен 0 то очищаем экран и выводим что введено некорректное число и заставляем перейти к записи строки снова, потому что ввели не правильно. если ввели правильно то переходим дальше
clrscr;
writeln('введено некорректное число ');
goto 1
end
end;
firstTen := 0; {ОТСЮДА НАЧИНАЕТСЯ ПЕРЕВОД} здесь начинается перевод потому что проверку введённая строка прошла
for i := 1 to length(first) do опять начинаем проверять с 1 до длины строки (сколько символов в ней)
if (first[i] = '1') then если символ равен 1 то
firstTen := firstTen + power(2, length(first)-i); то к строке прибавляем прошлое ее состояние и с помощью функции повер а то есть возведение в степень, возводим каждые элемент с конца в степень двойки то-есть если длина 5 символов то в строке first символ 5-1 возводим в степень 2
Вадим Крылов
Эм. Но я просто просил разъяснить как это сделано уже в моей программе.
1011 = 2^3+ 2^1+ 2^0 - если есть 1 то 2 возводится в степень порядка числа (начиная справа на лево, отсчет порядка начинается с нуля) если 0 - то пропускается
Похожие вопросы
- Перевод из десятичной системы в четверичную
- Перевод из десятичной в двоичную систему счисления.
- Число 10 (в десятичной системе счисления) в двоичной системе счисления имеет вид???
- Двоично-десятичная система
- Переведите число 111 из десятичной системы счисления в двоичную систему счисления.
- Помогите перевести из десятичной системы 135,135 в семеричную. Заранее спасибо.
- двоично-десятичная система счисления
- Составьте программу на языке Паскаль! Нужна программа по переводу чисел из десятичной системы счисления в любую другую.
- PASCAL. В чем отличие процедур от функций. И любую ли задачу можно решить с помощью функции?
- Для чего нужна конвертация из десятичной системы в двоичную?