Помощь - Поиск - Пользователи - Календарь
Полная версия: система счисления
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Pautina
Условие задачи состоит в следующем: Найти все простые числа. не превосходящие заданного числа n>0 и записать их в 16-ой системе счисления.

Написала программу
uses crt;
var
n,i,k,y, pdel:integer;
p, Code : Integer;
St,s: string;

Begin
clrscr;
pdel:=0;
repeat
Write('Введите n: ');
Readln(st);
Val(St, p, Code);
if Code<>0 then Writeln('Неправильный ввод! Ошибка в позиции: ',Code);
until Code = 0;
n:=p;
for i:=2 to n do begin
for k:=2 to i do
if i mod k = 0 then pdel:=pdel+1;
if pdel=1 then Write(i,' ');
s:=’ ‘;
y:=i mod 16;
case y of
0..9 : s:=Str(y)+s;
10: s:='A'+s;
11: s:='B'+s;
12: s:='C'+s;
13: s:='D'+s;
14: s:='E'+s;
15: s:='F'+s;
end;
i:=i div 16;
if i=0 then break;
writeln('vashe chislo v 16 ss = ',s);
pdel:=0;
end;
Writeln;
End.




простые числа работают, а вот с перевод не идет. Подскажите,что я делаю не так.
Заранее огромное спасибо!
volvo
for i:=2 to n do begin

pdel := 0;
for k:=2 to i do
if i mod k = 0 then pdel:=pdel+1;

if pdel=1 then begin
Write(i,' ');
writeln('vashe chislo v 16 ss = ', FromDec(i, 16));
end;

Функция FromDec взята здесь: Общие вопросы по математике.

(у тебя программа не компилируется, например, что такое Str(y) ???, и почему изменяется i внутри цикла по i ???)
Pautina
сделала все, как вы написали.. прога компилируется, но из одной системы в другую так и не переводит.. в чем причина?
volvo
Кто сказал, что НЕ переводит? Все переводит:
Pautina
СПАСИБО ОГРОМНОЕ! smile.gif

Добавлено через 7 мин.
Скажите, а как организовать вывод результата в виде таблицы?

Добавлено через 36 сек.
Скажите, а как организовать вывод результата в виде таблицы?
volvo
Меняй свой цикл по i вот на это:

for i := 1 to 43 do write('-'); writeln;
writeln('|', '10':20, '|', '16':20, '|');
for i := 1 to 43 do write('-'); writeln;

for i:=2 to n do begin
pdel:=0;
for k:=2 to i do
if i mod k=0 then pdel:=pdel+1;
if pdel=1 then writeln('|', i:20, '|', fromdec(i, 16):20, '|');
end;
for i := 1 to 43 do write('-'); writeln;

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.