18.10.2017, 14:02 [+3 UTC]
в нашей команде: 2 177 чел. | участники онлайн: 4 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: консультации

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.41 (25.02.2017)

Общие новости:
23.02.2017, 09:51

Форум:
18.10.2017, 13:58

Последний вопрос:
18.10.2017, 12:07

Последний ответ:
18.10.2017, 06:25

Последняя рассылка:
18.10.2017, 00:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
03.06.2011, 22:58 »
verona
Большое спасибо! Вы мне очень помогли! [вопрос № 183428, ответ № 267561]

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 300
Вадим Исаев ака sir Henry
Статус: Старший модератор
Рейтинг: 51
mklokov
Статус: 6-й класс
Рейтинг: 23

Перейти к консультации №:
 

Консультация онлайн # 137548
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: Ласточка
Отправлена: 19.05.2008, 18:10
Поступило ответов: 3

Уважаемые эксперты! Помогите, пожалуйста, решить 3 задачи:
1. Составить программу, которая запрашивает числа с клавиатуры, признак окончания ввода 0 и выводит их в обратном порядке (с помощью рекурсии).
2. Составить программу перевода десятичного числа в а) двоичную запись ; б) q-ичную запись. (с помощью рекурсии).
3. Реализовать сортировку простым выбором в виде рекурсивной процедуры.
Заранее огромное спасибо! Swallow.

Состояние: Консультация закрыта

Здравствуйте, Ласточка!

Первые две задачи в приложении, выполняются последовательно.
Удачи!

Приложение:


Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 19.05.2008, 20:05

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 224111 от SHERRY

Здравствуйте, Ласточка!
Помогу чем смогу.
Вот функция, которая вернёт значение целого десятеричного числа в двоичной системе исчисления.

function ToBin(var x: integer): string;
var rez: string;
y: integer;
begin
rez := ''; y := x;
Repeat
if (y mod 2 = 0) then rez := '0' + rez
else rez := '1' + rez;
y := y div 2;
Until y < 1;
ToBin := rez;
end;

Вы знакомы с алгоритмом переведения числа в двоичную систему? Расскажу вкратце - думаю поймёте. Берётся число из десятеричной системы исчисления и делится на 2 до тех пор, пока делимое не станет меньше единицы. При этом, если при делении числа на 2 у нас имеется остаток, то в результат дописывается 1, если остаток равен нулю, то в результат дописывается нуль. По окончании, результирующая строка "переворачивается", т.е. записывается задом наперёд.
По окончании, строка лишние нули слева могут убраться.
Пример. Переведём в двоичную систему число 10
10 / 2 = 5 | 0
5 / 2 = 2.5 | 1
2 / 2 = 1 | 0
1 / 2 = 0.5 | 1
Получается "0101", переворачиваем и видим, что 10 (10) = 1010 (2)
Результат хранится в строковом типе данных.
Теперь с первой задачкой. Её можно бы оформить при помощи динамического списка, но т.к. с динамическими списками я всё ещё консенсус не нашёл, то сделал по другому: считываем числа до тех пор, пока не встретим нуль; пишем их в типизированный файл, а потом просто читаем файл, начиная с конца. Код в приложении.
Удачи!

Приложение:


Консультировал: SHERRY
Дата отправки: 19.05.2008, 20:11

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 224126 от Denisss


Здравствуйте, Ласточка!

В приложении находится решение третьей задачи.

Хочется немного добавить относительно задачи 2а. На самом деле, числа в компьютере и без того хранятся в двоичной форме, так что их особо переводить и не надо - нужно просто вывести эти числа без преобразования их в 10-ную систему счисления.

Пример (основан на примере из ответа эксперта Зенченко Константин Николаевич):

procedure task2a(const a: Integer);
begin
  if
(a <> 0) then
  begin

    task2a(a shr 1);
    write(a and 1);
   end;
end;


Хочу заметить, что этот способ позволяет выводить и отрицательные числа.

Успехов!

Приложение:


Консультировал: Denisss
Дата отправки: 19.05.2008, 21:12

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.15654 сек.

© 2001-2017, Портал RFPRO.RU, Россия
Авторское право: ООО "Мастер-Эксперт Про"
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.41 от 25.02.2017
Бесплатные консультации онлайн