Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 02.11.2019
Сообщений: 2

Написать программу «Пятерочка для всех» рассчитывающую стоимость покупки в магазине Пятерочка.

30.01.2021, 09:39. Показов 2688. Ответов 13

Студворк — интернет-сервис помощи студентам
Написать программу «Пятерочка для всех» рассчитывающую стоимость покупки в магазине Пятерочка. При решении использовать независимые кнопки выбора или комбинированный список выбора (при условии деления товаров на группы). Программа должна позволять пользователю выбирать минимум из 3 наименований, в случае если ни один товар не выбран выводить информацию на экран в виде доп. сообщения.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.01.2021, 09:39
Ответы с готовыми решениями:

Написать программу, рассчитывающую стоимость каждой покупки с учетом 0,5% к каждой покупки
Оооо тут Умные люди=)) ХЕЛП ХЕЛП ХЕЛП=)) Создать программу VBA, рассчитывающую стоимость каждой покупки с учетом 0,5% к каждой покупки. ...

Создать программу VBA, рассчитывающую стоимость каждой покупки
Здравствуйте! Помогите пожалуйста,плиз((((я в этом ни чего не понимаю, а срочно надо( а) Переведите числа. 105,79102, 8,16 б)...

Написать программу, вводящую сумму покупки и вычис-ляющую: а) стоимость доставки; б) стоимость покупки вместе с доставкой
Супермаркет доставляет продукты питания на дом. Эта услуга оплачивается сле-дующим образом: если сумма покупки не превышает 600 рублей, то...

13
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,082
Записей в блоге: 3
30.01.2021, 12:07
Цитата Сообщение от GalaxySentinel Посмотреть сообщение
рассчитывающую стоимость покупки в магазине
так?

здесь кот
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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
#include <iostream>
#include <vector>
#include <string>
#include <iomanip>
#include <Windows.h>
 
#define BANNER(v1,v2,v3) color::set(10);\
    std::cout << v1 << "\n" << v2 << "\n" << v3 << "\n"; color::set();
 
namespace color
{   void set(WORD text = 7, WORD background = 0)
    {   SetConsoleTextAttribute(    GetStdHandle(STD_OUTPUT_HANDLE),
                                    (background << 4) | text      );
    }
};
 
struct Tovar
{   std::string name;
    int         cost{0};
 
    void info()
    {   std::cout << "    " << std::setw(12) << name
                  << "  : " << cost << '\n';
    }
};
 
 
struct Group
{   std::string name;
    std::vector<Tovar> t;
 
    void push_tovar(std::string n, int cost)
    {   t.push_back(Tovar{n, cost});
    }
 
    void info()
    {   std::cout << "Tovar----------------------: " << name << '\n';
        size_t cnt = 1;
        for(auto e : t)
        {   std::cout << cnt++ << ". "; e.info();
        }
        std::cout << '\n';
    }
};
 
struct Magaz
{   std::vector<Group> v;
    void info()
    {   for(auto e : v)
        {   e.info();
        }
    }
 
    void info_group()
    {   int cnt = 1;
        for(auto e : v)
        {   std::cout << cnt++ << ". " << e.name << '\n';
        }
    }
 
    bool is_good(size_t g)
    {   if(g < v.size()) return true;
        std::cout << "Нет такой группы!\n"; Sleep(1500);
        return false;
    }
 
    void info_tovar(size_t c)
    {   v[c].info();
    }
 
    void push_group(std::string n)
    {   v.push_back(Group{n});
    }
 
    void push_tovar(std::string g, std::string t, int cost)
    {   size_t i = find(g);
        if(i != std::string::npos)
        {   v[i].push_tovar(t, cost);
        }
    }
 
    int getcost(size_t g, size_t c)
    {   if(c < v[g].t.size()) return v[g].t[c].cost;
        else std::cout << "Нет такого товара!\n\n"; Sleep(1500);
        return 0;
    }
 
private:
    size_t find(std::string n)
    {   for(size_t i = 0; i < v.size(); ++i)
        {   if(v[i].name == n) return i;
        }
        return std::string::npos;
    }
};
 
template<class T>
void print(short c, T m)
{   color::set(c); std::cout << m; color::set();
}
 
int main()
{
    setlocale(0, "");
 
    BANNER(
    "///-------------------------------|",
    "///         FULL LIST.            |",
    "///-------------------------------:")
 
    Magaz m;
          m.push_group("Мужские носки");
          m.push_group("Женские трусы");
          m.push_group("Напитки");
 
          m.push_tovar("Мужские носки", "Размер 1" , 59 );
          m.push_tovar("Мужские носки", "Размер 2" , 119);
          m.push_tovar("Женские трусы", "Резиновые", 299);
          m.push_tovar("Женские трусы", "Красные"  , 343);
          m.push_tovar("Женские трусы", "Белые"    , 143);
          m.push_tovar("Напитки"      , "Ситро"    , 70 );
 
    m.info();
 
    BANNER(
    "///-------------------------------|",
    "/// PRESS ENTER FOR GO INTO.      |",
    "///-------------------------------:")
    std::cin.get();
 
    int sum = 0;
    while(true)
    {   system("cls");
 
        BANNER(
        "///---------------------------|",
        "/// ALL GROUPS.               |",
        "///---------------------------:")
 
        m.info_group();
        std::cout << "\nSumma: "; print(4, sum); std::cout << '\n';
 
        size_t g;
        std::cout << "Input number group(или 0 для оплаты): ";
        std::cin >> g; std::cin.ignore();
        if(g == 0) break;
 
 
        if(m.is_good(g))
        while(true)
        {   system("cls");
            BANNER(
            "///-----------------------|",
            "/// TOVAR OF SELECT GROUP.|",
            "///-----------------------:")
            m.info_tovar(g-1);
            std::cout << "\nSumma: "; print(4, sum); std::cout << '\n';
            size_t c;
            std::cout << "Input number tovar(or 0 for exit up): ";
            std::cin >> c; std::cin.ignore();
            if(c == 0) break;
            sum += m.getcost(g-1, c-1);
        }
    }
 
    system("cls");
    std::cout << "ИТОГО ПОЛНАЯ СУММА К ОПЛАТЕ: " << sum << "\n";
    BANNER(
    "///--------------------------------------|",
    "/// Спасибо за покупку - приходите ещё.  |",
    "///--------------------------------------:")
}
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
30.01.2021, 14:29
Лучший ответ Сообщение было отмечено XLAT как решение

Решение

Цитата Сообщение от XLAT Посмотреть сообщение
#define BANNER(v1,v2,v3) color::set(10);\
    std::cout << v1 << "\n" << v2 << "\n" << v3 << "\n"; color::set();
C++
1
2
3
4
5
6
7
template <typename... TT> 
void Banner(TT&&... vals)
{
    color::set(10);
    ((std::cout << vals << std::endl), ...);
    color::set();
}
1
30.01.2021, 14:43

Не по теме:

oleg-m1973,
такой вар у меня есть,
изначально дефайны же, чтобы по звонку не включать в код,
но тут, да, по смыслу шаблон подходит,

но в итоге копипаста рулит, шо на глаза попалось то и сразу в дело :D
задача то, если не думать, то тупо - на скорость набора текста на клавиатуре.

но, хз, как можно тут изголится так, чтобы код остался понятен окружающим на него смотрящим.

0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
30.01.2021, 14:53
Цитата Сообщение от XLAT Посмотреть сообщение
но, хз, как можно тут изголится так, чтобы код остался понятен окружающим на него смотрящим.
Я вообще не сторонник использования макросов там, где их можно заменить функциями/классами в любом виде. Но здесь я бы не стал ничего писать, если бы мне, неожиданно для себя, не удалось сделать эту функцию довольно компактной. Просто, от радости, решил поделиться.
1
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,082
Записей в блоге: 3
30.01.2021, 15:03
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Я вообще не сторонник использования макросов
вас кто-то напугал макросами,
а меня вот напугали шаблонами, типа они код раздувают в объеме,
и вот ещё - одна строчка вызова из хедерной(шаблонной) glm у меня компилится на ноуте "полчаса".
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
30.01.2021, 15:12
Цитата Сообщение от XLAT Посмотреть сообщение
вас кто-то напугал макросами,
Нет, не напугал. Я начинал программировать, когда шаблонов ещё и в проекте не было. А возможность заменять ими большинство макросов, появилась, по моим меркам, вообще только вчера. Чем я с удовольствием и воспользовался. Тем не менее, макросы я использую довольно активно - шаблоны далеко не везде справляются.
Цитата Сообщение от XLAT Посмотреть сообщение
а меня вот напугали шаблонами, типа они код раздувают в объеме,
Здесь надо просто научится контролировать параметры шаблона и, по-возможности, переносить код, который не зависит от этих параметров в другую функцию/класс. Тогда ничего раздуваться больше необходимого не будет.
0
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,082
Записей в блоге: 3
30.01.2021, 15:33
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Тогда ничего раздуваться больше необходимого не будет
в оправдание макросов тоже можно чаво-нить написать:
например, как в данном случае макрос BANNER никакой опасности не несёт,
(не вижу какие трудноулавливаемые ошибки тут вообще можно сделать)
хотя в плане универсальности он в разы хуже,
но опять же мы видим как приходиться изголяться шаблонописателям в проверке типов,
которые нужно запретить к компиляции.


oleg-m1973, за ваш шаблон спасибо, я бы сам до такого не додумался.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
30.01.2021, 15:37
Цитата Сообщение от XLAT Посмотреть сообщение
например, как в данном случае макрос BANNER никакой опасности не несёт,
В данном виде теоретически несёт. Там аргументы нужно взять в скобки
Цитата Сообщение от XLAT Посмотреть сообщение
#define BANNER(v1,v2,v3) color::set(10);\
    std::cout << (v1) << "\n" << (v2) << "\n" << (v3) << "\n"; color::set();
0
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,082
Записей в блоге: 3
30.01.2021, 15:52
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
В данном виде теоретически несёт
ну, я хз, какая тут опасность?
например:
C++
1
BANNERx(2, 3, b?1:5);
компилятор не промолчит же - тыкнет носом(не своим) и на макрос и на то место где он должен быть исполнен.

Опасность это, когда компилятор молчит, когда рантайм сыпется.

но, ок, в целом, да, спорить тут не о чем.
0
 Аватар для НеАдмин
4 / 3 / 1
Регистрация: 05.06.2020
Сообщений: 85
31.01.2021, 18:35
XLAT, можно в компиляторе онлайн?
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
31.01.2021, 18:42
Цитата Сообщение от НеАдмин Посмотреть сообщение
можно в компиляторе онлайн?
Найдите компилятор онлайн с поддержкой WinApi и скопируйте код

Добавлено через 46 секунд
Или можете просто убрать всё выделение текста цветом
1
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,082
Записей в блоге: 3
31.01.2021, 20:19
Цитата Сообщение от НеАдмин Посмотреть сообщение
можно в компиляторе онлайн?
https://onlinegdb.com/yuHh6WhoN

почему то там std::setw(...) глючит
0
 Аватар для НеАдмин
4 / 3 / 1
Регистрация: 05.06.2020
Сообщений: 85
08.02.2021, 19:33
XLAT, Spasibo
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.02.2021, 19:33
Помогаю со студенческими работами здесь

Деление ячейки Пятёрочка, улица Строителей 5
Здравствуйте, Есть таблицы Краткая инфа(магазин,дальше другие данные) Полная инфа (имя магазина, адрес, другие данные) Я...

Написать программу, рассчитывающую стоимость изготовления и монтажа окон ПВХ
Написать программу, рассчитывающую стоимость изготовления и монтажа окон ПВХ. Предусмотреть выбор из списка combobox`ов количества...

Стоимость покупки в интернет-магазине Javascript
Помогите пожалуйста решить задание Создать документ с формой, содержащей 1 список, 2 текстовых поля и 2 кнопки: для подтверждения ввода...

Написать программу, вычисляющую стоимость покупки овощей (несколько видов). Стоимость 1 килограмма каждого вида овощей з
Написать программу, вычисляющую стоимость покупки овощей (несколько видов овощей). Стоимость 1 килограмма каждого вида овощей задать в...

Написать программу, которая вычислит стоимость покупки с учетом скидки
Написать программу, которая вычислит стоимость покупки с учетом скидки. Скидка 1% предоставляется, если сумма покупки больше 50 000 рублей,...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru