Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2010, 00:20   #1
Hikari
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 13
Печаль Паскаль_простые числа

доброй ночи!
помогите пожалуйста исправить ошибку в коде для задачи:

Перечислить все пары простых чисел-близнецов, не превосходящих заданного числа n, троичные представления которых получаются друг из друга записью цифр в обратном по-рядке (первая такая пара - это 5 и 7).

вот сам код:

Код:
program zadacha_1;
uses crt;
type chisla=array[1..100]of integer;
     mas_ch=array[1..100] of string;

var k,n:integer;
    sim:chisla;
    sim_tr,s_sim:mas_ch;


procedure resheto(n:integer; var sim:chisla); {поиск простых чисел с применением решета Эратосфена}
var i,j,p:integer;
begin
  p:=1;
  for i:=1 to n do
   sim[i]:=i;

  for i:=1 to n do
   begin
     if sim[i]<>0 then inc(p);
     j:=i;
     while j<=n do
       if (sim[j] mod p = 0) and (sim[j]>p) then
                                            begin
                                              sim[j]:=0;
                                              inc(j);
                                            end
                                          else inc(j);
   end;
  sim[1]:=0;

  writeln('Sinmple numbers:');
  for i:=1 to n do
   if sim[i]<>0 then write(sim[i],' ');
end;


procedure trancf(n:integer; sim:chisla; var sim_tr:mas_ch; var k:integer);
{перевод найденных простых чисел в троичную систему}
var i,x,num:integer;
    st,r:string;
begin
 k:=1;
 for i:=1 to n do
  begin
   if sim[i]<>0 then
   begin
     num:=sim[i];
     r:='';
     repeat
       x:=num mod 3;
       str(x,st);
       r:=r+st;
       num:=num div 3;
       st:='';
     until num=0;

     sim_tr[k]:=r;
     inc(k);

   end;
  end;
  writeln('k=', k);
end;


procedure revers(sim_tr:mas_ch; k:integer);
{формирование массива чисел с обратным троичным представлением и поиск пар-близнецов по условию задачи}
var i,j,l,g:integer;
    old, new:string;

begin
   for i:=1 to k do
    begin
      old:=sim_tr[i];
      new:=s_sim[i];
      l:=length(old);
      for j:=1 to l do
       new[j]:=old[l-j];
    end;

 writeln;
 writeln('Twins simple numbers: ');
 for i:=1 to k do
  for g:=1 to k do
   if s_sim[i]=sim_tr[g] then writeln(s_sim[i], '-' ,sim_tr[g]);
end;


BEGIN
 clrscr;
 write('n>13: ');
 readln(n);
 resheto(n,sim);
 trancf(n,sim,sim_tr,k);
 revers(sim_tr,k);
 readkey;
END.
ошибку выдает в процедуре revers:
переполнение стека(202), в первый цикл не заходит.
подключение директивы не помогло.

заранее большое спасибо))

Последний раз редактировалось Stilet; 04.03.2010 в 08:45.
Hikari вне форума Ответить с цитированием
Старый 04.03.2010, 01:17   #2
Stepler
Форумчанин
 
Аватар для Stepler
 
Регистрация: 03.02.2008
Сообщений: 213
По умолчанию

Учимся работать с компилятором в режиме отладки, ошибки самому нужно учится исправлять!

И так начнем
F7 - пошаговая трассировка с заходом в подпрограммы
F8 - Пошаговая трассировка без захода в подпрограммы

Когда часть кода прошла отладку и работает так как нужно в следущий раз можно воспользоватся брэкпоинтом (Alt+F8), ставим брэкпоинт в том месте где нужно остановить выполнения программы и нужно снова пошагово начать смотреть.

Debug->Watch - вызвать окно для добавления переменних за которыми нужно следить.
Пишу программы на заказ, контакты под аватаром!
Отзывы тут
Stepler вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вводим два числа, получить все меньшие n натуральные числа, квадрат суммы цифр которых равен m Sparky Помощь студентам 2 22.11.2009 21:59
Как числа в двоичном виде вывести в столбик по 4 числа? Equalizer Общие вопросы C/C++ 11 27.09.2009 14:15
2 столбец для того, чтобы автоматически создавались числа, которые позволяли уравнивать числа в 3 столбце ppv Microsoft Office Excel 37 05.08.2009 21:19
Даны натуральные числа m,n. Посчитать сумму m последнего числа n. лялька Паскаль, Turbo Pascal, PascalABC.NET 6 25.12.2008 15:22
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49