Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2011, 19:08   #1
Natysya
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 30
Вопрос Задача о ранце

Помогите решить задачу на С
Есть вес предметов и ценность, а также есть максимальный вес, который можно загрузить в ранец! Необходимо заполнить ранец так, чтобы стоимость предметов была максимальной и вес не привышал максимальный вес, который можно загрузить в ранец!
Спасибо!
Буду очень благодарна!
Natysya вне форума Ответить с цитированием
Старый 15.02.2011, 19:20   #2
Д_М
Пользователь
 
Регистрация: 02.02.2011
Сообщений: 92
По умолчанию

Классика жанра
Википедия Вам в помощь, там есть решение.
Д_М вне форума Ответить с цитированием
Старый 15.02.2011, 19:30   #3
Natysya
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 30
По умолчанию

Там решение не полное и на С++
Natysya вне форума Ответить с цитированием
Старый 15.02.2011, 19:58   #4
Д_М
Пользователь
 
Регистрация: 02.02.2011
Сообщений: 92
По умолчанию

Все решение - 10 строчек, перепишите на С - это несложно.
Д_М вне форума Ответить с цитированием
Старый 15.02.2011, 20:38   #5
Natysya
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 30
По умолчанию

это может Вам не сложно!
Natysya вне форума Ответить с цитированием
Старый 15.02.2011, 20:44   #6
Д_М
Пользователь
 
Регистрация: 02.02.2011
Сообщений: 92
По умолчанию

Я в Вас верю Все получится. Попробуйте, выкладывайте сюда свои попытки - поможем.
Д_М вне форума Ответить с цитированием
Старый 15.02.2011, 21:55   #7
Natysya
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 30
По умолчанию

Но что-то не правильно работает+мне надо выводить не только ценност но и количество предметов того типа, которого мы взяли.
Надеюсь на помощь!

Последний раз редактировалось Natysya; 15.02.2011 в 23:43.
Natysya вне форума Ответить с цитированием
Старый 15.02.2011, 22:26   #8
Д_М
Пользователь
 
Регистрация: 02.02.2011
Сообщений: 92
По умолчанию

1) Так на чем мы пишем? Чистый С или С++ ?
Если на С, то от cin>> и cout<< придется отказаться и использовать старый добрый
<stdio.h>

Код:
puts("Input count of subject = ");
scanf("%d", &n);
И malloc() вместо new

2) mas=new int [W];
Ошибка - массив надо отводить на 1 больше :

Код:
// C++
mas = new int[W+1];
// C
mas = (int*)malloc( (W+1) * sizeof(int) );
if(mas == NULL) {
  fprintf(stderr,"Out of memory\n");
  return 1;
}
3) double maxA_B(double a, double b)
Зачем double? У нас ведь все целочисленное. Пусть будет
Код:
int maxA_B(int a, int b) { return a > b ? a : b; }

Последний раз редактировалось Д_М; 15.02.2011 в 22:37.
Д_М вне форума Ответить с цитированием
Старый 15.02.2011, 22:34   #9
Natysya
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 30
По умолчанию

Согласна с замечаниями, но буду использовать cin, cout...так мне удобней! И никто замечаний не сделает!
Но почему-то выдает не правильный результат!!!
Natysya вне форума Ответить с цитированием
Старый 15.02.2011, 22:45   #10
Natysya
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 30
По умолчанию

У меня функция maxA_B написана не правильно - исправила!
Natysya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка оборудования(вариант "Задачи о ранце") matteo Общие вопросы C/C++ 1 11.03.2011 11:49
Задача по C++ GLAM1 Общие вопросы C/C++ 7 24.10.2010 17:41
О ранце fkorto Помощь студентам 3 28.04.2010 17:23
Задача о ранце werder_ua Помощь студентам 8 23.11.2009 13:50