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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2009, 22:42   #1
marina-malina
Новичок
Джуниор
 
Регистрация: 26.04.2009
Сообщений: 0
По умолчанию пожалуйста помогите решить задачечку

Найти среднеарифметическое значение трех наименших елементов масива А(10)
Найти среднеарифметическое значение трех наименших елементов масива А(10)
marina-malina вне форума Ответить с цитированием
Старый 27.04.2009, 19:40   #2
Gongled
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 78
По умолчанию

Мой вариант. Без лишнего пробега цикла (т.е. без использования сортировки).
Код:
program pr;
uses CRT;
const
n = 10;
var
min1, min2, min3, i : integer;
a : array[1..n] of integer;
sa : real;

begin
clrscr;

{ Заполнение массива и его вывод }
for i:=1 to n do
begin
     a[i]:=integer(random(21)-10);
     write(a[i]:4);
end;

{ Заведомо бОльшие значения }
min1 := 30; min2 := 30; min3:=30;

{ Поиск трёх минимальных }
for i:=1 to n do
begin
     if min1 > a[i] then
     begin
          min3 := min2;
          min2 := min1;
          min1 := a[i];
     end
     else
     if min2 > a[i] then
     begin
          min3 := min2;
          min2 := a[i];
     end
     else
     if min3 > a[i] then
     begin
          min3 := a[i];
     end;
end;

writeln;
{ Вывод результата }
writeln('Минимумы: ', min1:4, min2:4, min3:4);
sa := (min1+min2+min3) / 3;
write('Среднее арифметическое трёх минимумов: ',sa:4:4);

end.
Пишу глупости.
Gongled вне форума Ответить с цитированием
Старый 28.04.2009, 10:04   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Gongled, ОТЛИЧНО!
Только, если нужны действительно случайные числа, то в начале программы обязательно надо использовать randomize;
и приведение типов вот здесь
"a[i]:=integer(random(21)-10);" не нужно (хоть это и не ошибка! )
и ещё. для заведом бОльших значений я бы всё таки рекомендовал использовать константу MaxInt:
min1 := MaxInt; min2 := MaxInt; min3 := MaxInt;

и последнее, на мой взгляд, всё таки, решение через сортировку массива короче и более универсально.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.04.2009, 18:49   #4
Gongled
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 78
По умолчанию

Спасибо. Некоторый теоретический материал я не знал.
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
и последнее, на мой взгляд, всё таки, решение через сортировку массива короче и более универсально.
Оффтоп: К слову, составители ЕГЭ (где есть задания на нахождение трёх минимальных сумм, разностей, произведений и.т.п.) считают иначе. Эффективным алгоритмом они считают подобный выбор, без лишнего пробега цикла. Непонятно :'-)
Пишу глупости.
Gongled вне форума Ответить с цитированием
Старый 29.04.2009, 10:04   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
составители ЕГЭ (где есть задания на нахождение трёх минимальных сумм, разностей, произведений и.т.п.) считают иначе.
о. не знал! o_O
Спасибо за информацию!
и вообще, надо будет поинтересоваться, что там вообще в ЕГЭ по информатике есть...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.04.2009, 10:24   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
составители ЕГЭ
Что такое ЕГЭ -Економико-Гуманитарный Эниверситет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.04.2009, 20:52   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Виталий, это теперь в России такой обязательный экзамен(ы)...
вот, на wiki - Единый государственный экзамен
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.04.2009, 13:57   #8
Gongled
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 78
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
и вообще, надо будет поинтересоваться, что там вообще в ЕГЭ по информатике есть...
Как доводят до нас учителя информатики как в институте (на курсах), как в школе, решение задачи С4 (как раз сортировка и выбор трёх худших / лучших) не должно содержать двойного пробега цикла (например метод Пузырька). Эффективным алгоритмом считается поиск минимумов / максимумов за один пробег.

Константин Поляков пишет:
Цитата:
За что снимают баллы:
Используется несколько проходов по массиву, когда достаточно одного
Serge_Bliznykov, посмотреть демонстрационный вариант 2009 года можно здесь: http://www.ctege.org/page.php?s=&pageid=3500
Пишу глупости.
Gongled вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите решить ....пожалуйста darika Паскаль, Turbo Pascal, PascalABC.NET 7 06.04.2009 20:28
Помогите решить пожалуйста autsorser Общие вопросы C/C++ 2 23.09.2007 18:11