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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
povtiasd051
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 135
#1

Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача - C++

24.06.2011, 23:56. Просмотров 1099. Ответов 19
Метки нет (Все метки)

У покупателя есть n монет достоинством H(1),...,H(n). У продавца есть m монета достоинством B(1),...,B(1). Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача (если она необходима).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2011, 23:56     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача
Посмотрите здесь:

Сколько единиц товара сможет купить покупатель и какова его сдача? - C++
Известна сумма денег, что есть у покупателя и стоимость одной единицы товара. Сколько единиц товара сможет купить покупатель и какова его...

Сколько единиц товара сможет купить покупатель и какова его сдача? - C++
1. Известна сумма денег, имеющаяся у покупателя и стоимость одной единицы товара. Сколько единиц товара сможет купить покупатель и какова...

Обработать строку так, чтобы чтобы в ней остались только те слова которые содержат буквы и цифры - C++
Привет всем, помогите решить задачу. Обработать строку таким образом чтобы чтобы в ней остались только те слова которые содержат буквы и...

Найти количество денег, необходимое Пете, чтобы купить 3 целых упаковки конфет - C++
В магазине ириски продаются только в упаковке, по 30 штук, и стоят 60 рублей. Пионеру Пете нужно 3 целых упаковки(90 конфет), зачем -...

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

Составить алгоритм и программу, которая определит сколько досок надо купить, чтобы поставить сплошной забор - C++
В С++ Имеется садовый участок, имеющий форму прямоугольника со сторонами А метров и В метров. Составьте алгоритм и программу, которая...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dmitry_gdv
64 / 64 / 5
Регистрация: 18.03.2010
Сообщений: 352
25.06.2011, 15:40     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача #2


может

или не может

а вдруг он и может и не может?
а как ты думаш?
JeyKip
53 / 45 / 2
Регистрация: 23.06.2011
Сообщений: 122
25.06.2011, 18:21     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача #3
заинтересовала задача...поэтому, интересно было сделать...дает правильный ответ с высокой вероятностью...

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <time.h>
#include <set>
#include <math.h>
using namespace std;
 
int  Summ(int * mas, int count_el);
set<int> CombinationSumm (int * mas, int count_el);
int Sochetanie (int n, int m);
int CountSet (set<int> s);
int CanZdacha (set<int> prod, set<int> pokup, int price);
 
void main()
{
    
    setlocale(0,"");
    int m_prod, m_pokup;
    int *nom_prod, *nom_pokup;
    int price;
 
    printf("%s","Введите количество монет у продавца и покупателя соответственно\n");
    scanf("%d %d",&m_prod, &m_pokup);
 
    nom_prod = new int [m_prod];
    nom_pokup = new int [m_pokup];
 
    printf("%s","Введите номиналы монет у продавца\n");
    for (int i=0; i<m_prod; i++)
        scanf("%d",&nom_prod[i]);
 
    printf("%s","Введите номиналы монет у покупателя\n");
    for (int i=0; i<m_pokup; i++)
        scanf("%d",&nom_pokup[i]);
 
    printf("%s","Введите стоимость покупки\n");
    scanf("%d", &price);
 
    //хватит ли денег на покупку
    if (price > Summ(nom_pokup, m_pokup))
    {
        printf("%s", "\nПокупатель не может приобрести покупку. У него недостаточно денег");
        getch();
        exit(0);
    }
    else
    {
        int z = CanZdacha(CombinationSumm (nom_prod, m_prod), CombinationSumm (nom_pokup, m_pokup), price);
        switch (z)
        {
        case 0:
            printf("%s","\nКлиент дал под расчет");
            break;
        case 1:
            printf("%s", "\nЗдача есть");
            break;
        case 2:
            printf("%s", "\nЗдачи нет");
            break;
        }
    } 
    getch();
}
 
int Summ(int * mas, int count_el)
{
    int summ = 0;
    for (int i = 0; i<count_el; i++)
        summ+=mas[i];
    return summ;
}
 
set<int> CombinationSumm (int * mas, int count_el)
{
    int sum = 0;
    int money = 0;
    set<int> sets;
    set<int> sets_2;
    set<int>::iterator it1 = sets.begin();
    set<int>::iterator it2 = sets_2.begin();
 
    srand(time(0));
 
    for (int i=1; i<=count_el; i++)
    {
        for (int j=0; j<Sochetanie(count_el, i)*5; j++)
        {
            do
            {
                sets_2.insert(rand()%count_el);
            }
            while (CountSet(sets_2) != i);
 
            it2 = sets_2.begin();
            while (it2 != sets_2.end())
            {
                sum+=mas[*it2];
                it2++;
            }
            sets_2.clear();
            sets.insert(sum);
            sum = 0;
        }
    }
    return sets;
}
 
