Помогите пж программа работает неправильно!!!!! помогите пж . первы

SEO эксперименты, продвижение и монетизация сайтов, интернет-маркетинг, заработок в сети



RSS Feed Twitter!
Следи за экспериментами:
По почте или RSS

Дата публикации: 14.12.2023

Помогите пж программа работает неправильно!!!!! помогите пж . первы


Помогите пж программа работает неправильно!!!!! помогите пж . первый Цикл for работает 2 раза!!! почему? помогите пж спаситеИмеется N контейнеров высоты H. Задано множество предметов, каждый из которых имеет свою высоту. Можно ли разместить предметы в этих контейнерах так, чтобы груз не выступал над контейнером? #include <iostream> using namespace std; bool canPlaceItems(int containersHeight,//высота всех контейнеров int remainingItems)//кол-во предметов { if (remainingItems <= 0) return containersHeight >= 0; cout << "Введите высоту предметов:\n "; int itemHeight[10], i=0; for (i = 1; i < remainingItems+1; i++) { cout << i << ")"; cin >> itemHeight[i]; } // Проверка, чтобы предмет не выступал над контейнером for (i = 0; i < remainingItems; i++) { if (itemHeight[i] > containersHeight) { return false; } } // Рекурсивный вызов для оставшихся предметов for (i=1;i< remainingItems+1;i++) return canPlaceItems(containersHeight - itemHeight[i], remainingItems - 1); } int main() { setlocale(0, "RUS"); int numContainers, //кол=во контейнеров containerHeight, //высота вонтейнера numItems; //кол-во предметов cout << "Введите кол-во контейнеров: "; cin >> numContainers; cout << "Введите высоту контейнера: "; cin >> containerHeight; cout << "Введите кол-во предметов: "; cin >> numItems; if (canPlaceItems(numContainers * containerHeight, numItems)) cout << "Предметы поместились."; else cout << "Предметы не поместились."; cout << "\n\n"; return 0; }

Проблема в вашей программе заключается в неправильном использовании цикла for в функции canPlaceItems. Внутри цикла вы используете переменную i для индексации элементов массива itemHeight, но вы начинаете с 1 вместо 0. Это приводит к тому, что первый элемент массива itemHeight не проверяется на соответствие условию и может вызвать неправильный результат.

Чтобы исправить эту проблему, вам нужно изменить начальное значение переменной i на 0 в цикле for:

for (i = 0; i < remainingItems; i++) { cout << i+1 << ")"; cin >> itemHeight[i]; }

Также, вам следует добавить проверку на выход из цикла, если предмет не помещается в контейнер:

for (i = 0; i < remainingItems; i++) { if (itemHeight[i] > containersHeight) { return false; } }

Это позволит правильно проверить все предметы и вернуть false, если хотя бы один из них не помещается в контейнер.

После внесения этих изменений ваша программа должна работать правильно.