Pascal. Цикл + Массив

Ответить
keywanda
Сообщения: 10
Зарегистрирован: 04 дек 2008, 10:51

Задача.

Составить программу для проверки утверждения: "Результатами вычислений по формуле sqr(x)+x+17 являются простые числа" при 0=<x=<15. Все результаты выводятся на экран.

Я пробывал делать через массив, но не хочется вписывать 16 значений с 0 до 15, которые строго определены.. А как сделать так что бы выводились сразу эти результаты без ввода значений?
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Дык, цикл просто. Без массивов то есть.

Код: Выделить всё


function Prostoe(x):boolean;
begin
   {тыщу раз обсуждалась тут эта функция}
end;

i:=0;
repeat
  F:=sqr(i)+i+17;
  inc(i);
until (i=16) or (not Prostoe(F));

if i=16 then {утверждение верно} else {утверждение неверно};

keywanda
Сообщения: 10
Зарегистрирован: 04 дек 2008, 10:51

что такое inc(i) ?
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

inc(i);

эквивалентно

i:=i+1;
keywanda
Сообщения: 10
Зарегистрирован: 04 дек 2008, 10:51

а нельзя обойтись без подпрограмм??
это задание из расчётно-графической работы на темы "циклы"..
я думаю можно как то упростить программу....
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Ну, если хотите, то можно усложнить (я все-таки настаиваю на именно такой формулировке) программу и тело функции (надеюсь вы ее нашли в этом разделе) подставить сразу после inc(i).
Во время вычисления функции будет присвоение Prostoe:=true или false.
Т.е. вместо функции у Вас будет просто переменная.
Ну и проверка условия выхода из цикла будет выглядеть как:
(i=16) or not Prostoe;

PS
вообще-то мне не понятно, чем мешают подпрограммы.
Если тема "циклы", то главное, чтобы циклы были!
Когда я учился, у нас приветствовался хороший стиль программирования...
Что-то, видимо, поменялось в этом мире в худшую сторону :(
keywanda
Сообщения: 10
Зарегистрирован: 04 дек 2008, 10:51

в этом мире нечего не менялось в худшую сторону.. ;)
зачем использовать подпрограмму если можно обойтись одним циклом? вообще по моему в любое время приветствуется минимизация программы.. я не учусь на программиста, я звукоинженер.. информатика - это общеобразовательная дисциплина.. мы не нуждаемся в программировании для профессионального роста. С нас не требуют выработки стиля программирования, но очень сильно трубуют понимание.. понимание каждой строчки, каждой буквы в программе и следовательно в моём случае сделать минимум наворотов :cool: спасибо за помощь, я уже сам разобрался.. но всё равно thanx ;)
keywanda
Сообщения: 10
Зарегистрирован: 04 дек 2008, 10:51

я решил эту задачу так...

[HTML]begin
for x:=0 to 15 do y:=sqr(x)+x+17;
k:=0;
for x:=2 to y div 2 do
if y mod x=0 then k:=k+1;
if k=0 then writeln('результат ',y);
readkey
end.[/HTML]

я просчитываю результаты от 0 до 15 и в итоге мне выводит только один результат..
257. (т.е. sqr(15)+15+17)

а как вывести ВСЕ результаты???
т.е. 17, 19, 23, 29 ... 257
при 0, 1, 2, 3 ... 15 соответственно
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

После do поставить begin, перед readkey - end.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить