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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2011, 03:20   #11
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

процедуры и функции часто путают, говорят одно, подразумевают другое. Но если вы на 100% уверены, что это должна быть именно процедура, то делается это просто: объявление переменной "res: Boolean;" из моей функции prime() выносим за пределы функции, функцию превращаем в процедуру, после вызова которой проверяем, что там в res. Фактически так, как у вас с переменными first, second.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 03.12.2011, 03:26   #12
Heming
Форумчанин
 
Аватар для Heming
 
Регистрация: 06.07.2010
Сообщений: 105
По умолчанию

Код:
Program lab6;
var first,second:Boolean;


function prime(v: Integer): Boolean;
var
  d, m: Integer;
  res: Boolean;
begin
  if (v < 3) then prime := (2 = v)
  else begin
    //
    res := true;
    d := 3;
    m := trunc(sqrt(v)) + 1;
    //
    while (res and (d <= m)) do
      if (0 = (v mod d)) then
        res := false
      else
        inc(d, 2);
    //
    prime := res;
  end;
end;

Procedure prostota(var z,b:integer);
begin
first := prime(z);
second := prime(b);
end;
 var x,y,n:integer;
begin
write('Введите n(>4)');
readln(n);
x:=3;
y:=n-x;
while (x<=y) do begin
prostota(x,y);
if (first=True) and (second=True) then
   writeln('n-x=', n-x, ';  x=', x);
  inc(x,2);
end;
  readln;
    end.
Где ошибка, он у меня считает только для 16 и то неправильно
Carpe Diem

Последний раз редактировалось Heming; 03.12.2011 в 03:30.
Heming вне форума Ответить с цитированием
Старый 03.12.2011, 04:30   #13
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

y должен пересчитываться внутри while(), а не один раз снаружи

http://ideone.com/ujn7M

кстати, ваш код считает ровно до той "золотой" половины, после которой наступает симметрия. Не знаю, так было задумано, или случайно получилось )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 03.12.2011, 17:29   #14
Heming
Форумчанин
 
Аватар для Heming
 
Регистрация: 06.07.2010
Сообщений: 105
По умолчанию

Во, точно , спасибо огромное!!!!!
Carpe Diem
Heming вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно к сессии перевести код из бэйсика в phyton keit Помощь студентам 0 29.05.2011 00:50
Перевод программы с Паскаль на С++ Sentteriys Общие вопросы C/C++ 1 16.05.2011 22:40
нужна перевести циклическую сумму с бэйсика на с++ TiNTi Помощь студентам 2 01.05.2011 23:04
Паскаль перевод чисел Darf Помощь студентам 9 27.05.2009 17:46