|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.01.2016, 14:53 | #1 |
Пользователь
Регистрация: 23.01.2016
Сообщений: 11
|
Здравствуйте! Совсем недавно начал изучать язык программирования паскаль, знания языка практически нулевые. Но вот на днях захотел написать программу по переводу чисел из двоичной системы счисления в десятичную. (Решая задачи по информатике надоело переводить числа на бумажке из одной системы счисления в другую). Долго упорствовал и сегодня программа была написана. Но на мой взгляд программа очень длинная. Поскольку я не знаю процедур и функций, которые можно использовать в помощь при написании программы, я использовал только операторы присвоения, ввода, вывода, операторы условия (if-else) и цикла (while и repeat). И сейчас мне интересно узнать, как, с помощью только данных операторов можно уменьшить длину программного кода. Если кто-нибудь поможет мне в этом и пришлёт свои варианты написания данной программы буду очень благодарен.
Код:
Последний раз редактировалось Аватар; 23.01.2016 в 15:00. |
23.01.2016, 15:32 | #2 |
Я самый любопытный
Участник клуба
Регистрация: 24.07.2012
Сообщений: 1,950
|
А что так длинно?
Код:
Последний раз редактировалось newerow1989; 23.01.2016 в 15:34. |
23.01.2016, 15:55 | #3 |
Пользователь
Регистрация: 23.01.2016
Сообщений: 11
|
В вашем случае, если я правильно понял, чтобы ввести число необходимо изменять сам код, и завершать алгоритм приходится вводом любых не нужных данных, что мне кажется не очень удобно. И функция (Length) мне тоже ещё не знакома. А мне хочется узнать, как можно написать алгоритм без использования функций и процедур ( я не знаю ни одной функции и процедуры и даже их суть) и при этом получить наименьший по длине код.
|
23.01.2016, 15:55 | #4 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
23.01.2016, 16:04 | #5 |
Пользователь
Регистрация: 23.01.2016
Сообщений: 11
|
Я выложил программу впопыхах, как только она была написана, и не нужные данные ни убрал. Дело в том что сначала я подсчитывал число цифр в числе для того, чтобы использовать полученную информацию в дальнейшем. Мой код получился очень запутанным и длинным, т.к. я ещё мало знаю язык паскаль. Вот я и пришёл на форум узнать можно ли написать код короче, избегая не нужных шагов, не используя при этом ни процедур, ни функций. (они мне ещё незнакомы)
|
23.01.2016, 16:10 | #6 |
Пользователь
Регистрация: 23.01.2016
Сообщений: 11
|
program десятичные_цифры;
var n, m, a, b, b1, b2, q, s, c, c1, k, l, z, s1, e: integer; begin writeln ('Введите число двоичной системы счисления:'); readln (n); if n<2 then begin q:=n; writeln ('Число в десятичной системе счисления ', q); end else begin a:=1; b:=0; while a<=n do begin a:=a*10; b:=b+1; end; m:=1; b1:=b-1; repeat m:=m*10; b1:=b1-1; until b1=0; s:=0; c:=b*1; c1:=c-1; b2:=b*1; repeat k:= n div m; if k mod 2=1 then l:=1 else begin l:=0; end; z:=1; repeat z:=2*z; b2:=b2-1; until b2=1; b:=b-1; b2:=b2*b; s1:=0; s1:=s1+l*z; s:=s1+s; e:=1; if c1=1 then begin e:=1; end else begin repeat e:=e*10; c1:=c1-1; until c1=1; end; c:=c-1; c1:=c*1-1; m:=m-9*e; until m=1; if n mod 2=1 then s:=s+1 else begin s:=s+0; end; writeln ('Число в десятичной системе счисления ',s); end; end. |
23.01.2016, 16:22 | #7 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
23.01.2016, 16:37 | #8 | ||
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Цитата:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
Последний раз редактировалось min@y™; 23.01.2016 в 16:41. |
||
23.01.2016, 16:37 | #9 |
Пользователь
Регистрация: 23.01.2016
Сообщений: 11
|
Если я введу строку в виде '10101011', то это будут строковые данные, а как в дальнейшем перевести это всё в целочисленные я не знаю. Поэтому я и ввёл сразу данные типа integer, и отталкиваясь от того что в этих данных не может быть цифр больше 1, я и писал алгоритм.
|
23.01.2016, 16:46 | #10 |
Пользователь
Регистрация: 23.01.2016
Сообщений: 11
|
[QUOTE=min@y™;1573040]советую для начала лишиться девственности, а уже потом ставить для себя какие-то прикладные задачи. что за блажь такая - писать прогу без функций?
Потому что мне кажется это интересным. И лишним для дальнейшего изучения языка программирования не будет. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевод из двоичной в десятичную систему счисления выдает не правильный результат | pompiduskus | PHP | 0 | 18.09.2013 21:13 |
Перевод из двоичной системы в двоично-десятичную (assembler) | Dolgan | Фриланс | 2 | 27.01.2011 18:01 |
Pascal ABC. Перевод из двоичной в десятичную систему счисления. | ARTEM_KA | Помощь студентам | 4 | 17.11.2010 22:15 |
си++ перевод числа из двоичной системы в десятичную. | Bonne | Помощь студентам | 1 | 13.04.2010 22:07 |
Перевод числа из двоичной системы в десятичную С++ | kontroller | Помощь студентам | 2 | 15.02.2010 20:39 |