Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2014, 15:58   #1
Алексей 1994
 
Регистрация: 11.02.2014
Сообщений: 5
По умолчанию Подпрограммы!!!

Здравствуйте уважаемый программисты. Помогите написать текст программы с использованием подпрограмм функции.
Вот сама задача: Найти сумму целых чисел из промежутка от 1 до 200, у которых ровно 5 делителей.
Её текст:
Код:
var i,j,s,k:integer;
begin
writeln('Числа от 1 до 200, имеющие 5 делителей:');
s:=0;
for i:=1 to 200 do
begin
k:=0;
for j:=1 to i do
if i mod j=0 then k:=k+1;
if k=5 then
begin
write(i,' ');
s:=s+i;
end;
end;
writeln;
write('Их сумма=',s);
readln
end.
Спасибо за внимание!

Последний раз редактировалось Stilet; 24.02.2014 в 16:46.
Алексей 1994 вне форума Ответить с цитированием
Старый 24.02.2014, 20:50   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Несколько замечаний:
1. Не надо перебирать все числа для поиска делителей.
Достаточно перебрать до - i Div 2 (в соотвтетсвии с обозначением Ваших переменных)
2. У любого числа есть два делителя всегда: 1 и само число.
Так что надо искать числа с тремя другими делителями.
3. Можно, используя Ваш код, написать функцию, которая возвращает число делителей (ищем только положительные делители).
Код:
function NDel(n : word) : word;
var i, k : word;
begin
   k := 0;
   for i:=2 to n Div 2 do
      if ((n mod i) = 0) then k := k + 1;
   if n = 1 then
      Ndel := 1
   else
      NDel := k + 2; {учитываем 1 и само число}
end;

Как-то так, ...
PS: Для чисел указанного диапазона только два числа имеют ровно 5 делителей: 16 и 81. Интересно...
Как-то так, ...

Последний раз редактировалось ViktorR; 24.02.2014 в 21:08.
ViktorR вне форума Ответить с цитированием
Старый 25.02.2014, 10:52   #3
Алексей 1994
 
Регистрация: 11.02.2014
Сообщений: 5
По умолчанию Не работает!

Здравствуйте. Предложенный код программы не работает.
Алексей 1994 вне форума Ответить с цитированием
Старый 25.02.2014, 11:51   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Алексей 1994 Посмотреть сообщение
Здравствуйте.
Здравствуйте!
Цитата:
Сообщение от Алексей 1994 Посмотреть сообщение
Предложенный код программы не работает.
Ну и где подтверждение этому?!!!! Пустословие!


на мой взгляд, всё отлично работает:
Код:
function NDel(n : word) : word;
var i, k : word;
begin
   k := 0;
   for i:=2 to n Div 2 do
      if ((n mod i) = 0) then k := k + 1;
   if n = 1 then
      Ndel := 1
   else
      NDel := k + 2; {учитываем 1 и само число}
end;



var i,s:integer;
begin
  writeln('Числа от 1 до 200, имеющие 5 делителей:');
  s:=0;
  for i:=1 to 200 do
    if NDel(i)=5 then begin
      Write(i,' '); 
      s := s + i;
    end;
  WriteLn;
  writeLn('Их сумма=',s);
  readln
end.

p.s. а вообще-то, если Вам кто-то помогает, выкладывает код, то в ответ принято благодарить, говорить спасибо, а не писать ересь...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.02.2014, 13:36   #5
Алексей 1994
 
Регистрация: 11.02.2014
Сообщений: 5
По умолчанию Прошу прощения!

Спасибо вам! Прошу прощения за мои манеры, забылся.
Алексей 1994 вне форума Ответить с цитированием
Старый 25.02.2014, 13:44   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Алексей 1994 Посмотреть сообщение
Спасибо вам! Прошу прощения за мои манеры, забылся.
Пожалуйста!
Да это не мне спасибо, а ViktorR, я же его функцию взял без малейших изменений.
А по поводу забывчивости - ничего страшного, бывает!
Просто в следущий раз не забывайте!

Успехов.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подпрограммы nolx Помощь студентам 8 15.02.2011 18:08
подпрограммы!? nolx Помощь студентам 0 31.05.2010 18:53
Подпрограммы-процедуры, подпрограммы-функции в Pascal rishikesh Помощь студентам 19 18.05.2010 23:05
подпрограммы @lenk@ Помощь студентам 1 04.03.2010 23:36