Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.02.2020
Сообщений: 2

Напишите программу, которая рассортирует уравнения реакций

09.02.2020, 22:21. Показов 2623. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нуклончик уже научился разбираться в красивой записи ядерных реакций. Осталось научиться их правильно составлять. Для этого нужно проверить, выполняются ли в составленных Нуклончиком реакциях законы сохранения массового и зарядового числа.

Напишите программу, которая рассортирует уравнения реакций.

Формат ввода
Вводятся строки — уравнения ядерных реакций. Нужно определить, уравнены ли они. Зарядовое число (количество протонов) пишется перед названием элемента, массовое (количество нуклонов) после него.

Формат вывода
Сначала вывести все уравнения, которые записаны правильно, в алфавитном порядке (сравнивать первые записанные химические элементы), если они одинаковы, то в порядке ввода.

Затем после пустой строки вывести остальные в порядке убывания количества недостающих нуклонов, потом протонов, потом по алфавиту (сравниваются просто строки).

Недостающие нуклоны считаются так: из количества нуклонов продуктов реакции вычитается количество нуклонов исходных ядер. Для протонов аналогично.

Добавлено через 3 минуты
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
urbefore = []
urafter = []
prav = []
neprav = []
b = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
     'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B',
     'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
     'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}
 
while True:
    u = str(input())
    if u == '':
        break
    if len(u) > 0:
        el = u.split(' ')
        wel = str(el[0])
        i = 0
        while wel != '->':
            if wel != '+':                
                k = ''
                s = ''
                n = ''
                j = 0
                while wel[j] not in b:
                    k = k + wel[j]
                    j += 1
                while wel[j] in b:
                    s = s + wel[j]
                    j += 1
                while j <= len(wel) - 1:
                    n = n + wel[j]
                    j += 1
                k = int(k)
                n = int(n)
                urbefore.append([s, k, n])
            i += 1
            wel = el[i]
        for j in range(i + 1, len(el)):
            wel = el[j]
            if wel != '+':                
                k = ''
                s = ''
                n = ''
                j = 0
                while wel[j] not in b:
                    k = k + wel[j]
                    j += 1
                while wel[j] in b:
                    s = s + wel[j]
                    j += 1
                while j <= len(wel) - 1:
                    n = n + wel[j]
                    j += 1
                k = int(k)
                n = int(n)
                urafter.append([s, k, n])    
        sprotb = 0
        sprotaf = 0
        snukb = 0
        snukaf = 0
        for i in range(len(urbefore)):
            sprotb += urbefore[i][1]
            snukb += urbefore[i][2]
        for i in range(len(urafter)):
            sprotaf += urafter[i][1]
            snukaf += urafter[i][2]
        if sprotb == sprotaf and snukb == snukaf:
            prav.append((urbefore[0][0], u))
        else:
            neprav.append((snukb - snukaf, sprotb - sprotaf, u))       
        urbefore = []
        urafter = []    
    
prav.sort(key=lambda x: x[0])
neprav.sort(key=lambda x: x[2])
neprav.sort(key=lambda x: x[1])
neprav.sort(key=lambda x: x[0])
for el in prav:
    print(el[1])
print()
for el in neprav:
    print(el[2])
это мое решение очень кривое и оно не проходит по времени как можно исправить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.02.2020, 22:21
Ответы с готовыми решениями:

Напишите рекурсивную программу которая находит с точностью EPS корень уравнения
Напишите рекурсивную программу, которая по заданным A, B и EPS методом деления отрезка пополам находит с точностью EPS корень уравнения...

Напишите 4 уравнения реакций, которые могут проходить при попарном сливании этих растворов
Имеются четыре водные раствора – хлорида меди (II), сульфида натрия, гидроксида калия и бромная вода (раствор брома). Напишите 4 уравнения...

Напишите программу которая находит все решения данного уравнения
Напишите программу которая находит все решения данного уравнения: x^3+3x^2-9x-20=-18cos(x)+25cos(x) на интервале . Программа должна...

3
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
09.02.2020, 22:24
Примеры входных/выходных данных?
0
0 / 0 / 0
Регистрация: 09.02.2020
Сообщений: 2
09.02.2020, 22:27  [ТС]
Ввод
3Li7 + 1H1 -> 2He4 + 2He4
13Al27 + 15P30 -> 14Si30 + 20Ca40
83Bi209 + 2He4 -> 85At212 + 0n1
13Al27 + 0n1 -> 6C12 + 2He4
99Es253 + 14Si30 -> 92U238 + 0n1
8O17 + 24Cu50 -> 34Se82
3Li7 + 2He4 -> 5B10 + 0n1

Вывод
83Bi209 + 2He4 -> 85At212 + 0n1
3Li7 + 1H1 -> 2He4 + 2He4
3Li7 + 2He4 -> 5B10 + 0n1

8O17 + 24Cu50 -> 34Se82
13Al27 + 15P30 -> 14Si30 + 20Ca40
13Al27 + 0n1 -> 6C12 + 2He4
99Es253 + 14Si30 -> 92U238 + 0n1
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
10.02.2020, 10:00
1) вводите строку
2) удаляете все пробелы
3) split('->') у вас будет 2 строки(левая и правая части)
4) split('+') по левой и правой части, будут два списка которые содержат элементы соответствующих частей.
5) считаете суммы в правом и левом списке
6) сравниваете суммы и заносите в тот или иной список
7) сортируете списки по условию
8) выводите списки.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.02.2020, 10:00
Помогаю со студенческими работами здесь

Напишите программу, которая по вводимым параметрам A, B, C находит корни квадратного уравнения
Товарищи, помогите решить задачку : Напишите программу используя PowerShell, которая по вводимым параметрам A, B, C находит корни...

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

Напишите программу, которая находит все решения заданного вам уравнения на интервале [-5;5]. Программа должна выполнить
Напишите программу, которая находит все решения заданного вам уравнения на интервале . Программа должна выполнить следующие действия: 1....

Напишите программу, которая находит все решения заданного вам уравнения на интервале [-5;5]. Программа должна выполнить
Напишите программу, которая находит все решения заданного вам уравнения на интервале . Программа должна выполнить следующие действия: ...

Программа которая рассортирует отрицательные и положительные числа
Создать файл T1.txt в него вписать отрицательные и положительные числа. Составить программу, которая перепишет все положительные числа в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru