IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Катание на коньках., Составить задачу которая сортирует по очкам.
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 168
Пол: Мужской

Репутация: -  3  +


Привет. Такая задача:
В соревнование по артистическому катанию на льду играли N игроков. Они набрали очков из интервала [0..100]. Очки это вещественые числа формата: aa.bb. Составить програму которая показывает К финалистов т.е сортировать по убыванию этих N и показать только К из них.

Пример:
IN:
15 9
8.5 9.5 8.5 7.5 7.7 7.5 7.7 8.5 5.5 6.3 7.4 7.5 8.5 9.1 9.8
OUT:
9.80 9.50 9.10 8.50 8.50 8.50 8.50 7.70 7.70

0<=N,K<=30000;
Время выполнения < 1 сек

Так как вектор 1..30000 вещественых чисел слишком большая структура то я сделал так:
Массив 0..100, 0..100 где координата i - целая часть а j - дробная часть числа из файла.

Вот код, для больших чисел работает вроде.

Uses Crt;
type vector=array[0..10000] of integer;
var N,K:integer; max:integer;
a:vector;
procedure START;
var i:integer; jcor:integer;
nr:real;
F:text;
begin
assign(F, 'C:\tpatinaj\patina.in');
reset(F);
readln(F, N, K);
max:=0;
for i:=1 to N do
begin
read(F, nr);
icor:=round(nr*100);
if icor >max then max:=icor;
inc(a[icor]);
end;
close(F);
end;
procedure Print; //Выводим всё в файл
var i:integer; r:integer; G:text;
begin
assign(G, 'C:\patina.out');
rewrite(G);
i:=max;
r:=0;
while r<k do
begin
nr:=i/100;
while a[i]>0 do
begin
write(G, nr:5:2,' ');
inc®;
dec(a[i]);
if r=k then exit;
end;
dec(i);
end;
close(G);
end;
Begin ClrScr;
START;
Print;
end.


Проблемы:
1) Для примера показаного выше в файл ничего не пишет, но если написать чтоб выводил на экран то всё выводит.
2) Почему-то когда nr=70.0 то trunc(nr)=69 тоже не пойму.
3) Не уверен что правильно выводит решение.
прикрепил тесты.

Сообщение отредактировано: DarkWishmaster -


Прикрепленные файлы
Прикрепленный файл  tpatinaj.rar ( 455.24 килобайт ) Кол-во скачиваний: 254
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 15:57
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name