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

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

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

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


Новичок
*

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

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


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


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

 



- Текстовая версия 20.07.2025 2:39
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"