int Sochetanie (int n, int m)
{
    int p = 1;
    for (int i = m; i>0; i--)
        p*=(n--);
    return p;
}
 
int CountSet (set<int> s)
{
    set<int>::iterator it = s.begin();
    int count = 0;
    while (it != s.end())
    {
        count++;
        it++;
    }
    return count;
}
 
int CanZdacha (set<int> prod, set<int> pokup, int price)
{
    int zdacha = 2;
    set<int>::iterator it1 = prod.begin();
    set<int>::iterator it2 = pokup.begin();
 
    while (it1 != prod.end())
    {
        it2 = pokup.begin();
        while (it2 != pokup.end())
        {
            if ((*it2 - price) == *it1)
            {
                zdacha = 1;
                break;
            }
            else if ((*it2 - price) == 0)
            {
                zdacha = 0;
                break;
            }
            it2++;
        }
        it1++;
    }
    return zdacha;
}
sandye51
25.06.2011, 18:32
  #4

Не по теме:

жесть, ассоциативные контейнеры STL и стандартный вывод С

povtiasd051
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 135
08.07.2011, 07:51  [ТС]     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача #5
Цитата Сообщение от JeyKip Посмотреть сообщение
заинтересовала задача...поэтому, интересно было сделать...дает правильный ответ с высокой вероятностью...

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <time.h>
#include <set>
#include <math.h>
using namespace std;
 
int  Summ(int * mas, int count_el);
set<int> CombinationSumm (int * mas, int count_el);
int Sochetanie (int n, int m);
int CountSet (set<int> s);
int CanZdacha (set<int> prod, set<int> pokup, int price);
 
void main()
{
    
    setlocale(0,"");
    int m_prod, m_pokup;
    int *nom_prod, *nom_pokup;
    int price;
 
    printf("%s","Введите количество монет у продавца и покупателя соответственно\n");
    scanf("%d %d",&m_prod, &m_pokup);
 
    nom_prod = new int [m_prod];
    nom_pokup = new int [m_pokup];
 
    printf("%s","Введите номиналы монет у продавца\n");
    for (int i=0; i<m_prod; i++)
        scanf("%d",&nom_prod[i]);
 
    printf("%s","Введите номиналы монет у покупателя\n");
    for (int i=0; i<m_pokup; i++)
        scanf("%d",&nom_pokup[i]);
 
    printf("%s","Введите стоимость покупки\n");
    scanf("%d", &price);
 
    //хватит ли денег на покупку
    if (price > Summ(nom_pokup, m_pokup))
    {
        printf("%s", "\nПокупатель не может приобрести покупку. У него недостаточно денег");
        getch();
        exit(0);
    }
    else
    {
        int z = CanZdacha(CombinationSumm (nom_prod, m_prod), CombinationSumm (nom_pokup, m_pokup), price);
        switch (z)
        {
        case 0:
            printf("%s","\nКлиент дал под расчет");
            break;
        case 1:
            printf("%s", "\nЗдача есть");
            break;
        case 2:
            printf("%s", "\nЗдачи нет");
            break;
        }
    } 
    getch();
}
 
int Summ(int * mas, int count_el)
{
    int summ = 0;
    for (int i = 0; i<count_el; i++)
        summ+=mas[i];
    return summ;
}
 
set<int> CombinationSumm (int * mas, int count_el)
{
    int sum = 0;
    int money = 0;
    set<int> sets;
    set<int> sets_2;
    set<int>::iterator it1 = sets.begin();
    set<int>::iterator it2 = sets_2.begin();
 
    srand(time(0));
 
    for (int i=1; i<=count_el; i++)
    {
        for (int j=0; j<Sochetanie(count_el, i)*5; j++)
        {
            do
            {
                sets_2.insert(rand()%count_el);
            }
            while (CountSet(sets_2) != i);
 
            it2 = sets_2.begin();
            while (it2 != sets_2.end())
            {
                sum+=mas[*it2];
                it2++;
            }
            sets_2.clear();
            sets.insert(sum);
            sum = 0;
        }
    }
    return sets;
}
 
int Sochetanie (int n, int m)
{
    int p = 1;
    for (int i = m; i>0; i--)
        p*=(n--);
    return p;
}
 
int CountSet (set<int> s)
{
    set<int>::iterator it = s.begin();
    int count = 0;
    while (it != s.end())
    {
        count++;
        it++;
    }
    return count;
}
 
