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

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

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

> Две задачи на системы счисления
-Chester-
сообщение 4.11.2005 16:28
Сообщение #1


Гость






Друг попросил помочь, а я, мягко говоря, в программировании не силен unsure.gif
Если не трудно, помогите пожалуйста... Не дайте, так сказать ударить в грязь лицом...

ЗАДАЧА 1: Перевести число, представленное в системе счисления с основанием S, в системы счисления с основаниями P, Q, R. Обеспечить корректность ввода числа в системе счисления с основанием S. Перевод чисел реализовать с применением функций. (Разработайте функцию для перевода числа из системы счисления с основанием S в систему счисления с основанием P, а затем, функции для перевода из P в Q и из P в R.) Не использовать стандартных возможностей по вводу/выводу чисел представленных в 2-ой, 8-ой, 16-ой системах счисления. Для представления цифр больших 9 использовать заглавные буквы латинского алфавита.
ЗАДАЧА 2: Вывести на экран в виде таблицы значения чисел из интервала от A до B с шагом C в системах счисления с основаниями S, P, Q, R. Числа A, B, C задаются в системе счисления с основанием S, A>=0, B>A. Обеспечить точность 5 знаков после запятой во всех системах счисления. Разработайте функцию для сложения двух чисел в системе счисления с основанием S.
S=7 P=10 Q=19 R=28
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 9.11.2005 10:03
Сообщение #2


Гость






Да что ты говоришь? А РАЗОБРАТЬСЯ в работе этого пресловутого "универсального" переводчика - не судьба? Только один пример:
Цитата
function simvol(n:byte):char;
begin
  if n in [10..15] then simvol:=chr(n+55)
  else simvol:=chr(n+48);
end;

Всё !!! Однозначный диагноз: правильно работает ТОЛЬКО для систем счисления с основанием <= 16... Я добавлю эту ремарку по ссылке...

Вот, кстати, моя программа, выполняющая нужные тебе действия. И результат проверен на бумаге:
666666 (7) = 117648 (10) = H2H0 (19) ...
const
_symbols: string = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';

function FromDec(n, radix:longint):string;
var
s: string;
begin
s := '';
repeat
s := _symbols[(n mod radix)+1] + s;
n := n div radix;
until n = 0;
FromDec := s;
end;

function ToDec(n:string; radix:longint):longint;
var
m, i: longint;
begin
m := 0;
while n[1] = '0' do delete(n, 1, 1);
for i := 1 to length(n) do
m := m * radix + pos(n[i],_symbols) - 1;
ToDec := m;
end;

function isCorrect(n: string; radix: longint): boolean;
var
bad: boolean;
i: integer;
begin
bad := False;
i := 0;
repeat
inc(i);
bad := (pos(n[i], copy(_symbols, 1, radix)) = 0);
until bad or (i = length(n));
isCorrect := not bad;
end;


var
s: string;

begin
write('(7) : '); readln(s);
if not isCorrect(s, 7) then writeln('error !!!')
else begin
writeln('(19): ', fromdec(todec(s, 7), 19) );
writeln('(28): ', fromdec(todec(s, 7), 28) );
end;
end.
 К началу страницы 
+ Ответить 

Сообщений в этой теме
-Chester-   Две задачи на системы счисления   4.11.2005 16:28
volvo   Это - перевод из одной системы в другую: FAQ: Общ...   4.11.2005 16:58
-Chester-   Volvo Честное слово очень неловко отвлекать вас вс...   5.11.2005 10:27
volvo   -Chester-, в таком случае Вы явно ошиблись адресо...   5.11.2005 10:30
Guest   Ну тогда хоть набросок сделайте...   5.11.2005 13:54
klem4   Наброски Volvo дале тебе в виде ссылок во втором п...   5.11.2005 14:10
Guest   Если не затруднит, проверьте решение ЗАДАЧИ№1: pr...   7.11.2005 15:22
klem4   Вот мне всегда нравились такие посты : проверьте п...   7.11.2005 15:51
volvo   Guest, во-первых, если уж копируешь программу, то ...   7.11.2005 15:59
Guest   Вроде бы все работает, но вот никак не получается ...   7.11.2005 16:46
volvo   Guest, Внимательнее будь! Для того, чтобы пере...   7.11.2005 17:22
Guest   program test; uses crt; var n : string; { ... } ...   7.11.2005 18:08
volvo   Стоп... Не то :nea: FromDec НЕ МОЖЕТ переводить ...   7.11.2005 18:20
Guest   Вот так реализовал проверку корректности ввода (вз...   8.11.2005 11:02
volvo   Guest, а ты не достал уже всех своим "универс...   8.11.2005 11:09
Guest   ССЫЛКА: Универсальный переводчик систем счисления ...   8.11.2005 13:14
Guest   Не судьба видно :dry:   9.11.2005 9:41
volvo   Да что ты говоришь? А РАЗОБРАТЬСЯ в работе этого п...   9.11.2005 10:03
-Chester-   Огромное спасибо за помощь в написании первой прог...   28.11.2005 11:46
Romtek   { Исходное число A(S) умножить на R по правилам S-...   28.11.2005 13:27
Romtek   Шаг в Паскале выполняется так: x := A; while x ...   28.11.2005 13:33
-Chester-   Я все же никак не могу понять, как решить эту зада...   28.11.2005 14:07
Guest   Люююди, отзовитесь пожалуйста на крик о помощи...   28.11.2005 17:22


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

 



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