Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
ARTER616
0 / 0 / 3
Регистрация: 14.01.2017
Сообщений: 268
1

Отсортировать список рациональных дробей, заданных в виде a/b

27.06.2017, 18:04. Просмотров 311. Ответов 6
Метки нет (Все метки)

Отсортируйте список рациональных дробей, заданных в виде a/b.
ВХОДНЫЕ ДАННЫЕ

Программа получает на вход NN дробей: сначала задается число N (1≤N≤1000), потом идет N строк, в каждой из которых записана одна дробь. Дробь записана в виде a/b, где a и b —натуральные числа.
ВЫХОДНЫЕ ДАННЫЕ

Программа должна вывести список этих дробей в порядке неубывания. Если в списке есть две равные дроби a/b=c/d, то раньше выводится дробь, у которой меньше числитель.
ПРИМЕР
ВВОД
3
4/2
2/6
1/2
ВЫВОД
2/6
1/2
4/2
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2017, 18:04
Ответы с готовыми решениями:

Пусть список студентов представлен в виде структуры. Преобразуйте список в словарь
Пусть список студентов представлен в виде структуры ,,]. Преобразуйте список в...

Отсортировать числа, записанные в виде строк
При сортировке списка .sort() выдает странный результат. В этом и вопрос,почему...

Отсортировать список
помогите,пжалуйста В олимпиаде участвовало N человек. Каждый получил...

Отсортировать список слов
Требуется отсортировать список слов по первой букве так, чтобы слова,...

Требуется отсортировать список
Дан список: . Требуется отсортировать в порядке возрастания. Кто-нибудь может...

6
Рыжий Лис
Просто Лис
1187 / 511 / 343
Регистрация: 17.05.2012
Сообщений: 2,066
Записей в блоге: 8
28.06.2017, 12:30 2
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
t = '''\
3
4/2
2/6
1/2'''
 
def parse(text):
    return[list(map(int, line.split('/'))) for line in text.split('\n')[1:]]
 
ls = parse(t)
#~ print(ls)
 
ls.sort(key=lambda x: x[0]/x[1])
#~ print(ls)
 
for i1, i2 in ls:
    print('%d/%d' % (i1, i2))
0
ARTER616
0 / 0 / 3
Регистрация: 14.01.2017
Сообщений: 268
28.06.2017, 18:05  [ТС] 3
Почему-то не получается сделать ввод.
0
Jabbson
Эксперт по компьютерным сетям
3348 / 2423 / 746
Регистрация: 03.11.2009
Сообщений: 7,759
Записей в блоге: 3
29.06.2017, 00:35 4
Любители eval, налетай

Python
1
2
3
4
5
6
7
t = '''
3
4/2
2/6
1/2'''
 
print(*sorted(t.split()[1:], key=eval), sep='\n')
Добавлено через 2 минуты
чтобы удовлетворить условие с последовательностью

Python
1
print(*sorted(t.split()[1:], key=lambda x: (eval(x), x.split('/')[0])), sep='\n')
1
Рыжий Лис
Просто Лис
1187 / 511 / 343
Регистрация: 17.05.2012
Сообщений: 2,066
Записей в блоге: 8
29.06.2017, 08:45 5
Цитата Сообщение от ARTER616 Посмотреть сообщение
Почему-то не получается сделать ввод.
Вы насоздавали множество однотипных тем, наверняка найдётся код с чтением из файла.
Python
1
2
with open('in.txt') as f:
    t = f.read()
0
ARTER616
0 / 0 / 3
Регистрация: 14.01.2017
Сообщений: 268
29.06.2017, 20:13  [ТС] 6
Не файл, мне нужно чтобы вводились числа по одному с клавиатуры, а не в 1ой переменной t
0
Рыжий Лис
Просто Лис
1187 / 511 / 343
Регистрация: 17.05.2012
Сообщений: 2,066
Записей в блоге: 8
30.06.2017, 07:46 7
Python
1
2
3
4
5
6
7
8
9
10
11
count = int(input())
 
ls = []
for _ in range(count):
    line = input()
    ls.append(list(map(int, line.split('/'))))
 
ls.sort(key=lambda x: x[0]/x[1])
 
for i1, i2 in ls:
    print('%d/%d' % (i1, i2))
0
30.06.2017, 07:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2017, 07:46

Матрица рациональных дробей
П.5.4.Правил Запрещено создавать темы с бессмысленными названиями вроде...

Класс рациональных дробей
Написать пользоват. тип рациональных дробей. Внутреннее представление типа:...

Интегрирование рациональных дробей
(x^2-6x+8)/x^3+8


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru