М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
mariyapetrpet
mariyapetrpet
18.12.2022 00:17 •  Информатика

Напишите программу, которая моделирует работу стека целых чисел, текстовыми . в начале работы стек пуст. затем последовательно выполняются команды, записанные в файле input.txt . для стеком используются две команды: '+' – втолкнуть число на вершину стека '-' – удалить число с вершины стека требуется определить состояние стека после окончания выполнения всех команд. входные данные входные строки в файле input.txt содержат команды стеком. последняя строка файла пустая. выходные данные программа должна вывести в одной строке через пробел все числа, оказавшиеся в стеке после выполнения всех команд. слева должно быть дно стека, справа – вершина. если стек пуст, нужно вывести слово 'empty'. если во время выполнения команд произошла ошибка, нужно вывести слово 'error'. примеры входные данные +12 +23 - +34 выходные данные 12 34 входные данные +12 +23 - - выходные данные empty

👇
Ответ:
Kimberliny
Kimberliny
18.12.2022
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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 #include<fstream> #include <iostream> #include<vector> #include <stack> #include<string> #include<algorithm> using namespace std; stack<int>st; int error = 0; void operation(string command) {     if (command == "DROP")     {         if (st.size() > 0)         {             st.pop(); return;         }         else         {             error = 1; return;         }     }     if (command == "SWAP")     {         if (st.size() >= 2)         {             int a = st.top();             st.pop();             int b = st.top();             st.pop();             st.push(a);             st.push(b);             return;         }         else         {             error = 1; return;         }     }     if (command == "DUP")     {         if (st.size() > 0)         {             int a = st.top();             st.push(a);             return;         }         else         {             error = 1;             return;         }     }     if (command == "OVER")     {         if (st.size() >= 2)         {             int a = st.top();             st.pop();             int b = st.top();             st.pop();             st.push(b);             st.push(a);             st.push(b);             return;         }         else         {             error = 1; return;         }     }     if (command == "+")     {         if (st.size() >= 2)         {             int a = st.top();             st.pop();             int b = st.top();             st.pop();             st.push(a + b);         }         else         {             error = 1;             return;         }     }     if (command == "-")     {         if (st.size() >= 2)         {             int a = st.top();             st.pop();             int b = st.top();             st.pop();             st.push(b - a); return;         }         else         {             error = 1;             return;         }     }     if (command == "*")     {         if (st.size() >= 2)         {             int a = st.top();             st.pop();             int b = st.top();             st.pop();             st.push(b*a); return;         }         else         {             error = 1;             return;         }       }     if (command == "/")     {         if (st.size() >= 2)         {             int a = st.top();             st.pop();             int b = st.top();             st.pop();             st.push(b/a); return;         }         else         {             error = 1;             return;         }     } } bool isnumber(string x) {     for (int i = 0; i < x.length(); i++)     {         if (x[i] > '9' || x[i] < '0')         {             return false;         }     }     return true; } int main() {     vector<int>v;     ifstream in;     ofstream out;     in.open("input.txt");     out.open("output.txt");         string command;     while (in >> command&&error != 1)     {         if (isnumber(command) == true)         {             st.push(atoi(command.c_str())); continue;         }         operation(command);     }     if (error == 1)     {         out << "ERROR"; return 0;     }     if (st.size() == 0)     {         out << "EMPTY"; return 0;     }     while (st.size() != 0)     {         v.push_back(st.top());         st.pop();     }     reverse(v.begin(), v.end());     for (int i = 0; i < v.size(); i++)     {         out << v[i] << " ";     }     in.close();     out.close(); }
4,7(11 оценок)
Открыть все ответы
Ответ:
Ivangggg
Ivangggg
18.12.2022

Римская система счисления является непозиционной системой. В ней для записи чисел используются буквы латинского алфавита. При этом буква I всегда означает единицу, буква - V пять, X - десять, L - пятьдесят, C - сто, D - пятьсот, M - тысячу и т.д. Например, число 264 записывается в виде CCLXIV. При записи чисел в римской системе счисления значением числа является алгебраическая сумма цифр, в него входящих. При этом цифры в записи числа следуют, как правило, в порядке убывания их значений, и не разрешается записывать рядом более трех одинаковых цифр. В том случае, когда за цифрой с большим значением следует цифра с меньшим, ее вклад в значение числа в целом является отрицательным. Типичные примеры, иллюстрирующие общие правила записи чисел в римской система счисления, приведены в таблице.

Таблица 2. Запись чисел в римской системе счисления

1

2

3

4

5

I

II

III

IV

V

6

7

8

9

10

VI

VII

VIII

IX

X

11

13

18

19

22

XI

XIII

XVIII

XIX

XXII

34

39

40

60

99

XXXIV

XXXIX

XL

LX

XCIX

200

438

649

999

1207

CC

CDXXXVIII

DCXLIX

CMXCIX

MCCVII

2045

3555

3678

3900

3999

MMXLV

MMMDLV

MMMDCLXXVIII

MMMCM

MMMCMXCIX

 

Недостатком римской системы является отсутствие формальных правил записи чисел и, соответственно, арифметических действий с многозначными числами. По причине неудобства и большой сложности в настоящее время римская система счисления используется там, где это действительно удобно: в литературе (нумерация глав), в оформлении документов (серия паспорта, ценных бумаг и др.), в декоративных целях на циферблате часов и в ряде других случаев.

4,7(91 оценок)
Ответ:
hh222
hh222
18.12.2022

тогда для трех монет: взвешиваем две наугад

если кучки имею одинаковый вес, значит фальшивая монета - третья.

Если вес ранзый, значит фальшивая одна из взвешиваемых монет. Значит та что лежит отдельно - настоящая. Сравним по весу одну из этих двух с третьей и узнаем какая из них фальшивая. (макс два взвешивания)

 

для четырех:

разобъем на три кучки 1, 1 и 2 монеты

взесим кучки по одной монете, если они разные, значит фальишвка среди них. Взвесим одну из монет с одной из оставшихся и сразу выясним какая фальшивка.

Если же кучки из 1 монеты одинаковые значит они обе настоящие. Возьмем одну из неиспользованных монет и взвесим с одной из настоящих. Сразу поймем какая из двух оставшихся фальшивая (макс 2 взвешивания)

 

для пяти

две кучки по две монеты и одна из одной. 

взвесим две кучки между собой. если они одинаковые по весу, значит фальшивка - оставшаяся пятая.

если кучки разные по весу, то надо найти какая же из четырех монет фальшивая. задача сводится к предыдущей про 4 монеты (макс 3 взвешивания)

 

для шести монет

три кучки по две монеты. сравниваем две из них

если кучки имеют одинаковый вес, значит фальшивка в оставшейся кучке, а все взвешанные четыре монеты - подлинные.

взвешиваем одну из оставшихся монет с одной из подлинных и понимаем какая фальшивка из оставшихся.

 

Либо если первые две кучки имеют разный вес, то задача сводится к задаче с четырьмя монетами. Итого макимум 3 взвешивания.

 

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

тогда алгоритмы:

3 монеты:

взвешиваем две, если какая то из них легче - фальшивка, если нет, значит оставшаяся фальшивка - 1 взвешивание

 

4 монеты

берем две монеты взвешиваем. если одна легче - она фальшивка, если одинаковый вес, то взвешиваем между собой две другие, та которая легче - фальшивка 2 взвешивания

 

5 монет.

две кучки по две монеты взвешиваем. Если одинаковый вес, то фальшивка - пятая монета, если одна из кучек легче - фальшивка в ней. взвешиваем две монеты легкой кучки между  собой - легкая и есть фальшивка. 2 взвешивания

 

6 монет. две кучки по две монетки взвешиваем между собой. если вес одинаков - взвешиваем между собой две оставшиеся монеты - фальшивка найдена, 

если вес разный, то в легкой кучке фальшивка. Взвесим между собой монетки из наиболее легкой кучке - найдена фальшивка. 2 взвешивания.

 

Общая идея:

так как у весов три положения, то монеты надо стараться бить на три множества.

 

 

 

 

4,5(71 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