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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 14.05.2008, 16:08   #1
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
Вопрос массивы испортили печень

Задали посмотреть дома задачки. Посмотрел...!
задача:1 (потом еще скину сюда, если не разберусь):
В спортивных соревнованиях 10 судей выстави¬ли свои оценки спортсмену. Итоговая оценка опреде¬ляется так: самая наибольшая и самая наименьшая оценки из общей суммы удаляются (если таких оце¬нок несколько, то удаляется только одна из них), за¬тем среди оставшихся подсчитывается среднее ариф¬метическое. Написать программу, которая позволила бы по известным оценкам судей автоматически выс¬тавлять итоговую оценку спортсмену.
Код:
var
mas:array [1..10] of real; max, min:real; i,j: integer;
begin
     for i:=1 to 10 do    readln (mas[i]);
     max:=mas[1];
     min:=mas[1];
     begin

for i:=2 to 10 do     if mas[i]>max then max:=mas[i];
if mas[i]<min then min:=mas[i];
     end;

     Writeln(max:4:2, min:4,2);    readln;
     end.
Как говорится, шедевр долог до завершения.
------------------------------
Ум без разума –это беда!
veter_s_morya вне форума
Старый 14.05.2008, 16:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

От проблема? Пробегай по всем элементам, все суммируй, паралельно отбирай максимум-минимум, потом их вычитай из общей суммы.
ДЕлов то... и без сортировки.
I'm learning to live...
Stilet вне форума
Старый 14.05.2008, 16:21   #3
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Код:
Var mas:array [1..10] of real; 
     max, min,sum:real; 
     i,j: integer;
begin
for i:=1 to 10 do    readln (mas[i]);
sum:=0;   
min:=100000;
max:=-100000;
for i:=1 to 10 do 
 begin
  if(min>mas[i])then min:=mas[i];
  if(max>mas[i])then max:=mas[i];
  sum:=sum+mas[i];
 end;
 sum:=(sum-min-max)/8;
 ReadLn('Итоговая оценка: ', sum);
end.
Если я правильно понял задание то это выглядет приблизительно так.
Нет невыполнимых задач, всё дело времени...

Последний раз редактировалось D-mon; 14.05.2008 в 16:38.
D-mon вне форума
Старый 14.05.2008, 16:32   #4
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Яб зашёл на википедию и скопипастил пузырьковый алгоритм.
Дальше удалил бы первый и последний элемент.... дальше понятно что.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума
Старый 14.05.2008, 16:36   #5
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Зачем тут пузырек. Где сказано что надо что то сортировать??? Я не вижу, может мне покажешь Карась. Задача тривиальна. Написана без компилятора.
Нет невыполнимых задач, всё дело времени...
D-mon вне форума
Старый 14.05.2008, 16:43   #6
-=<[Evklidd]>=-
Форумчанин Подтвердите свой е-майл
 
Аватар для -=<[Evklidd]>=-
 
Регистрация: 22.01.2008
Сообщений: 161
По умолчанию

По-моему, в коде D-mon'a есть ошибка:
Цитата:
if(min>mas[i])then min:=mas[i];
if(max>mas[i])then max:=mas[i];
Почему для min условие такое min > mas[i], когда должно быть min < mas[i]&
К тому же зачем два одинаковых цикла делать если можно в одном сделать, исправленный алгоритм:
Код:
Var mas:array [1..10] of real;   
     max, min,sum:real;   
     i,j: integer;  
begin
sum:=0;  
for i:=1 to 10 do  
 begin
  readln(mas[i]);    
  sum:=sum+mas[i];
 end; 
min:=100000;  
max:=-100000;  
for i:=1 to 10 do   
 begin  
  if(min<mas[i])then min:=mas[i];  
  if(max>mas[i])then max:=mas[i];  
 end;  
 sum:=(sum-min-max)/8;  
 ReadLn('Итоговая оценка: ', sum);  
end.
-=<[Evklidd]>=- вне форума
Старый 14.05.2008, 16:44   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
D-mon
Вообще-то все вычисления можно делать прямо при вводе. Прога проще будет.
I'm learning to live...
Stilet вне форума
Старый 14.05.2008, 16:46   #8
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
По умолчанию

Цитата:
Код:
view plaincopy to clipboardprint?

Var mas:array [1..10] of real;
max, min,sum:real;
i,j: integer;
begin
for i:=1 to 10 do readln (mas[i]);
sum:=0;
for i:=1 to 10 do sum:=sum+mas[i];
min:=100000;
max:=-100000;
for i:=1 to 10 do
begin
if(min>mas[i])then min:=mas[i];
if(max>mas[i])then max:=mas[i];
end;
sum:=(sum-min-max)/8;
ReadLn('Итоговая оценка: ', sum);
end.

Var mas:array [1..10] of real;
max, min,sum:real;
i,j: integer;
begin
for i:=1 to 10 do readln (mas[i]);
sum:=0;
for i:=1 to 10 do sum:=sum+mas[i];
min:=100000;
max:=-100000;
for i:=1 to 10 do
begin
if(min>mas[i])then min:=mas[i];
if(max>mas[i])then max:=mas[i];
end;
sum:=(sum-min-max)/8;
ReadLn('Итоговая оценка: ', sum);
end.
Если я правильно понял задание то это выглядет приблизительно так.
__________________
D-mon, я проверил этот код... не идет! Не правильно считает! И вывод writeln.
------------------------------
Ум без разума –это беда!
veter_s_morya вне форума
Старый 14.05.2008, 16:52   #9
-=<[Evklidd]>=-
Форумчанин Подтвердите свой е-майл
 
Аватар для -=<[Evklidd]>=-
 
Регистрация: 22.01.2008
Сообщений: 161
По умолчанию

вы воообще читаете посты которые вам пишут?
Цитата:
По-моему, в коде D-mon'a есть ошибка:
Цитата:
if(min>mas[i])then min:=mas[i];
if(max>mas[i])then max:=mas[i];
Почему для min условие такое min > mas[i], когда должно быть min < mas[i]?
К тому же зачем два одинаковых цикла делать если можно в одном сделать, исправленный алгоритм:
Код:
 
Var mas:array [1..10] of real;      
     max, min,sum:real;      
     i,j: integer;     
begin   
sum:=0;     
for i:=1 to 10 do     
 begin   
  readln(mas[i]);       
  sum:=sum+mas[i];   
 end;    
min:=100000;     
max:=-100000;     
for i:=1 to 10 do      
 begin     
  if(min<mas[i])then min:=mas[i];     
  if(max>mas[i])then max:=mas[i];     
 end;     
 sum:=(sum-min-max)/8;     
 ReadLn('Итоговая оценка: ', sum);     
end.

Последний раз редактировалось -=<[Evklidd]>=-; 14.05.2008 в 16:54.
-=<[Evklidd]>=- вне форума
Старый 14.05.2008, 16:58   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот:
Код:
Var mas:array [1..10] of real;         
     max, min,sum:real;
     i: integer;
begin
for i :=1  to 10  do
begin
 readln(mas[i]);
 if mas[i]<min then min:=mas[i];
 if mas[i]>max then max:=mas[i];
 sum:=sum+mas[i];
end;
writeln((sum-min-max)/10);
readln;
end.
Че тут париться
I'm learning to live...
Stilet вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы в С\С++ Zahar11 Помощь студентам 4 31.05.2008 00:35
массивы ShenDy Общие вопросы C/C++ 4 17.04.2008 00:01
Массивы Snord Общие вопросы Delphi 2 12.04.2008 13:45