Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 25.09.2012, 09:17   #1 (permalink)
konstantin.shef
Новичок
 
Регистрация: 25.09.2012
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите написать программу

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

Старый 25.09.2012, 09:17
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

На форуме много схожих тем, можете полистать

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

Старый 25.09.2012, 09:48   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от konstantin.shef Посмотреть сообщение
Здраствуйте, погите пожалуйста нужно написать програму "Дана непустая последовательность натуральных чисел за которой следует 0. Вычеслить сумму тех, из их порядковый номер которых простое число."
lang.jpg
Vladimir_S вне форума   Ответить с цитированием
Старый 26.09.2012, 13:57   #3 (permalink)
konstantin.shef
Новичок
 
Регистрация: 25.09.2012
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Post

Pascal ABC
konstantin.shef вне форума   Ответить с цитированием
Старый 26.09.2012, 14:53   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от konstantin.shef Посмотреть сообщение
Pascal ABC
Ну, тогда-то что...
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 26.09.2012, 16:58   #5 (permalink)
konstantin.shef
Новичок
 
Регистрация: 25.09.2012
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо большое
konstantin.shef вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 26.09.2012, 17:13   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от konstantin.shef Посмотреть сообщение
Спасибо большое
Да не за что...
Vladimir_S вне форума   Ответить с цитированием
Старый 02.10.2012, 08:45   #7 (permalink)
konstantin.shef
Новичок
 
Регистрация: 25.09.2012
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите разобрать програму на паскале

Здраствуйте, погите пожалуйста разобрать програму "Дана непустая последовательность натуральных чисел за которой следует 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.
konstantin.shef вне форума   Ответить с цитированием
Старый 02.10.2012, 10:37   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Открыл старую тему и переместил вопрос туда. (Тема была закрыта, чтобы отвадить любителей подбрасывать свои задачки в чужие темы). Объясняю.
Булева функция 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. Вроде как и всё.
Vladimir_S вне форума   Ответить с цитированием
Старый 02.10.2012, 19:21   #9 (permalink)
konstantin.shef
Новичок
 
Регистрация: 25.09.2012
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

спасибо:tehnari_ru _203:
konstantin.shef вне форума   Ответить с цитированием
Старый 22.10.2012, 16:47   #10 (permalink)
konstantin.shef
Новичок
 
Регистрация: 25.09.2012
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Доброго времени суток.

Препод забраковал прогу, требует без использования функции, как быть?
konstantin.shef вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 10:31.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.