IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Перевод чисел, Обучение переводу
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской
Реальное имя: Димон

Репутация: -  0  +


Помогите пожалуста..полный завал...
Мне нужно написать обучающую программу по переводу чисел...
Она должна обучать переводу пользователя...
Совсем не знаю как это сделать..
Буду очень благодарен!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Я долго думал, как "обучать", и придумал нечто совсем простое. Но мне кажется, что основная идея тут соблюдена. Программа не дописана, поскольку я решил, что надо спросить, пойдет ли такой стиль.

type
var
a: string;
b,v: LongInt;
d: integer;
c: char;
i,n: integer;
Good: boolean;
Digs: set of char;

function DigVal(c: char): integer;
begin
if c<#58 then DigVal:=Ord©-48 else DigVal:=Ord©-54
end;

begin
Write('Введите основание исходной системы счисления (от 1 до 37): ');
ReadLn(b);
if b>9 then d:=9 else d:=b-1;
WriteLn('В системе с основанием ',b,' для ввода числа вы можете использовать');
Write('цифры от 0 до ',d);
if b=11 then Write(' и латинскую букву A')
else if b>11 then Write(' и латинские буквы от A до ',Chr(b+54));
WriteLn;
if b>10 then WriteLn('при этом буквы имеют такие числовыме значения:');
for i:=10 to b-1 do WriteLn(Chr(i+55),' = ',i);
WriteLn;

Digs:=[];
for c:='0' to Chr(d+48) do Include(Digs,c);
for c:='A' to Chr(b+54) do Include(Digs,c);

repeat
Write('Введите число для перевода: ');
ReadLn(a);
for i:=1 to Length(a) do a[i]:=UpCase(a[i]);
Good:=true;
for i:=1 to Length(a) do Good:=Good and (a[i] in Digs);
if not Good then WriteLn('Вы ввели неправильный символ. Повторите ввод.');
until Good;
n:=Length(a);

WriteLn('Теперь переведем число в машинное представление.');
WriteLn('Для этого воспользуемся формулой:');
WriteLn('m = a[0] + a[1]*b + a[2]*b^2 + a[3]*b^3 + ... + a[n]*b^n');
WriteLn('Здесь символ ^ означает возведение в степень,');
WriteLn('цифры в числе пронумерованы справа налево.');
WriteLn;
WriteLn('В нашем случае это будет выглядеть так:');
for i:=1 to n do begin
if i>1 then Write(' + ');
Write(DigVal(a[n-i+1]));
if i>1 then Write('*',b);
if i>2 then Write('^',i-1);
end;

v:=DigVal(a[1]);
for i:=2 to n do v:=v*b+DigVal(a[i]);

WriteLn;
WriteLn('Произведя вычисления, получим:');
WriteLn(v);
WriteLn('- тут использована десятичная запись.');

WriteLn('Теперь введите основание системы счисления,');
Write('в которую вы хотите преревести ваше число (от 1 до 37): ');
ReadLn(b);
WriteLn;
WriteLn('Перевод будем осуществлять в цикле...');

ReadLn
end.

Естественно, всяких красивостей можно добавить. Типа чистить экран, разноцветность всякая..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
DeIYIoN   Перевод чисел   3.06.2009 21:17
volvo   Переводу чисел КУДА? Каких чисел? Точнее можно изъ…   3.06.2009 21:21
DeIYIoN   Перевод из одной системы счисления в другую...сист…   3.06.2009 21:25
volvo   А теперь - уточни, что именно ты подразумеваешь по…   3.06.2009 21:32
DeIYIoN   Т. е. если конечно я сам понимаю правильно...она д…   3.06.2009 21:40
Lapp   как сделать программу обучающей... :mellow: ... бы…   3.06.2009 22:56
DeIYIoN   Так значит никто мне не поможет....жаль...если не …   3.06.2009 23:00
Lapp   Так значит никто мне не поможет....жаль...если не …   3.06.2009 23:09
DeIYIoN   Так значит никто мне не поможет....жаль...если не …   3.06.2009 23:14
Lapp   Просто я уже отчаялся...Ты можешь для начала посмо…   3.06.2009 23:29
DeIYIoN   Прога для перевода есть...написано правда коряво, …   3.06.2009 23:56
Lapp   Прога для перевода естьДык. Давай..   4.06.2009 0:11
DeIYIoN   коряво потому что писал сам... program schisleni…   4.06.2009 0:14
DeIYIoN   Нашел темы В FAQ про перевод чисел с двумя функция…   5.06.2009 1:06
Lapp   Я долго думал, как "обучать", и придумал…   5.06.2009 19:43
DeIYIoN   А можно как нить переносить текст сразу в Паскаль.…   5.06.2009 21:51
Lapp   А можно как нить переносить текст сразу в Паскаль…   5.06.2009 22:00
DeIYIoN   Нет..может и есть где.. Добавлено через 1 мин. …   5.06.2009 22:01
Lapp   скачай и установи себе FAR http://farmanager.com/d…   5.06.2009 22:07
DeIYIoN   Долго буду смотреть..потому что у меня в Паскале н…   5.06.2009 22:11
DeIYIoN   Долго ещё дописывать..?   5.06.2009 23:40
Lapp   Долго ещё дописывать..?Вот, не знаю, с какой скоро…   6.06.2009 2:28
DeIYIoN   Нет, я так не считаю..извини что надоел уже изрядн…   6.06.2009 16:24
DeIYIoN   program schisleniya; uses crt; var a,c:char; i,t…   9.06.2009 0:08
Lapp   во 2 пункте..нужно ввести число в выбранной систе…   9.06.2009 1:05
DeIYIoN   Прошу прощения! Ошибся немного...запутался...   9.06.2009 1:13
volvo   Ну, так у тебя H описано как LongInt, а когда ввод…   9.06.2009 1:15
DeIYIoN   Lap хочу поблагодарить Вас за помощь и Volvo тоже …   9.06.2009 1:20
Lapp   Lap хочу поблагодарить Вас за помощь и Volvo тоже …   9.06.2009 2:51


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 5.05.2024 2:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name