int CanZdacha (set<int> prod, set<int> pokup, int price)
{
    int zdacha = 2;
    set<int>::iterator it1 = prod.begin();
    set<int>::iterator it2 = pokup.begin();
 
    while (it1 != prod.end())
    {
        it2 = pokup.begin();
        while (it2 != pokup.end())
        {
            if ((*it2 - price) == *it1)
            {
                zdacha = 1;
                break;
            }
            else if ((*it2 - price) == 0)
            {
                zdacha = 0;
                break;
            }
            it2++;
        }
        it1++;
    }
    return zdacha;
}
эта программа не запускается помогите исправит ошибки в программе
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.07.2011, 07:54     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача #6
Цитата Сообщение от povtiasd051 Посмотреть сообщение
эта программа не запускается помогите исправит ошибки в программе
Какой у вас компилятор? Если борланд - забудьте.
povtiasd051
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 135
08.07.2011, 07:57  [ТС]     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача #7
Цитата Сообщение от diagon Посмотреть сообщение
Какой у вас компилятор? Если борланд - забудьте.
На борланде не пашет что, а сможешь выложит вариант который работает с на нем
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.07.2011, 08:01     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача #8
С таким условием - нет.
Цитата Сообщение от povtiasd051 Посмотреть сообщение
У продавца есть m монета достоинством B(1),...,B(1).
Как это понимать? У продавца m монет достоинством в 1 единицу?
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
08.07.2011, 08:04     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача #9
врядли тут у кого то борланд есть, так что "точить" самому придётся
povtiasd051
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 135
08.07.2011, 08:06  [ТС]     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача #10
Цитата Сообщение от diagon Посмотреть сообщение
С таким условием - нет.

Как это понимать? У продавца m монет достоинством в 1 единицу?
В этом месте ошибка не B(1),...B(1) должен быт там вот так B(1),...B(m)
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.07.2011, 08:16     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача #11
Со убожеством борланда я не знаком, однако алгоритм примерно такой:
Перебираете все возможные комбинации из монет покупателя, сумма которых больше S, и к ним подбираете все возможные комбинации из монет продавца. Если монеты покупателя - монеты продавца == S то сделка возможна...
povtiasd051
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 135
08.07.2011, 08:45  [ТС]     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача #12
Цитата Сообщение от diagon Посмотреть сообщение
Со убожеством борланда я не знаком, однако алгоритм примерно такой:
Перебираете все возможные комбинации из монет покупателя, сумма которых больше n, и к ним подбираете все возможные комбинации из монет продавца. Если монеты покупателя - монеты продавца == S то сделка возможна...
На этом спасибо а ты не знаешь кто его сможет сделать

Добавлено через 4 минуты
Цитата Сообщение от diagon Посмотреть сообщение
Со убожеством борланда я не знаком, однако алгоритм примерно такой:
Перебираете все возможные комбинации из монет покупателя, сумма которых больше S, и к ним подбираете все возможные комбинации из монет продавца. Если монеты покупателя - монеты продавца == S то сделка возможна...
Дружище на Паскале Сможешь выложит

Добавлено через 19 минут
Кто хорош шарит в borland С++ помогите да
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
08.07.2011, 09:26     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача #13
да ни у кого нету тут borland c++, в каком году его последняя версия вышла? Есть шанс что во фрилансе кто-нибудь за умеренную плату специально для тебя скачает его и будет колбаситься с ним, а так врядли
povtiasd051
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 135
08.07.2011, 09:32  [ТС]     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача #14
Цитата Сообщение от pito211 Посмотреть сообщение
да ни у кого нету тут borland c++, в каком году его последняя версия вышла? Есть шанс что во фрилансе кто-нибудь за умеренную плату специально для тебя скачает его и будет колбаситься с ним, а так врядли
че так слабо с этим языком вроде он как бы самый популярный чем Паскал
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2011, 09:35     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача
Еще ссылки по теме:

Точная P-ая степень - C++
Точная P-ая степень Число x является точным квадратом, если для некотого целого b, x = b2. Аналогично x является точным кубом, если для...

Почему тип char не может делать вот так += - C++
Я хочу из входного текста получить другой текст. Например: ТЕКСТ, а я хочу получить ТСКЕТ то есть предложение или слово только...

Точная степень двойки - C++
Само задание: Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае. ...

Может так случится, что процесс приема новых сообщений и их прорисовки превратится в бесконечный цикл? - C++
Допустим у меня есть приложение, которое добавляет в себя поступающие сообщения. А эти сообщения сыпят постоянно. Может так случится,что...


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

Или воспользуйтесь поиском по форуму:
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
08.07.2011, 09:35     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача #15
а тем что он уже 10 лет не обновляется, а прогресс не стоит на месте, как известно.
Yandex
Объявления
08.07.2011, 09:35     Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача
Ответ Создать тему
Опции темы

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