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

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

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

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

24.12.2013, 16:37. Просмотров 698. Ответов 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 программа зависает.
как можно исправить?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2013, 16:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу понять правильно ли сделана? (C++):

не могу понять че тут не правильно - 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 символ который не входит во 2 заданную строку. Помогите исправить ошибку. ...

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

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

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

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

Добавлено через 10 минут
правильно ли я выполнил условие?
0
alsav22
5420 / 4816 / 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);
};
2
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
0
alsav22
5420 / 4816 / 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;
0
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
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.12.2013, 19:54 #8
Вижу свои предложения и ошибки компилятора, но не вижу, что и как сделано. Ясновидящих тут нет.
0
denstan
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
25.12.2013, 19:56  [ТС] #9
избавился от ошибок, но когда запускаю...выводит вот что:
0
Миниатюры
Не могу понять правильно ли сделана?  
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;
}
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.12.2013, 20:03 #11
Цитата Сообщение от denstan Посмотреть сообщение
избавился от ошибок,
Только хотел написать, что забыл указать создание поля самой структуры в классе, а вы уже сами исправили. Мой косяк, прошу прощения.
1
denstan
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
25.12.2013, 20:10  [ТС] #12
ничего страшного=)

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

Добавлено через 5 минут
Вы, в input(), создаёте локальный объект класса, который уже не существует при выходе из функции. Нужно в main() его создавать и передавать по ссылке в input(). Почему operator>> не перегрузили в классе? Напрашивается.
1
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;
}
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.12.2013, 20:26 #15
Опять не то написал.

Добавлено через 29 секунд
Цитата Сообщение от denstan Посмотреть сообщение
не совсем понял вас..
И правильно сделали.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2013, 20:26
Привет! Вот еще темы с ответами:

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

правильно ли сделана программа - 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++
Здравствуйте, такая задачка для олимпиады: Написал данный код(Без библиотек STL), но всё равно проверка выдаёт что не правильно....

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.12.2013, 20:26
Ответ Создать тему
Опции темы

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