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

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

Войти
Регистрация
Восстановить пароль
 
 
denstan
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
#1

Не могу понять правильно ли сделана? - C++

24.12.2013, 16:37. Просмотров 662. Ответов 29
Метки нет (Все метки)

В радиоателье хранятся квитанции о сданной в ремонт радиоаппарату-
ре. Каждая квитанция содержит следующую информацию: наименование груп-
пы изделий (телевизоры, радиоприемники и т. п.), марку изделия, дату приемки
в ремонт, состояние готовности заказа (выполнен, не выполнен). Вывести ин-
формацию о состоянии заказов на текущие сутки для заданной группы изделий.
Кликните здесь для просмотра всего текста

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
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cstdlib>
 
class GoodsItem
{
public:
    std::string name, shop, manufacture;
    int year, price;
    friend bool operator < (const GoodsItem &item1, const GoodsItem &item2);
};
 
std::ostream& operator << (std::ostream &out, const GoodsItem &value);
 
class GoodsStore : public std::vector<GoodsItem>
{
public:
    void input(const int &amount);
    void printSelected(const int &price);
};
 
std::ostream &operator << (std::ostream &out, const GoodsStore &value);
 
int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "Russian");
 
    bool running(true);
    GoodsStore store;
 
    while (running) 
    {
        int caseInput;
        std::cout   << "\nViberite deistvie:\n"
                    << "1.Vvod\n" 
                    << "2.Vivod\n" 
                    << "3.Vivod po gotovnosti\n" 
                    << "4.vihod\n\n";
        std::cin >> caseInput;
 
        switch (caseInput)
        {
        case 1:
            int amount;
            std::cout << "Vvedite kol-vo zapisey: ";
            std::cin >> amount;
            store.input(amount);
            std::sort(store.begin(), store.end());
            break;
        case 2:
            std::cout << store;
            break;
        case 3:
            int price;
            std::cout << "gotovnost: ";
            std::cin >> price;
            store.printSelected(price);
            break;
        default:
            running = false;
        }
    }
 
    return EXIT_SUCCESS;
}
 
std::ostream& operator << (std::ostream &out, const GoodsItem &value)
{
    out << " Nazvanie izdeliya:    ;"   << value.name 
        << " marka izdeliya:    ;"  << value.manufacture
        << " data priema v remont:    ;"     << value.year 
        << " Gotovnost:   ;"    << value.price
 
        << std::endl;
    return out;
}
 
std::ostream &operator << (std::ostream &out, const GoodsStore &value) 
{
    out << "Perechen tovarov:" << std::endl;
    for (int i = 0; i < value.size(); ++i)
        out << value[i];
    return out;
}
 
bool operator < (const GoodsItem &item1, const GoodsItem &item2)
{
    return item1.price < item2.price;
}
 
void GoodsStore::input(const int &amount) 
{
    for (int i = 0; i < amount; ++i) {
        GoodsItem item;
 
        std::cout << "Vvedite Nazvanie izdeliya: ";
        std::cin >> item.name;
        std::cout << "Vvedite marky izdeliya: ";
        std::cin >> item.manufacture;
        std::cout << "Vvedite data priema v remont: ";
        std::cin >> item.year;
        std::cout << "Vvedite sostoyanie zakaza: ";
        std::cin >> item.price;
 
 
        this->push_back(item);
    }
}
 
void GoodsStore::printSelected(const int &price) 
{
    std::vector<GoodsItem>::iterator item = end();
    for (std::vector<GoodsItem>::iterator it = begin(); it != end(); ++it)
        if (price == it->price) item = it;
 
    if (item == end()) 
    {
        std::cout << "Zakaz Gotov " << price << " Ne gotov" << std::endl;
    }
    else std::cout << (*item) << std::endl;
}


Добавлено через 2 минуты
лепил с другой программы,
заметил ошибкку: когда ввожу дату приёма в ремон в формате 12.12.13 либо 12/12/13 программа зависает.
как можно исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2013, 16:37     Не могу понять правильно ли сделана?
Посмотрите здесь:

не могу понять че тут не правильно - C++
задание: Дана последовательность чисел а1,а2,...,аn. Указать наименьшую длину числовой оси, содержащуювсе эти числа.#include &lt;vcl.h&gt; ...

Не могу понять как написать правильно. - C++
Не могу понять как это написать правильно. Оно даже не компилируется. #include&lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;stdlib.h&gt; ...

Не могу понять как правильно считать строки - C++
Задача: Задача1. «Поиск в строке» Самым популярным вопросом прошлого контеста был вопрос о сколь угодно длинных строках. По...

Не могу понять почему программа работает не правильно! - C++
Задание: Программа находит в строке 1 символ который не входит во 2 заданную строку. Помогите исправить ошибку. ...

Не могу понять как правильно сделать задачу с функциями - C++
В рамках университетского Дня спорта в соревнованиях по кроссу участвуют команды факультетов, состоящие из трех преподавателей. При...

Написал программу, не могу понять правильно или нет - C++
Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int по формуле: S=a1*a2+a2*a3+a3*a4+. . . . . ...

Не могу понять, как правильно передать указатель на объект в файл - C++
Есть вектор v, который надо отсортировать. Есть класс MergeSort, который это должен делать, он содержит в качестве параметра указатель на...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.12.2013, 16:50     Не могу понять правильно ли сделана? #2
Цитата Сообщение от denstan Посмотреть сообщение
как можно исправить?
1) Заменить тип year на string. 2) Сделать дату отдельной структурой с тремя полями int: день, месяц, год.
denstan
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
24.12.2013, 18:49  [ТС]     Не могу понять правильно ли сделана? #3
Цитата Сообщение от alsav22 Посмотреть сообщение
1) Заменить тип year на string. 2) Сделать дату отдельной структурой с тремя полями int: день, месяц, год.
а можешь по подробнее написть про Сделать дату отдельной структурой с тремя полями int: день, месяц, год.

Добавлено через 10 минут
правильно ли я выполнил условие?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.12.2013, 18:53     Не могу понять правильно ли сделана? #4
Цитата Сообщение от denstan Посмотреть сообщение
про Сделать дату отдельной структурой с тремя полями int: день, месяц, год.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class GoodsItem
{
public:
    std::string name, shop, manufacture;
    struct date
    {
        int day;
        int month;
        int year;
    };
    int price;
    friend bool operator < (const GoodsItem &item1, const GoodsItem &item2);
};
denstan
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
25.12.2013, 16:02  [ТС]     Не могу понять правильно ли сделана? #5
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
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cstdlib>
 
class GoodsItem
{
public:
    std::string name, shop, manufacture;
   
    struct date
    {
        int day;
        int month;
        int year;
    };
     int  price;
    friend bool operator < (const GoodsItem &item1, const GoodsItem &item2);
};
 
std::ostream& operator << (std::ostream &out, const GoodsItem &value);
 
class GoodsStore : public std::vector<GoodsItem>
{
public:
    void input(const int &amount);
    void printSelected(const int &price);
};
 
std::ostream &operator << (std::ostream &out, const GoodsStore &value);
 
int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "Russian");
 
    bool running(true);
    GoodsStore store;
 
    while (running) 
    {
        int caseInput;
        std::cout   << "\nViberite deistvie:\n"
                    << "1.Vvod\n" 
                    << "2.Vivod\n" 
                    << "3.Vivod po cene\n" 
                    << "4.vihod\n\n";
        std::cin >> caseInput;
 
        switch (caseInput)
        {
        case 1:
            int amount;
            std::cout << "Vvedite kol-vo zapisey: ";
            std::cin >> amount;
            store.input(amount);
            std::sort(store.begin(), store.end());
            break;
        case 2:
            std::cout << store;
            break;
        case 3:
            int price;
            std::cout << "Gotovnost: ";
            std::cin >> price;
            store.printSelected(price);
            break;
        default:
            running = false;
        }
    }
 
    return EXIT_SUCCESS;
}
 
std::ostream& operator << (std::ostream &out, const GoodsItem &value)
{
    out << " Nazvanie izdeliya: "   << value.name 
        << " marka izdeliya: "  << value.manufacture
        << " data priema v remont: "     << value.date 
        << " CeNa: "    << value.price
        << " Magazin: " << value.shop
        << std::endl;
    return out;
}
 
std::ostream &operator << (std::ostream &out, const GoodsStore &value) 
{
    out << "Perechen tovarov:" << std::endl;
    for (int i = 0; i < value.size(); ++i)
        out << value[i];
    return out;
}
 
bool operator < (const GoodsItem &item1, const GoodsItem &item2)
{
    return item1.price < item2.price;
}
 
void GoodsStore::input(const int &amount) 
{
    for (int i = 0; i < amount; ++i) {
        GoodsItem item;
 
        std::cout << "Vvedite Nazvanie izdeliya: ";
        std::cin >> item.name;
        std::cout << "Vvedite marky izdeliya: ";
        std::cin >> item.manufacture;
        std::cout << "Vvedite data priema v remont: ";
        std::cin >> item.date;
        std::cout << "Vvedite sostoyanie zakaza: ";
        std::cin >> item.price;
        std::cout << "Vvedite nazvanie magaziNa: ";
        std::cin >> item.shop;
 
        this->push_back(item);
    }
}
 
void GoodsStore::printSelected(const int &price) 
{
    std::vector<GoodsItem>::iterator item = end();
    for (std::vector<GoodsItem>::iterator it = begin(); it != end(); ++it)
        if (price == it->price) item = it;
 
    if (item == end()) 
    {
        std::cout << "Zakaz Gotov " << price << " Ne gotov" << std::endl;
    }
    else std::cout << (*item) << std::endl;
}

выдает ошибку
C:\Users\DenStan\Desktop\789\789.cpp(81) : error C2274: 'function-style cast' : illegal as right side of '.' operator
C:\Users\DenStan\Desktop\789\789.cpp(110) : error C2274: 'function-style cast' : illegal as right side of '.' operator

Добавлено через 1 минуту
указывает на строчки 81 и 110
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.12.2013, 16:08     Не могу понять правильно ли сделана? #6
Чтобы вот так писать:
C++
1
2
 << value.date 
 std::cin >> item.date;
нужно перегрузить соответствующие операторы. Или делать ввод/вывод полями date:
C++
1
2
<< value.date.day
std::cin >> item.date.day;
denstan
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
25.12.2013, 19:41  [ТС]     Не могу понять правильно ли сделана? #7
Цитата Сообщение от alsav22 Посмотреть сообщение
Чтобы вот так писать:
C++
1
2
 << value.date 
 std::cin >> item.date;
нужно перегрузить соответствующие операторы. Или делать ввод/вывод полями date:
C++
1
2
<< value.date.day
std::cin >> item.date.day;
C:\Users\DenStan\Desktop\789\789.cpp(80) : error C2274: 'function-style cast' : illegal as right side of '.' operator
C:\Users\DenStan\Desktop\789\789.cpp(81) : error C2228: left of '.day' must have class/struct/union type
C:\Users\DenStan\Desktop\789\789.cpp(110) : error C2274: 'function-style cast' : illegal as right side of '.' operator
C:\Users\DenStan\Desktop\789\789.cpp(110) : error C2228: left of '.day' must have class/struct/union type
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.12.2013, 19:54     Не могу понять правильно ли сделана? #8
Вижу свои предложения и ошибки компилятора, но не вижу, что и как сделано. Ясновидящих тут нет.
denstan
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
25.12.2013, 19:56  [ТС]     Не могу понять правильно ли сделана? #9
избавился от ошибок, но когда запускаю...выводит вот что:
Миниатюры
Не могу понять правильно ли сделана?  
denstan
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
25.12.2013, 19:58  [ТС]     Не могу понять правильно ли сделана? #10
это понятно)

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
Вижу свои предложения и ошибки компилятора, но не вижу, что и как сделано. Ясновидящих тут нет.
Вот код кот. сейчас

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
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cstdlib>
 
class GoodsItem
{
public:
    std::string name,  manufacture;
   
    struct date
    {
        int day;
        int month;
        int year;
    }d;
     int  price;
    friend bool operator < (const GoodsItem &item1, const GoodsItem &item2);
};
 
std::ostream& operator << (std::ostream &out, const GoodsItem &value);
 
class GoodsStore : public std::vector<GoodsItem>
{
public:
    void input(const int &amount);
    void printSelected(const int &price);
};
 
std::ostream &operator << (std::ostream &out, const GoodsStore &value);
 
int main(int argc, char *argv[])
{
    bool running(true);
    GoodsStore store;
 
    while (running) 
    {
        int caseInput;
        std::cout   << "\nViberite deistvie:\n"
                    << "1.Vvod\n" 
                    << "2.Vivod\n" 
                    << "3.Vivod po cene\n" 
                    << "4.vihod\n\n";
        std::cin >> caseInput;
 
        switch (caseInput)
        {
        case 1:
            int amount;
            std::cout << "Vvedite kol-vo zapisey: ";
            std::cin >> amount;
            store.input(amount);
            std::sort(store.begin(), store.end());
            break;
        case 2:
            std::cout << store;
            break;
        case 3:
            int price;
            std::cout << "Gotovnost: ";
            std::cin >> price;
            store.printSelected(price);
            break;
        default:
            running = false;
        }
    }
 
    return EXIT_SUCCESS;
}
 
std::ostream& operator << (std::ostream &out, const GoodsItem &value)
{
    out << " Nazvanie izdeliya: "   << value.name 
        << " marka izdeliya: "  << value.manufacture
        << " den priema v remont: "     << value.d.day
        << " mesyac priema v remont: "     << value.d.month
        << " god priema v remont: "     << value.d.year
        << " Gotovnost: "    << value.price
 
        << std::endl;
    return out;
}
 
std::ostream &operator << (std::ostream &out, const GoodsStore &value) 
{
    out << "Perechen izdeliy:" << std::endl;
    for (int i = 0; i < value.size(); ++i)
        out << value[i];
    return out;
}
 
bool operator < (const GoodsItem &item1, const GoodsItem &item2)
{
    return item1.price < item2.price;
}
 
void GoodsStore::input(const int &amount) 
{
    for (int i = 0; i < amount; ++i) {
        GoodsItem item;
 
        std::cout << "Vvedite Nazvanie izdeliya: ";
        std::cin >> item.name;
        std::cout << "Vvedite marky izdeliya: ";
        std::cin >> item.manufacture;
        std::cout << "Vvedite den priema v remont: ";
        std::cin >> item.d.day;
        std::cout << "Vvedite mecyac priema v remont: ";
        std::cin >> item.d.month;
        std::cout << "Vvedite god priema v remont: ";
        std::cin >> item.d.year;
        std::cout << "Vvedite sostoyanie zakaza: ";
        std::cin >> item.price;
 
 
        this->push_back(item);
    }
}
 
void GoodsStore::printSelected(const int &price) 
{
    std::vector<GoodsItem>::iterator item = end();
    for (std::vector<GoodsItem>::iterator it = begin(); it != end(); ++it)
        if (price == it->price) item = it;
 
    if (item == end()) 
    {
        std::cout << "Zakaz Gotov " << price << " Ne gotov" << std::endl;
    }
    else std::cout << (*item) << std::endl;
}
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.12.2013, 20:03     Не могу понять правильно ли сделана? #11
Цитата Сообщение от denstan Посмотреть сообщение
избавился от ошибок,
Только хотел написать, что забыл указать создание поля самой структуры в классе, а вы уже сами исправили. Мой косяк, прошу прощения.
denstan
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
25.12.2013, 20:10  [ТС]     Не могу понять правильно ли сделана? #12
ничего страшного=)

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
Только хотел написать, что забыл указать создание поля самой структуры в классе, а вы уже сами исправили. Мой косяк, прошу прощения.
програма работает на 50%
она зависает когда ввожу данные
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.12.2013, 20:18     Не могу понять правильно ли сделана? #13
Сейчас посмотрю.

Добавлено через 5 минут
Вы, в input(), создаёте локальный объект класса, который уже не существует при выходе из функции. Нужно в main() его создавать и передавать по ссылке в input(). Почему operator>> не перегрузили в классе? Напрашивается.
denstan
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
25.12.2013, 20:23  [ТС]     Не могу понять правильно ли сделана? #14
Цитата Сообщение от alsav22 Посмотреть сообщение
Сейчас посмотрю.

Добавлено через 5 минут
Вы, в input(), создаёте локальный объект класса, который уже не существует при выходе из функции. Нужно в main() его создавать и передавать по ссылке в input(). Почему operator>> не перегрузили в классе? Напрашивается.
вы про этот участок кода говорите? не совсем понял вас..

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
int main(int argc, char *argv[])
{
    bool running(true);
    GoodsStore store;
 
    while (running) 
    {
        int caseInput;
        std::cout   << "\nViberite deistvie:\n"
                    << "1.Vvod\n" 
                    << "2.Vivod\n" 
                    << "3.Vivod po gotovnosti\n" 
                    << "4.vihod\n\n";
        std::cin >> caseInput;
 
        switch (caseInput)
        {
        case 1:
            int amount;
            std::cout << "Vvedite kol-vo zapisey: ";
            std::cin >> amount;
            store.input(amount);
            std::sort(store.begin(), store.end());
            break;
        case 2:
            std::cout << store;
            break;
        case 3:
            int price;
            std::cout << "Gotovnost: ";
            std::cin >> price;
            store.printSelected(price);
            break;
        default:
            running = false;
        }
    }
 
    return EXIT_SUCCESS;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2013, 20:26     Не могу понять правильно ли сделана?
Еще ссылки по теме:

правильно ли сделана программа - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #define e 0.00001 #define n 1000 int main() { ...

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

Правильно ли сделана программа есть ли ошибки - C++
#include&lt;ctype.h&gt; #include&lt;iostream.h&gt; char c; cin&gt;&gt;c; { if(isdigit(c)) cout&lt;&lt;&quot;Цифра&quot;; else if(isalpha(c)) ...

Правильно сделана перегруженная операция присваивания? - C++
Проверьте, пожалуйста, эту часть. Программа неправильно работает и думаю ошибка в операторе присваивания // узел template&lt;typename...

как правильно понять строку в коде? - C++
#include &lt;iostream&gt; #include &lt;cstdio&gt; using namespace std; int main() { int t , i; char text ; for (t=0 ; t&lt;10 ;...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.12.2013, 20:26     Не могу понять правильно ли сделана? #15
Опять не то написал.

Добавлено через 29 секунд
Цитата Сообщение от denstan Посмотреть сообщение
не совсем понял вас..
И правильно сделали.
Yandex
Объявления
25.12.2013, 20:26     Не могу понять правильно ли сделана?
Ответ Создать тему
Опции темы

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