Форум программистов, компьютерный форум CyberForum.ru

Задача про слона 0о - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ SinCos http://www.cyberforum.ru/cpp-beginners/thread50822.html
странно но в math.h нету SinCos'а :(. Попробовал переписать сам. typedef long double Extended; Extended SinCos(Extended &Theta,Extended &Sin,Extended &Cos) { _asm{ FLD Theta FSINCOS FSTP tbyte ptr // Cos FSTP tbyte ptr // Sin FWAIT
C++ Реестр операционной системы Windows Лабораторная работа Цель: Получение навыков использования функций API среды WIN32 для организации работы с системным реестром. Задание: Написать программу. С помощью нее создать подраздел по пути: HKCU/Software. Создать в подразделе параметры с именем и типом, предложенным преподавателем. Задать параметрам значения, предложенные преподавателем. Прочитать эти значения из реестра. По заданию... http://www.cyberforum.ru/cpp-beginners/thread50819.html
Проблемы с динамическими структурами C++
Задача:В составе программы описать функцию, которая включает в упорядоченный по возрастанаию список новое значение, введенное с клавиатуры, таким образом, чтобы не нарушать упорядоченность. Моё решение: В качестве упорядоченого списка идёт ряд от 10 до 100 Пока не разобрался с функциями. поэтому решение идёт внутри основной программы(листинг с комментариями прикреплен к сообщению) ...
C++ Отсортировать элементы массива по возрастанию с сохранением позиций нулей
Хелп!Не могу никак написать правильный код...вот условие:отсортировать элементы массива (отрицательные влево,положительные вправо,т.е. не изменяя порядка следования элементов) с сохранением позиций нулей,без использования дополнительных массивов
C++ пишу программу, компилирую, у меня на компьютере работает, а на других нет http://www.cyberforum.ru/cpp-beginners/thread50767.html
Создаю пустой проект в Visual Studio c++, добавляю файл c++, пишу программу, компилирую, у меня на компьютере работает, а на других нет, в интернете читал говорят сделать что то статическим, понять не как не могу, помогите чайнику пожалуйста.....
C++ Массив указателей на кучу векторов нужно создать n - ое количество векторов. Как их объявить??? подскажите плиз))))) подробнее

Показать сообщение отдельно
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
14.09.2009, 18:58     Задача про слона 0о
Задача нормальная, кстати, только автор условие неправильно до нас донёс.

...При таком условии слон вряд ли донесёт все бананы до конца, ибо смотри. (То есть, если я правильно понял, съеденый банан съеден безвозвратно)

Допустим, выпала такая сумма бананов, что в общей сложности их штук 38.
Донесёт ли их слон? Нет. Ибо съест максимум 12, да 6 уместится в корзину, итого 38- (6+ 12)= 20
12 бананов осталось на дороге. Задаче то есть не решена.

Значит, в условие надо добавить: слон может возвращаться чтобы... уничтожать бананы, скажем так. По одному за километр. Так решаемо, но... неинтересно.

Ибо имеем на трассе 30 бананов, слон тупо прошёлся по трассе туда-сюда сколько-то там раз, сожрал 24 банана, да 6 положил в корзину. Тоже ничего интересного. Ну, то есть.Каждый элемент километр, его значение- количество бананов на этом километре

int trasssa [2, 0, 5, 1, 1, 3, 9, 4, 2, 3, 0, 1]

Решается банально, циклом проходим туда-сюда, каждый раз отнимая от каждого элемента (кроме нулевых) по единице, и не забыть за раз шесть отнять (можн сразу от суммы всех элементов отнять), положив в корзину. Когда сумма всех элементов становится равной нулю, бодренько идём на последний цикл (i==0), доходим до конца и говори, что бананов на трассе нет, все в корзине или съедены.

Но всё кардинально меняется, если за проход каждого километра слон обязан либо съесть банан, либо класть его в корзину. Не то, что: что хочет, то и делает, а именно так.
Вот это уже совсем другой коленкор.
...Так. а тогда задача не будет иметь решение при таком начальном раскладе

int trasssa [0, 0, 0, 0, 0, 0, 0, 4, 2, 3, 0, 1, ]

...Смотрите, даж если предположить, что изачально у слона в корзине уже есть 6 бананов, он всё равно не пройдёт трассу. Пройдёт то есть 6 километров, а седьмой не сможет- бананов нет уже. Ни в корзине, ни на километре.

Посему, после долгих размышлений я пришёл к выводу, что на каждом километре в начале пути обязан быть хотя бы один банан. И для простоты- пустая корзина.

int trasssa [4, 7, 5, 1, 1, 3, 9, 4, 2, 3, 8, 1];

Окончательное условие.
Есть трасса в 12 километров, посередине каждой трассы склад с бананами, бананов на кажлдом скаледе ненулевое число.
Имеется слон с корзиной, изначально в ней ноль бананов. Он проходит трассу на каждом километре убирая со склада один банан: либо съедая, либо кладя в корзину. Можно ходить в двух направлениях.
Требуется составить программу прохождения слоном всей трассы.

...А теперь я расскажу алгортм, кторый нужно реализовать, чтобы вы поняли, что всё выше сказанное не бред сивой кобылы.
Алгоритм такой: в цикле рассматриваем все числа массива. Первое число 4, в корзине ноль бананов (int korzina= 0) иммитируем проход слона туда обратно два раза. После этого

int trassa [0]== 0;
int korzina==4;

То есть первый склад мы опорожнили, корзину наполнили (это для примера, слон может съесть сколько-то бананов, тогда после первого километр (после первого числа) расклад будет, например, таким:

int trassa [0]== 0;
int korzina==0

Понятно что в конце каждого прохода в цикле int trassa [i]==0

Так вот. Алгоритм изменения чисел trassa [i] и korzina должен быть таков, что по окончании каждого тела цикла должно быть так:

korzina!= 0
А потому, что слон не знает и мы не зхнаем заранее числа.
И если последнее число будет 2 а в корзине перед ним 0 бананов, ну то естьтак

int trassa [11]== 2;
int korzina==0;

То слон трассу не прошёл.

Повторюсь: раз мы не знаем заранее trassa [11], дабы исключить последнюю описаную ситуацию, алгоритм надо так составить, что бы по окончании каждого цикла в корзине находилось ненулевое количество бананов.

Добавлено через 13 минут
Там я с ситаксисом объявления массива намудрил. И ещё: первоначально в корзине должен быть хотя бы один банан.
Иначе при таком раскладе

int trasssa [12]= {2, 7, 5, 1, ..., ..., };

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