Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: Проблема с функцией на Pascal
1
  1  Дробышев Андрей Валентинович, 10 ноября 2012 г. 11:56:59
      Мне не совсем ясно, почему, но после вот этого
...
else begin
b:=false;
for i:=2 to round(sqrt(n)) do
b:=b or ((n mod i)=0);
sim:=not(b);
...

все заработало.
  2  Дробышев Андрей Валентинович, 10 ноября 2012 г. 11:46:50
      Точно, прошу прощения: в 5 строке снизу b вместо sim ( b:=b or ((n mod i)=0 )
В программе все верно написано однако ж не работает.
  3  Mikhael, 10 ноября 2012 г. 9:38:40
      * учитывая, что round(sqrt(n)) >=2.
  4  Mikhael, 10 ноября 2012 г. 9:32:26
      думаю? если объявить локальную переменную с именем отличным от sim, то программа заработает...
а в данной функуии вы некорректно возращаете значение функции.
Если я правильно понял, то
если (n <> 1) and (n<>2)and(n<>3), то выполняется всего ОДНА итеррация цикла for, в которой вычисляется возращаемое значение функции.Строка кода sim:=not(b); вообще не выполняется
  5  Дробышев Андрей Валентинович, 09 ноября 2012 г. 22:23:54
      Господа, не хотелось бы сойти за дегенерата, но я точно не понимаю, что к чему. Имеется значит функция, призванная определять, является ли данное число простым. Работать корректно наотрез отказывается. При этом если тот же алгоритм записать как отдельную программу, все прекрасно работает.

function sim(n:word):boolean;
var
i:word;
b:boolean;
begin
case n of
1:sim:=false;
2,3:sim:=true;
else begin
for i:=2 to round(sqrt(n)) do
sim:=b or ((n mod i)=0);
sim:=not(b);
end;
end;
end;
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru