Канат, длина которого измеряется в удавах, слониках, мартышках и попугаях(вводится с клавиатуры), разрезали пополам. найдите длину половины каната в удавах, слониках, мартышках и попугаях, если 1 удав = 3 слоника, 1 слоник = 4 мартышки, а 1 мартышка = 8 попугаев. ни одно животное при решении не должно постодать.

kolyapauk2016p08ax4 kolyapauk2016p08ax4    1   09.09.2019 18:00    9

Ответы
egorkashoshin0 egorkashoshin0  10.08.2020 16:43
Немного странная задача, если учесть, что попугаев может быть нечетное число и одного тогда придется резать в любом случае...
Но не суть. ответ ниже..

Так как язык программирования не указан, написал на C++

#include <iostream>
using namespace std;
int main() {
 setlocale(LC_ALL, "Russian");
 size_t boas, elephants, monkeys, parrots;
 bool flag = false;

  // Вводим данные
 cout << "" << endl;
 cout << "Введите длину каната" << endl;
 cout << "" << endl;
 cout << "Удавов: "   ; cin >> boas;
 cout << "Слоников: " ; cin >> elephants;
 cout << "Мартышек: " ; cin >> monkeys;
 cout << "Попугаев: " ; cin >> parrots;
 cout << endl << endl;

// Меняем некоторых животных поменьше на животных побольше
// Например, 7 Мартышек можно представить как 1 Слоника и 3 Мартышки
 monkeys   += parrots   / 8; parrots   %= 8;
 elephants += monkeys   / 4; monkeys   %= 4;
 boas      += elephants / 3; elephants %= 3;

 // Теперь начинаем делить. Если При делении нужно располовинить какое-либо животное,
 // лучше просто заменить его на соответствующее животное по-меньше
 // Например, если канат длиной в 3 Слонёнка, то мы при делении на 2 могут возникнуть проблемы.
 // А вот если заменить одного слоненка на 4 Мартышек и делить уже 2 Слоников и 4 Мартышки,
 // то получится 1 Слоненок и 2 Мартышки
 elephants += 3*(boas % 2); boas /= 2;
 monkeys += 4*(elephants % 2); elephants /= 2;
 parrots += 8*(monkeys % 2); monkeys /= 2;
 if (parrots % 2) {
  flag = true;
  cout << "Количество попугаев НЕЧЕТНО" << endl << endl;
 }
 parrots /= 2;

// Вывод результата
 cout << "" << endl;
 cout << "Вывод длины деленного каната" << endl;
 cout << "" << endl;
 cout << "Удавов: "   << boas << endl;
 cout << "Слоников: " << elephants << endl;
 cout << "Мартышек: " << monkeys << endl;
 cout << "Попугаев: " << parrots; if (flag) cout << " + 0.5 (СКОРУЮ СЮДА!!)";cout << endl;
 cout << endl << endl;

system("pause");
 return 0;
}
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика