Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Boyard1
0 / 0 / 0
Регистрация: 23.02.2017
Сообщений: 17
1

Планирование и написание программы

23.02.2017, 18:58. Просмотров 346. Ответов 12
Метки нет (Все метки)

Здравствуйте уважаемые участники форума, есть задание, для этой цели начал изучать С++.
Ознакомился немного с языком, но систематизировать данные в голове пока не получается.
Подскажите пожалуйста конкретно как писать ее, чтобы знал что учить.
Код не нужен, скажите пожалуйста типа: засунь все товары в массив, потом то-то и то-то сделай. А я изучу вопрос.
Нужно написать типа калькулятора:
Есть к примеру 40 футболок
10 синих, 10 красных, 10 черных, 10 белых.
каждого цвета футболки от 40 до 49 размера. (пример синяя 43, или красная 49 итд.)
так вот сам смысл работы программы:
в консоль с клавиатуры вводится две футболки (всегда только 2) программа насчитывает баллы по принципу:
если футболки одного размера - 5 баллов (например 43 красная и 43 черная)
если футболки одного цвета - 10 баллов (например 41 черная и 45 черная)
если у двух выбранных футболок соседние размеры - 7 балов (например 43 черная и 44 белая)
если 2 футболки одного цвета и соседние то суммируются балы два вышеуказанных пункта.
В консоль пользователь вводит 2 единицы а программа считает баллы и выдает результат.

Не могу воспринимать (трудно учить все подряд) от задания отталкиваясь намного быстрее и охотнее информация воспринимается.
Подскажите как это все написать.
Благодарен за любую помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2017, 18:58
Ответы с готовыми решениями:

Написание программы
Помогите программу написать пожалуйста.

Написание программы
Помогите с написанием программы

Написание программы по массивам
Помогите написать программу и описание работы программы, задание звучит так:...

Написание программы теста
Здравствуйте дорогие программисты. Если это возможно прошу помочь с решением...

Написание программы реверса строки
Не могу понять в чем ошибка выдаёт (2 3 3 3 3 3 3 3 3 3) Прошу помощи в...

12
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
23.02.2017, 19:31 2
Создай класс с двумя полями: цвет, размер. Ну, и функцию, куда передаются два объекта этого класса, и где производятся необходимые расчёты и возвращается результат.
1
Boyard1
0 / 0 / 0
Регистрация: 23.02.2017
Сообщений: 17
23.02.2017, 21:23  [ТС] 3
Чуть подробнее пожалуйста
0
ShadowKing
28 / 28 / 23
Регистрация: 18.04.2015
Сообщений: 81
Завершенные тесты: 1
23.02.2017, 21:39 4
Цитата Сообщение от Boyard1 Посмотреть сообщение
Чуть подробнее пожалуйста
Почитайте про структуры и классы в C/C++. Конечно, можно обойтись и без них, но так интереснее)
Создайте класс, например Tshirt с полями color и size. Размер - __int16 (если размеры футболок не будут превышать 255), цвет лучше сделать enum (RED, GREEN, BLUE), но можно и string или, опять же, __int16 (в этом случае при получении цвета необходим будет перевод в численный вид. Например красный - 0, синий - 1, зелёный - 2. Но это так муторно...)
В классе сделайте метод, называющийся например подсчёт, который принимает на вход объект класса Tshirt, производит необходимые вычисления и возвращает полученный балл.
Или же можете вне класса сделать функцию, которая будет принимать на вход два объекта класса Tshirt, проводить аналогичные вычисления и возвращать полученный балл.
1
Boyard1
0 / 0 / 0
Регистрация: 23.02.2017
Сообщений: 17
24.02.2017, 11:43  [ТС] 5
Подскажите пожалуйста как сложить данные со структур при вводе с клавиатуры:
пример -
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
struct all
{
    int dos;
    int mas;
    int cos;
};
 
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"RUSSIAN");
            
    all tu1;
    tu1.dos = 13;
    tu1.mas = 1;
    tu1.cos = 16;
 
    all tu2;
    tu2.dos = 13;
    tu2.mas = 2;
    tu2.cos = 16;
нужно передать команду консоли например чтобы сложила tu1.cos + tu2.cos.
пробую:
C++
1
2
3
4
5
6
    int a, b, r;  
          
    cin >> a;
    cin >> b;
    r = a + b;
        cout << r;
но так не получается, не знаю что в консоль вводить.
подскажите пожалуйста о добрые люди
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
24.02.2017, 15:11 6
Цитата Сообщение от Boyard1 Посмотреть сообщение
нужно передать команду консоли например чтобы сложила tu1.cos + tu2.cos.
C++
1
int r = tu1.cos + tu2.cos;
1
ShadowKing
28 / 28 / 23
Регистрация: 18.04.2015
Сообщений: 81
Завершенные тесты: 1
24.02.2017, 19:22 7
Цитата Сообщение от Boyard1 Посмотреть сообщение
нужно передать команду консоли например чтобы сложила tu1.cos + tu2.cos.
Самый простой вариант написал nd2. А я, пожалуй, напишу вариант с перегрузкой операторов на случай, если вам захочется при операции сложения суммировать более одного поля. А заодно и конструктор добавлю, на случай, если вы про него не читали:

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
struct all {
    int dos,
        mas,
    cos;
 
    all(): dos(0), mas(0), cos(0) {}  
    all(int dos, int mas, int cos): dos(dos), mas(mas), cos(cos) {}
 
    all& operator+(const all &right) {
        return all(
            dos + right.dos,
            mas + right.mas,
            cos + right.cos
        );
    }
 
    all& operator=(const all &right) {
        if (this == &right) return *this;
        dos = right.dos;
        mas = right.mas;
        cos = right.cos;
        return *this;
    }
};
Тогда можно будет сделать так:
C++
1
2
3
all tu1(13, 1, 16); 
all tu2(13, 2, 16);
all tu3 = tu1 + tu2;
В результате у tu3: dos = 26, mas = 3, cos = 32.
1
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
24.02.2017, 19:45 8
ShadowKing, при таких данных-членах явный оператор присваивания необязателен (неявный то же самое делает).
1
Boyard1
0 / 0 / 0
Регистрация: 23.02.2017
Сообщений: 17
25.02.2017, 13:22  [ТС] 9
Второй день копаюсь, читаю, лажу по форуму, смотрю туториалы и не могу разобратся.
В общем конкретная задача:
Объявил все единицы товара в виде структуры
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
struct all
{
    int dos;
    int mas;
    int cos;
};
 
 
 
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"RUSSIAN");
    
    
    
    all tu1;
    tu1.dos = 13;
    tu1.mas = 1;
    tu1.cos = 16;
 
    all tu2;
    tu2.dos = 13;
    tu2.mas = 2;
    tu2.cos = 16;
 
    all tu3;
    tu3.dos = 13;
    tu3.mas = 3;
    tu3.cos = 16;
    
    all tu4;
    tu4.dos = 13;
    tu4.mas = 4;
    tu4.cos = 16;
 
    all mo1;
    ko1.dos = 12;
    ko1.mas = 1;
    ko1.cos = 14;
 
    all mo2;
    ko2.dos = 12;
    ko2.mas = 2;
    ko2.cos = 14;
 
    all mo3;
    ko3.dos = 12;
    ko3.mas = 3;
    ko3.cos = 14;
 
    all mo4;
    ko4.dos = 12;
    ko4.mas = 4;
    ko4.cos = 14;
 
    all zm1;
    da1.dos = 11;
    da1.mas = 1;
    da1.cos = 13;
 
    all zm2;
    da2.dos = 11;
    da2.mas = 2;
    da2.cos = 13;
 
    all zm3;
    da3.dos = 11;
    da3.mas = 3;
    da3.cos = 13;
 
    all zm4;
    da4.dos = 11;
    da4.mas = 4;
    da4.cos = 13;
 
    all rt1;
    va1.dos = 10;
    va1.mas = 1;
    va1.cos = 12;
 
    all rt2;
    va2.dos = 10;
    va2.mas = 2;
    va2.cos = 12;
 
    all rt3;
    va3.dos = 10;
    va3.mas = 3;
    va3.cos = 12;
 
    all rt4;
    va4.dos = 10;
    va4.mas = 4;
    va4.cos = 12;
 
    all xz1;
    dc1.dos = 9;
    dc1.mas = 1;
    dc1.cos = 11;
самих единиц (футболок) намного больше чем скинул сюда.
задача написать калькулятор как описано в первом посте, чтобы в консоль вводишь пример rt1 и om2 а программа выдает результат- количество баллов, которое начисляет по определенному алгоритму. Вот как этот алгоритм прописать не знаю, это делается при помощи if else?

нужно например:
в первую очередь суммировать сos первой вещи и сos второй вещи, потом сопоставить mas если они совпадают то прибавить определенную сумму баллов, если не совпадают то не прибавлять, что-то типа того.
что мне конкретно нужно делать дальше? Я не знаю как обратится к члену структуры, и как сделать чтобы в консоль можно было бы ввести например rt1 и om2 и она распознала к чему я хочу обратится.
Благодарен за любую помощь
Подробнее скажите пожалуйста какие конструкции использовать, чтобы знал в какую сторону копать, ато выше был совет сделай функцию, я вот за 2 дня не разобрался какую именно и как ее делать. я полный новичек, но руки пока не опускаю.
Спасибо Вам
0
Boyard1
0 / 0 / 0
Регистрация: 23.02.2017
Сообщений: 17
26.02.2017, 19:34  [ТС] 10
Доброго времени суток.
В общем суть вопроса:
Как присвоить переменным в функции расчета данные с класа?

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
#include <cstdlib>
#include <iostream>
#include <locale>
#include <string>
using namespace std;
 
 
struct all
{
    int dos;
    int mas;
    int cos;
};
 
int ras();  // прототип функции
 
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"RUSSIAN");
    
    
    
    all tu1;
    tu1.dos = 13;
    tu1.mas = 1;
    tu1.cos = 16;
 
    all tu2;
    tu2.dos = 13;
    tu2.mas = 2;
    tu2.cos = 16;
 
    all tu3;
    tu3.dos = 13;
    tu3.mas = 3;
    tu3.cos = 16;
    
    all tu4;
    tu4.dos = 13;
    tu4.mas = 4;
    tu4.cos = 16;
 
    all mo1;
    ko1.dos = 12;
    ko1.mas = 1;
    ko1.cos = 14;
 
    all mo2;
    ko2.dos = 12;
    ko2.mas = 2;
    ko2.cos = 14;
 
    all mo3;
    ko3.dos = 12;
    ko3.mas = 3;
    ko3.cos = 14;
 
    all mo4;
    ko4.dos = 12;
    ko4.mas = 4;
    ko4.cos = 14;
 
    all zm1;
    da1.dos = 11;
    da1.mas = 1;
    da1.cos = 13;
 
    all zm2;
    da2.dos = 11;
    da2.mas = 2;
    da2.cos = 13;
 
    all zm3;
    da3.dos = 11;
    da3.mas = 3;
    da3.cos = 13;
 
    all zm4;
    da4.dos = 11;
    da4.mas = 4;
    da4.cos = 13;
    
    
    cout << ras(); //вывод в консоль
 cin.get(); // задерка консоли до нажатия клавиши
}
 
int ras() //функция расчета
{
    int a(5), b(10);
    return (a+b);
   }
как сделать чтобы когда в консоль вводишь например mo2 и tu3 или zm1 и mo1 (в консоль каждый раз будет обращение к разным объектам) чтобы программа сложила члены значений классов dos (dos + dos).
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
26.02.2017, 19:43 11
...
Цитата Сообщение от nd2 Посмотреть сообщение
и функцию, куда передаются два объекта этого класса, и где производятся необходимые расчёты и возвращается результат.
1
Boyard1
0 / 0 / 0
Регистрация: 23.02.2017
Сообщений: 17
26.02.2017, 19:46  [ТС] 12
как их передать эти объекты в эту функцию?
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
26.02.2017, 19:54 13
Прототип:
C++
1
int ras(all obj1, all obj2);
Вызов:
C++
1
ras(mo2, tu3);
1
26.02.2017, 19:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2017, 19:54

Написание простейшей шахматной программы
написать простейшую шахматную программу на языке С++

С++ Программа ,Функции , Варианты написание программы
Можно ли эту программу записать немного иначе , даже не знаю как сказать ,...

Написание программы вычисления функции. Ошибка
Написал программу, не могу понять, где описать часть условия, и вывести...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

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