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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2007, 01:08   #1
Artem1987
Пользователь
 
Регистрация: 17.10.2007
Сообщений: 15
По умолчанию 3 максимума из N чисел

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


program summax;
var
a : array [1..250] of integer;
i, n, sum : integer;
m1, m2, m3 : integer;
begin
m1:=a[1];
sum:=0;
begin
write('введите количество чисел ');
readln(n);
for i:=1 to n do
readln(a[i]);
end;
begin
write('исходный массив');
for i:=1 to n do
write(a[i]:5);
readln;
end;
begin
for i:=1 to n do
if m1<a[i] then
m1:=a[i];
writeln('max=',m1); {вывод максимума}
end;
begin {начало определения следующих максимумов}
m2:=(m1-1);
if m2=a[i] then m2:=m2 else
while m2<>a[i] do m2:=(m2-1);
end;
begin
m3:=(m2-1);
if m3=a[i] then m3:=m3 else
while m3<>a[i] do m3:=(m3-1);
end;
begin
sum:=m1+m2+m3;
writeln('сумма=',sum);
end;
readln;
end.
Artem1987 вне форума Ответить с цитированием
Старый 23.12.2007, 02:34   #2
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Цитата:
Смысл таков: находим максимум и после начинаем отнимать от него 1,пока не упремся во 2-й максимум и т.д
Уникальный алгоритм.. А если массив будет иметь допустим такие значения:
1 2 3 1 1 1 1 999999 1 1 2 3 1 2 3 2 1 0

Сколько твоя программа будет отнимать пока с 999999 дойдёт до 3 ?
Я думаю много... а точнее 999996 раз прогонится цикл.

Вот один из способов нахождения суммы трёх максимумомов....
ЗЫ: Заполнять массив руками, это очень плохо... ибо долго Я пользую рандом.

Код:
program Project1;

{$APPTYPE CONSOLE}

var
    a : array [1..250] of integer;
    x, z, n, i, Max, Sum :integer;

begin
{Заполним и ввыведем массив на экран}
Write('Kol-vo elementov massiva: '); Readln (n);
  Randomize; Writeln ('Massiv: ');
    For i := 1 to n do begin a[i] := Random(10);
      Write(a[i], ' '); End;

Writeln;

{Найдём сумму трёх наибольших элементов}
z := 1;
For x := 1 to 3 do begin Max := a[1];
  For i := 2 to n do begin
    if a[i] > max then begin max := a[i]; z := i;End; End;
      Sum := Sum + max;
        a[z] := 0; z := 1
End;

{Выведем немного изменённый массив(можно убрать, я просто смотрел как работает) и сумму}
For i := 1 to n do Write (a[i], ' '); Writeln;
 Writeln (sum);
   Readln;
end.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Последний раз редактировалось Карась; 23.12.2007 в 02:45.
Карась вне форума Ответить с цитированием
Старый 23.12.2007, 09:08   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Можно отсортировать массив по убыванию и вывести три первых елемента. Примерно так.
Код:
program tri_max;
uses crt;
var a:array[1..50] of integer;
n,i,x,j:integer;
begin
clrscr;
write('n=');readln(n);
randomize;
for i:=1 to n do
  begin
   a[i]:=random(10);
   write(a[i],' ');
  end;
readln;
for i:=1 to n-1 do
for j:=1 to n-1 do
if a[j]<a[j+1] then
   begin
      x:=a[j];a[j]:=a[j+1];a[j+1]:=x;
   end;
for i:=1 to 3 do
write(a[i],' ');readln
end.

Последний раз редактировалось puporev; 23.12.2007 в 09:15.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в нахождении максимума yulia SQL, базы данных 7 26.07.2008 23:54
выделение жирным шрифтом минимума и максимума из диапазона Bazzer Microsoft Office Excel 11 28.06.2008 18:50
Нахождение минимума и максимума в трехмерном массиве 1234 Помощь студентам 11 26.05.2008 16:23
вычисление суммы чисел, кратных 3 из последовательности, состоящей из 10 чисел, заранее заданных Белка Помощь студентам 3 27.10.2007 11:53
Форматирование чисел Gorin Общие вопросы Delphi 11 26.09.2007 10:30