Pascal. Цикл + Массив
Задача.
Составить программу для проверки утверждения: "Результатами вычислений по формуле sqr(x)+x+17 являются простые числа" при 0=<x=<15. Все результаты выводятся на экран.
Я пробывал делать через массив, но не хочется вписывать 16 значений с 0 до 15, которые строго определены.. А как сделать так что бы выводились сразу эти результаты без ввода значений?
Составить программу для проверки утверждения: "Результатами вычислений по формуле 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 {утверждение неверно};
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
inc(i);
эквивалентно
i:=i+1;
эквивалентно
i:=i+1;
а нельзя обойтись без подпрограмм??
это задание из расчётно-графической работы на темы "циклы"..
я думаю можно как то упростить программу....
это задание из расчётно-графической работы на темы "циклы"..
я думаю можно как то упростить программу....
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Ну, если хотите, то можно усложнить (я все-таки настаиваю на именно такой формулировке) программу и тело функции (надеюсь вы ее нашли в этом разделе) подставить сразу после inc(i).
Во время вычисления функции будет присвоение Prostoe:=true или false.
Т.е. вместо функции у Вас будет просто переменная.
Ну и проверка условия выхода из цикла будет выглядеть как:
(i=16) or not Prostoe;
PS
вообще-то мне не понятно, чем мешают подпрограммы.
Если тема "циклы", то главное, чтобы циклы были!
Когда я учился, у нас приветствовался хороший стиль программирования...
Что-то, видимо, поменялось в этом мире в худшую сторону
Во время вычисления функции будет присвоение Prostoe:=true или false.
Т.е. вместо функции у Вас будет просто переменная.
Ну и проверка условия выхода из цикла будет выглядеть как:
(i=16) or not Prostoe;
PS
вообще-то мне не понятно, чем мешают подпрограммы.
Если тема "циклы", то главное, чтобы циклы были!
Когда я учился, у нас приветствовался хороший стиль программирования...
Что-то, видимо, поменялось в этом мире в худшую сторону

в этом мире нечего не менялось в худшую сторону..
зачем использовать подпрограмму если можно обойтись одним циклом? вообще по моему в любое время приветствуется минимизация программы.. я не учусь на программиста, я звукоинженер.. информатика - это общеобразовательная дисциплина.. мы не нуждаемся в программировании для профессионального роста. С нас не требуют выработки стиля программирования, но очень сильно трубуют понимание.. понимание каждой строчки, каждой буквы в программе и следовательно в моём случае сделать минимум наворотов
спасибо за помощь, я уже сам разобрался.. но всё равно thanx 

зачем использовать подпрограмму если можно обойтись одним циклом? вообще по моему в любое время приветствуется минимизация программы.. я не учусь на программиста, я звукоинженер.. информатика - это общеобразовательная дисциплина.. мы не нуждаемся в программировании для профессионального роста. С нас не требуют выработки стиля программирования, но очень сильно трубуют понимание.. понимание каждой строчки, каждой буквы в программе и следовательно в моём случае сделать минимум наворотов


я решил эту задачу так...
[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 соответственно
[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 соответственно
После do поставить begin, перед readkey - end.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.