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

Задача с монетами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.78
Zoger
3 / 3 / 0
Регистрация: 10.10.2010
Сообщений: 68
08.04.2013, 14:44     Задача с монетами #1
Здравствуйте! я начал изучать С++ и вот такая задача. "Дано натуральное число N. Как наименьшим количеством монет можно выплатить N копеек. Предполагается что в достаточном количестве имеются монеты достоинством 1, 2, 3, 4, 5, 10, 15, 20, 50 копеек."

я написал программу в wxDev-C++
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
#include <iostream>
using namespace std;
int main () {
    int i;
 
    cout << "vvedite natural'noe chislo: ";
    cin >> i;
 
    if (i < 50) cout << " '50' = 0; ";
    else
     cout << " '50' = " << i / 50 << "\n";
    i = i % 50;
 
    if (i < 20) cout << " '20' = 0; ";
    else
     cout << " '20' = " << i / 20 << "\n";
    i = i % 20;
 
    if (i < 15) cout << " '15' = 0; ";
    else
     cout << " '15' = " << i / 15 << "\n";
    i = i % 15;
 
    if (i < 10) cout << " '10' = 0; ";
    else
     cout << " '10' = " << i / 10 << "\n";
    i = i % 10;
 
    if (i < 5) cout << " '5' = 0; ";
    else
     cout << " '5' = " << i / 5 << "\n";
    i = i % 5;
 
    if (i < 3) cout << " '3' = 0; ";
    else
     cout << " '3' = " << i / 3 << "\n";
    i = i % 3;
 
    if (i < 2) cout << " '2' = 0; ";
    else
     cout << " '2' = " << i / 2 << "\n";
    i = i % 2;
     cout << " '1' = " << i << "\n";
 
    getchar ();
    system ("PAUSE");
    return 0;
}
в принципе задачка решена, но я не знаю как все это упростить, ведь по любому это можно сделать... и еще 1 вопрос: я хочу чтоб ответы выводились в новую строку, вроде все сделал правильно, а ответы не всегда выводятся с новой строки, и каждый раз какой то ответ с новой строки, а какой то нет.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2013, 14:44     Задача с монетами
Посмотрите здесь:

C++ составить алгоритм подсчета количества способов, которыми можно разменять рубль медными монетами(достоинством в1,2,3,5 копеек)
Определить все возможные варианты выплаты суммы N монетами 2 5 10 C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nuqlear
5 / 5 / 0
Регистрация: 05.11.2011
Сообщений: 17
08.04.2013, 16:13     Задача с монетами #2
Мой вариант решения:
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
#include <iostream>
using namespace std;
int main ()
{
    // количество использованных монет
    int coins_amount=0;
 
    // доступные монеты
    int coins_value[9]={1,2,3,4,5,10,15,20,50};
 
    // сколько монет каждой величины использовали при оплате
    int coins_used[9];
    for (int i=0; i<9; i++)
        coins_used[i]=0;
 
    int price;
    cout << "vvedite stoimost'" << endl;
    cin >> price;
    while(price!=0)
    {
        for (int i=8; i>=0; i--)
        {
            if (price>=coins_value[i])
            {
                price=price-coins_value[i];
                coins_amount++;
                coins_used[i]++;
                break;
            }
        }
    }
 
    cout << "kolichestvo monet: "<< coins_amount << endl;
    for (int i=0; i < 9; i++)
        cout << coins_used[i] << " монет величиной " << coins_value[i] << endl;
    return 0;
}
Zoger
3 / 3 / 0
Регистрация: 10.10.2010
Сообщений: 68
09.04.2013, 15:39  [ТС]     Задача с монетами #3
А как можно подсчитать минимальное количество монет не подскажешь?
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
09.04.2013, 16:06     Задача с монетами #4
Zoger, задача на жадный алгоритм. создаёте счётчик = 0. Идёте по всем достоинствам монет, если сумма, которую нужно набрать > достоинство, берёте монету с этим достоинством и увеличиваете счётчик, а сумму уменьшаете на это достоинство.
Zoger
3 / 3 / 0
Регистрация: 10.10.2010
Сообщений: 68
09.04.2013, 16:21  [ТС]     Задача с монетами #5
можно это показать наглядно? код имею ввиду.
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
09.04.2013, 16:25     Задача с монетами #6
Zoger,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main(){
    int n;
    cin >> n;
    int a[] = {1,2,3,4,5,10,15,20,50};
    int cnt = 0;
    while (n > 0){
        for (int i = 8; i >= 0; i--)
            if (n >= a[i]){
                cnt += n / a[i];
                n %= a[i];
            }
    }
    cout << cnt;
    return 0;
}
Zoger
3 / 3 / 0
Регистрация: 10.10.2010
Сообщений: 68
09.04.2013, 18:20  [ТС]     Задача с монетами #7
Цитата Сообщение от Ternsip Посмотреть сообщение
Zoger,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main(){
    int n;
    cin >> n;
    int a[] = {1,2,3,4,5,10,15,20,50};
    int cnt = 0;
    while (n > 0){
        for (int i = 8; i >= 0; i--)
            if (n >= a[i]){
                cnt += n / a[i];
                n %= a[i];
            }
    }
    cout << cnt;
    return 0;
}
Спасибо большое, и код( если посижу немного и подумаю), думаю пойму. Просто некоторые коды я вообще не понимаю, знаний видать слишком мало))
Yandex
Объявления
09.04.2013, 18:20     Задача с монетами
Ответ Создать тему
Опции темы

Текущее время: 06:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru