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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2013, 16:46   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ладно.
раз "Очень сложно("
То вот вам вариант решения (как я написал в пост #9)
Код:
const
  PerfectNumbers : array[1..5] of integer = (6, 28, 496, 8128, 33550336);
var N: integer;
  i, NearPerfect : integer;
begin
  WriteLn('Введите ваше число:');
  Readln(n);
  NearPerfect := 6; {считаем, что ближайшее число равно 6}
  for i:=2 to 5 do
    if abs(N-PerfectNumbers[i])<abs(N-NearPerfect) then NearPerfect := PerfectNumbers[i];
  WriteLn('Ближайшее совершенное число равно: ', NearPerfect);
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.11.2013, 16:49   #12
Руслан56
Пользователь
 
Регистрация: 07.10.2013
Сообщений: 30
По умолчанию

Как это реализовать в программе я не знаю.
Код:
program pro3;
var
  sum: longint;
  a, i: integer;
procedure max(a: integer; var sum: longint);
var
  i: byte;
begin
  for i := 1 to a div 2 do if a mod i = 0  then sum := sum + i;
end;
begin
  writeln('Введите число');
  readln(a);
  max(a, sum);
  writeln('Совершенное число = ', sum);
end.
Сдавал данную, но она работает не верно.
Руслан56 вне форума Ответить с цитированием
Старый 21.11.2013, 17:12   #13
Unique_Maks
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 89
По умолчанию

вот как бы определяет совершенное ли число, которое было введено с клавы
Код:
var
  sum: longint;
  a, i: integer;

function per(a: integer; var sum: longint): string;
var
  i: byte;
begin
  for i := 1 to a div 2 do
    if a mod i = 0  then
      sum := sum + i;
  if(sum = a) then
    result := 'Совершенное число'
  else
    result := 'Не совершенное'
end;

begin
  while True do
  begin
    writeln('Введите число');
    readln(a);
    writeln(per(a, sum));
    sum := 0;
  end;
end.
там бесконечный цикл ток для отладки впилил)
так быстренько накидал...sum там локальной сделать еще можно

Последний раз редактировалось Unique_Maks; 21.11.2013 в 17:20.
Unique_Maks вне форума Ответить с цитированием
Старый 21.11.2013, 18:52   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
      sum := sum + i;
все хорошо. Только иницилизировать переменную sum кто будет?!!

иницилизировать переменную нужно ДО использования
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.11.2013, 18:56   #15
Руслан56
Пользователь
 
Регистрация: 07.10.2013
Сообщений: 30
По умолчанию

Программа просто высчитывает совершенное число или нет. А как найти ближайшее к определенному числу?
Руслан56 вне форума Ответить с цитированием
Старый 21.11.2013, 19:14   #16
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
во множество имхо не влезет!
Совершенно верно! Опять же ограничение в 256 элементов..
Цитата:
ладно.
раз "Очень сложно("
То вот вам вариант решения (как я написал в пост #9)
Маленькая проблемка :
Цитата:
Массивы не разрешают использовать
Цитата:
иницилизировать переменную нужно ДО использования
Улыбнуло
Poma][a вне форума Ответить с цитированием
Старый 21.11.2013, 20:11   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Массивы не разрешают использовать
тоже мне, проблема!

Код:
function PerfectNumbers(ii : integer) : integer;
begin
   case ii of
     1 :  PerfectNumbers := 6;
     2 :  PerfectNumbers := 28;
     3 :  PerfectNumbers := 496;
     4 :  PerfectNumbers := 8128;
     5 :  PerfectNumbers := 33550336;
  end;
end;

var N: integer;
  i, NearPerfect : integer;
begin
  WriteLn('Введите ваше число:');
  Readln(n);
  NearPerfect := 6; {считаем, что ближайшее число равно 6}
  for i:=2 to 5 do
    if abs(N-PerfectNumbers(i)<abs(N-NearPerfect) then NearPerfect := PerfectNumbers(i);
  WriteLn('Ближайшее совершенное число равно: ', NearPerfect);
end.
так можно?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.11.2013, 22:41   #18
Руслан56
Пользователь
 
Регистрация: 07.10.2013
Сообщений: 30
По умолчанию

Оператор выбора нельзя.
Руслан56 вне форума Ответить с цитированием
Старый 21.11.2013, 22:43   #19
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Оператор выбора нельзя.
Об этом нужно говорит раньше..
Фигня-вопрос :
Код:
if ii = 1 then PerfectNumbers := 6
else if ii = 2 then PerfectNumbers := 28
else if ii = 3 then PerfectNumbers := 496
else if ii = 4 then PerfectNumbers := 8128
else if ii = 5 then PerfectNumbers := 33550336;
Poma][a вне форума Ответить с цитированием
Старый 22.11.2013, 12:54   #20
Руслан56
Пользователь
 
Регистрация: 07.10.2013
Сообщений: 30
По умолчанию

Код:
 for i:=2 to 5 do
    if abs(N-PerfectNumbers(i)<abs(N-NearPerfect)
     then NearPerfect := PerfectNumbers(i);
  WriteLn('Ближайшее совершенное число равно: ', NearPerfect);
end.
В данном месте кода пишет неверное выражение
Руслан56 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphy 7 Массив. Нахождение ближайшего числа. Intripio Помощь студентам 2 02.04.2012 13:36
нахождение числа, ближайшего к максимальному/среднему/минимальному Fantom.as Помощь студентам 5 14.11.2010 08:56
Определение совершенного числа из последовательности цифр JaEvg Помощь студентам 0 08.10.2010 07:45
вывод слагаемых совершенного числа fs444 Общие вопросы C/C++ 4 24.03.2010 23:04
Определение совершенного числа (Delphi) Lew27 Помощь студентам 1 26.04.2009 23:40