Помощь - Поиск - Пользователи - Календарь
Полная версия: система счисления
Форум «Всё о Паскале» > 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;

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