nvbn 24.05.2009 13:19
Есть вопрос! — Сортировка в bash
В файле in содержатся строки вида %имя% %фамилия% %бал1% %бал2% %бал3% %бал4%, пример:Вася Пупкин 4 3 2 1Линус Торвальдс 1 2 3 4
Ричард Столлман 2 3 2 1
Нужно отсортировать по убыванию по сумме баллов и вывести %имя% %фамилия% %сумма баллов%
Всё нужно сделать 1 строкой
Решение от aonick и от xcr
Оригинальное условие:
На городской олимпиаде по информатике участникам было предложено выполнить 4 задания, каждое из которых оценивалось по 100 бальной системе. Известно что общее количество участников не превосходит 250 человек. Входной файл имеет вид:
<Фамилия> <Имя> <Баллы>
Пример файла:
Петрова Ольга 25 78 26 94
Калиниченко Иван 14 49 15 0
Напишите программу, которая выведет участников с суммой их баллов в порядке убывания
<Фамилия> <Имя> <Баллы>
Пример файла:
Петрова Ольга 25 78 26 94
Калиниченко Иван 14 49 15 0
Напишите программу, которая выведет участников с суммой их баллов в порядке убывания
Концовку немного урезал =)
Так же есть вариации:...фамилию и имя участника, набравшего максимальное число баллов......трёх лучших участников.....не набравших нужное количество баллов...
И в таком духе, в решении приведены ~50 строчники на турбо паскале
Задача уровня С4 на егэ по информатике =)
Думаю проверяющие не поймут решения на bash, а жаль
Для каждой строчки: считываем, суммируем чиселки, выводим Имя, Фамилию, сумму.
Вывод этого цикла направляем в sort -r -g -k 3
Получаем профит. Точных деталей я не помню
Алсо, если не ошибаюсь, любой скрипт можно написать в одну строчку.
Вывод этого цикла направляем в sort -r -g -k 3
Получаем профит. Точных деталей я не помню
Алсо, если не ошибаюсь, любой скрипт можно написать в одну строчку.
cat in | while read i; do j=($i); echo ${j<0>} ${j<1>} $((${j<2>}+${j<3>}+${j<4>}+${j<5>})); done | sort -r -g -k 3
Вот как-то так. Как проще - не знаю.
Вот как-то так. Как проще - не знаю.
> на паскале
> 50ти строчное
А не много ли? О_о
Алсо, на плюсах с STL намного короче выйдет.
> 50ти строчное
А не много ли? О_о
Алсо, на плюсах с STL намного короче выйдет.
awk '{A=$3+$4+$5+$6; print $1,$2,A}' in | sort -k3 -n -r -выводит на данных параметрах:
Линус Торвальдс 10
Вася Пупкин 10
Ричард Столлман 8
Линус Торвальдс 10
Вася Пупкин 10
Ричард Столлман 8
ты что шутишь? сейчас и вправду такие задания? когда я сдавал там нужно было только прогу на паскале написать. И что в школе уже учат скриптингу?
Чота задания слабоваты =))
В ПТУ задачки?
А ты молоток! Покажешь им на баше - сотку влепят =)))))
В ПТУ задачки?
А ты молоток! Покажешь им на баше - сотку влепят =)))))
Как такая идея?