• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите написать программу

konstantin.shef

Ученик
Регистрация
25 Сен 2012
Сообщения
10
Реакции
0
Баллы
0
Помогите написать программу

Здраствуйте, погите пожалуйста нужно написать програму "Дана непустая последовательность натуральных чисел за которой следует 0. Вычеслить сумму тех, из их порядковый номер которых простое число."
 
Здраствуйте, погите пожалуйста нужно написать програму "Дана непустая последовательность натуральных чисел за которой следует 0. Вычеслить сумму тех, из их порядковый номер которых простое число."
:telepat: Lang.webp
 
Ну, тогда-то что...
Код:
VAR
 i,A,S:Integer;
 q:Boolean;

Function Test(J:Integer):Boolean;
Var
 m:Integer;
 b:Boolean;
begin
 m:=(J div 2)+1;
 b:=true;
 Repeat
  Dec(m);
  If (J mod m)=0 then b:=false;
 Until (b=false) or (m=2);
 Test:=b;
end;

Begin
 i:=0;
 S:=0;
 Writeln('Numbers:');
 Repeat
  q:=false;
  Inc(i);
  Write('Next number ');
  If (i<4) or ((i>=4) and (Test(i))) then q:=true;
  If q then write('(prime position ',i,') ');
  Readln(A);
  If (A>0) and q then Inc(S,A);
 Until A=0;
 Writeln;
 Writeln('Sum= ',S);
 Readln
End.
 
Помогите разобрать програму на паскале

Здраствуйте, погите пожалуйста разобрать програму "Дана непустая последовательность натуральных чисел за которой следует 0. Вычеслить сумму тех, из их порядковый номер которых простое число."

VAR
i,A,S:Integer;
q:Boolean;

Function Test(J:Integer):Boolean;
Var
m:Integer;
b:Boolean;
begin
m:=(J div 2)+1;
b:=true;
Repeat
Dec(m);
If (J mod m)=0 then b:=false;
Until (b=false) or (m=2);
Test:=b;
end;

Begin
i:=0;
S:=0;
Writeln('Numbers:');
Repeat
q:=false;
Inc(i);
Write('Next number ');
If (i<4) or ((i>=4) and (Test(i))) then q:=true;
If q then write('(prime position ',i,') ');
Readln(A);
If (A>0) and q then Inc(S,A);
Until A=0;
Writeln;
Writeln('Sum= ',S);
Readln
End.
 
Открыл старую тему и переместил вопрос туда. (Тема была закрыта, чтобы отвадить любителей подбрасывать свои задачки в чужие темы). Объясняю.
Булева функция Test(J) возвращает true, если аргумент (J) - простое число, и false в противном случае. Проверка проводится "в лоб": вычисляются остатки от деления J на все числа, начиная с J/2 и до 2, и если хоть один остаток оказывается нулевым, то проверка прерывается и функция получает значение false.
Дальше - всё просто: искомой сумме и стартовому номеру вводимого числа присваиваются начальные значения S=0 и i=0, дальше организуется цикл ввода Repeat..Until, прерывающийся при введении А=0, в котором проверяется, является ли номер вводимого числа простым. Если является, то булевой переменной-флажку q присваивается значение true, в противном случае - false. Простым считается номер либо меньший 4 (т.е. 1, 2 и 3), либо, если он больше 3, то прошедший тестирование с помощью функции Test(i). Если q=true, то выдается сообщение "prime position", т.е. номер очередного вводимого А - простое число, и это А прибавляется к сумме (на всякий случай там еще "отсекаются" отрицательные числа). Далее осталось только выдать полученную сумму на экран и остановить выполнение программы до нажатия клавиши "Enter", что делается оператором Readln. Вроде как и всё.
 
спасибо:tehnari_ru_203::tehnari_ru_203::tehnari_ru_203:
 
Доброго времени суток.

Препод забраковал прогу, требует без использования функции, как быть?
 
Доброго времени суток.
И Вам его же.
Препод забраковал прогу, требует без использования функции, как быть?
Думать, работать, учиться. Вы выложили задание, я Вам подарил рабочую программу, составленную, на мой вкус, оптимально. А вот уродовать ее ради выполнения маразматичных требований Вашего идиота-"преподавателя", я, извините, отказываюсь. Из принципа. По двум причинам:
1. Вообще считаю, что любые выходы начинающего программиста за рамки "проходили-не проходили" нужно всячески приветствовать и поощрять, а дебильные указули типа "не использовать то-то или это" выхолащивают самую суть программирования, как творческого процесса, и преподов, которые практикуют подобные методы, нужно в детстве расстреливать из рогатки.
2. Переделать программу так, чтобы включить тело функции в основной блок - пара пустяков. Вот и займитесь. Подобные навыки пригодятся прежде всего Вам.
 
Назад
Сверху