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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2008, 18:27   #1
pupil
 
Регистрация: 05.03.2008
Сообщений: 4
Восклицание паскаль

никак не получается задача:по итогам проведения турнира по плаванию сформирован список стран с указанием для каждой из них количества завоеванных золотых , серебряных и бронзовых медалей. Упорядочить все страны по убыванию количества золотых медалей. Из двух стран с одинаковым числом медалей выше должна оказаться страна, у которой больше серебряных медалей. Если и здесь равенство , то преимущество должна иметь страна с большим числом бронзовых медалей. В случае, когда показали по медалям абсолютно одинаковы, страны должны рапологаться по алфавиту.
помогите,пожалуйста!!!
pupil вне форума Ответить с цитированием
Старый 06.03.2008, 00:29   #2
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

Вот! Набросал сходу... не проверял! Возможно, не самый лучший вариант...

Код:
const count=20;
//описываем тип запись
type
TTotals=record;
Country:string;
gold:integer;
silver:integer;
bronze:integer;
end;
var
totals:array[1..count] of TTotals;
i,j:integer;
begin
//Сортировка (в основе метод "пузырька")
for i:=2 to count do
for j:=count downto i do
begin
//Сначала смотрим количество золотых медалей
if totals[j-1].gold<totals[j].gold //Сравниваем соседние элементы...
then //...и если "правый сосед" меньше "левого соседа"...
begin //... меняем их местами
buf:=totals[j-1];
totals[j-1]:=totals[j];
totals[j]:=buf;
end;
//Если золотых медалей одинаковое количество...
if totals[j-1].gold=totals[j].gold then //...смотрим бронзовые...
if totals[j-1].bronze>totals[j].bronze then //... и аналогично сравниваем...
begin //...и меняем местами
buf:=totals[j-1];
totals[j-1]:=totals[j];
totals[j]:=buf;
end;
// Если количество медалей одинаковое количество...
if (totals[j-1].gold=totals[j].gold) and (totals[j-1].silver=totals[j].silver) 
and (totals[j-1].bronze=totals[j].bronze) then
{...смотрим по названию страны. Здесь, в принципе, идет не сортировка по алфавиту, а простое сравнение строк. 
При желании можно заменить на полноценную сортировку строк по алфавиту (вопрос такой, кажется, обсуждался на форуме)}
if totals[j-1].country<totals[j].country then 
begin
buf:=totals[j-1];
totals[j-1]:=totals[j];
totals[j]:=buf;
end;
end;
end.
Не проверял!!! Вроде бы все так... Ну, а сортировку по алфавиту (нормальную) постарайтесь попробовать сделать сами
Xardas вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль... Need Help Chih Помощь студентам 4 30.05.2008 16:37
Паскаль. LLIypLLIyH Помощь студентам 2 30.05.2008 08:51
Паскаль Jondeer Помощь студентам 5 01.11.2007 16:56
Паскаль Jondeer Помощь студентам 4 27.10.2007 18:54