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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
#1

Программа вылетает (банкомат) - C++

03.07.2011, 20:57. Просмотров 1373. Ответов 9
Метки нет (Все метки)

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

Формат входных данных

Первая строка входных данных содержит натуральное число n, 0<n<=100. Вторая строка входных данных содержит n различных натуральных чисел x1, x2, ..., xn, не превосходящих 1.000.000. Третья строчка содержит натуральное число S, не превосходящее 5.000.000.

Формат выходных данных

Программа должна найти представление числа S в виде суммы слагаемых из множества {xi}, содержащее минимальное число слагаемых и вывести это представление на экран (в виде последовательности чисел, разделенных пробелами). Если таких представлений существует несколько, то программа должна вывести любое (одно) из них. Если такое представление не существует, то программа должна вывести слово impossible.

Пример

Входные данные

5
1 3 7 12 32
40
Выходные данные

1 7 32
Входные данные

5
10 50 100 500 1000
99
Выходные данные

impossible
Заменим пока условие вывода на posible и imposible без вывода, я сделал программу
C++
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
#include "stdafx.h"
#include "iostream"
#include "vector"
 
using namespace std;
 
int n;
int s;
bool isImposible;
vector<int> numbers;
 
void next(int source , vector<int> usingNumbers = * new vector<int>)
{
    if (!isImposible)
    {
        for(int a=numbers.size()-1;a>=0;a--)
        {
            int newSource = s - numbers[a];
            if (newSource==0)
            {
                isImposible = true;
                break;
            }
            if (newSource > 0)
            {
                vector<int> v = usingNumbers;
                v.push_back(newSource);
                next(newSource,v);
            }
        }
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    isImposible = false;
    FILE * file;
    file = fopen("input.txt", "rt");
    fscanf(file, "%d", &n);
    cout << n << endl;
    for (int a=0;a<n;a++)
    {
        int q;
        fscanf(file, "%d", &q);
        numbers.push_back(q);
        cout << q << " ";
    }
    cout << endl;
    fscanf(file, "%d", &s);
    cout << s << endl;
    next(s);
    if (isImposible)
        cout << "Posible!";
    cin >> *new int;
    return 0;
}
Долго искал ошибку, но не нашел, программа вылетает с ошибкой "необработанное исключение" после долгого выполнения
Заранее спасибо за помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2011, 20:57     Программа вылетает (банкомат)
Посмотрите здесь:

Программа-банкомат! - C++
Довольно интересная задача, описал ее как смог, если что неясно по условию, спрашивайте. Используя оператор Switch, задать принцип...

программа вылетает. - C++
привет всем! я новичок. программа ошибок не выдаёт. После ввода всех переменных программа вылетает я не успеваю увидеть ответ. вот он...

Вылетает программа - C++
Здравствуйте Написала программу, ошибок и предупреждений во время компиляции не происходит, программа вылетает при определенных условиях,...

Программа вылетает - C++
Borland C++3.1 консольное приложение При определенных данных программа вылетает. Что это означает? ошибка?какая?

Программа С++ вылетает - C++
Вылетает.Я новичок в с++ подскажите может надо что то дописать? #include &lt;iostream&gt; // Подключение библиотеки потокового ввода/вывода ...

Вылетает программа - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; struct game2048 { int ar; void start() {

Вылетает программа - C++
Компилятор ошибок не выдает. В ходе работы программы вылетает окно: Скриншот Вот код: #include &lt;iostream&gt; using namespace std; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
schdub
2940 / 1284 / 238
Регистрация: 19.01.2009
Сообщений: 3,358
Завершенные тесты: 1
03.07.2011, 21:03     Программа вылетает (банкомат) #2
Цитата Сообщение от hepr Посмотреть сообщение
C++
1
vector<int> usingNumbers = * new vector<int>
Цитата Сообщение от hepr Посмотреть сообщение
C++
1
cin >> *new int;
что это ?
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
03.07.2011, 21:04  [ТС]     Программа вылетает (банкомат) #3
Что бы программа не закрывалась сразу - мой вариант индусского кода
Bers
Заблокирован
03.07.2011, 21:06     Программа вылетает (банкомат) #4
Цитата Сообщение от hepr Посмотреть сообщение
мой вариант индусского кода
С таким отношением грех на вылеты жаловаться.
schdub
2940 / 1284 / 238
Регистрация: 19.01.2009
Сообщений: 3,358
Завершенные тесты: 1
03.07.2011, 21:08     Программа вылетает (банкомат) #5
Цитата Сообщение от hepr Посмотреть сообщение
Что бы программа не закрывалась сразу - мой вариант индусского кода
C++
1
system("pause");
Добавлено через 45 секунд
Ну а в строке 12 что происходит ?
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
03.07.2011, 21:11  [ТС]     Программа вылетает (банкомат) #6
Ну а в строке 12 что происходит ?
объявление функции, а следом её описание
schdub
2940 / 1284 / 238
Регистрация: 19.01.2009
Сообщений: 3,358
Завершенные тесты: 1
03.07.2011, 21:13     Программа вылетает (банкомат) #7
Цитата Сообщение от hepr Посмотреть сообщение
объявление функции, а следом её описание
хорошо, а какие аргументы у этой функции???
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
03.07.2011, 21:14  [ТС]     Программа вылетает (банкомат) #8
source это исходное число которое надо разложить, как вы видите функция рекурсивная
а вектор это список уже использованных для разложения чисел
schdub
2940 / 1284 / 238
Регистрация: 19.01.2009
Сообщений: 3,358
Завершенные тесты: 1
03.07.2011, 21:16     Программа вылетает (банкомат) #9
Цитата Сообщение от hepr Посмотреть сообщение
next(s);
ну теперь взгляните на строку 51 где вы вызываете эту функцию
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2011, 08:23     Программа вылетает (банкомат)
Еще ссылки по теме:

Вылетает программа - C++
Вот что пишет: вот код: /*С клавиатуры вводятся две строки, содержащие некоторые слова, перечисленные через точку с запятой....

Вылетает программа - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &quot;students.h&quot; int *schetchik = new int(1); bool truepass (std::string passwordf) { ...

Вылетает программа - C++
Почему программа вылетает после ввода размерностей:(Исправьте пожалуйста #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;time.h&gt; ...

Вылетает программа - C++
Здравствуйте! Сама формулировка задачи: Массив записей содержит информацию о результатах сдачи зимней сессии: фамилия, шифр группы,...

Вылетает программа - C++
Здравствуйте еще раз! Сама по себе программа работает корректно, но после вывода информации в консоль, вылетает. #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
04.07.2011, 08:23  [ТС]     Программа вылетает (банкомат) #10
Цитата Сообщение от schdub Посмотреть сообщение
ну теперь взгляните на строку 51 где вы вызываете эту функцию
Ну вроде все ок, s это и есть изначальное значение, которое надо разложить, а в качестве второго аргумента идет тот что по умолчанию - пустой вектор

Добавлено через 36 минут
Никто тоже не может найти ошибку((

Добавлено через 10 часов 25 минут
Может быть кто решит задание и выложит, что бы я сам сопоставил решения, и чему-нибудь научился!
Yandex
Объявления
04.07.2011, 08:23     Программа вылетает (банкомат)
Ответ Создать тему
Опции темы

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