Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
3 / 3 / 1
Регистрация: 23.09.2019
Сообщений: 107

Поиск автомобиля по любой из комбинаций признаков

04.05.2020, 21:24. Показов 3571. Ответов 50
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ввести структуру для регистрации автомашин. Она должна иметь следующие поля:
- дату регистрации (структура с полями - день, месяц, год);
- марку машины;
- год выпуска;
- цвет;
- номер.
Написать и протестировать функции:
- регистрация новой машины;
- удаление машины из регистрационного списка;
- поиск машины по любой из комбинаций признаков.

Код не полностью выполняет условие. Наткнулся на проблемы при написании функции добавления. Понимаю, что какая-то очевидная проблема, но найти ее не могу.

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
#include <iostream>
using namespace std;
 
struct car {
    int day, month, year;
    string mark;
    int yearOfIssue;
    string color, number;
 
};
 
int addCar(car* arr, car* arr2, int size) {
    
    for (int i = 0; i < size + 1; i++) {
        arr[i].day = arr2[i].day;
        arr[i].month = arr2[i].month;
        arr[i].year = arr2[i].year;
        arr[i].mark = arr2[i].mark;
        arr[i].yearOfIssue = arr2[i].yearOfIssue;
        arr[i].color = arr2[i].color;
        arr[i].number = arr2[i].number;
    }
    for (int i = size + 1; i <= size + 1; i++) {
        cout << "Date of registration: (day/month/year)" << endl;
        cin >> arr2[i].day >> arr2[i].month >> arr2[i].year;
        cout << "Mark of car: ";
        cin >> arr2[i].mark;
        cout << "Year of issue: ";
        cin >> arr2[i].yearOfIssue;
        cout << "Color of car: ";
        cin >> arr2[i].color;
        cout << "Number of car: ";
        cin >> arr2[i].number;
    }
    delete[] arr;
    return size + 1;
}
int main() {
    cout << "Enter number of cars: ";
    int size;
    cin >> size;
    car* arr = new car[size];
    for (int i = 0; i < size; i++) {
        cout << "Date of registration: (day/month/year)" << endl;
        cin >> arr[i].day >> arr[i].month >> arr[i].year;
        cout << "Mark of car: ";
        cin >> arr[i].mark;
        cout << "Year of issue: ";
        cin >> arr[i].yearOfIssue;
        cout << "Color of car: ";
        cin >> arr[i].color;
        cout << "Number of car: ";
        cin >> arr[i].number;
    }
    cout << "Do you want to add a new car? (+/-)" << endl;
    char s;
    cin >> s;
    if (s == '+') {
        car* arr2 = new car[size + 1];
        addCar(arr, arr2, size);
    }
    else cout << "Success!" << endl;
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.05.2020, 21:24
Ответы с готовыми решениями:

Поиск машины по любой комбинации из признаков
Всем привет!!!Написал программу на структуры но не могу понять как осушествлять в ней поиск машины по любой комбинации из признаков!...

Поиск данных по любому сочетанию признаков
У меня есть класс class zags { public: string ds; //Дата события string numb; //Номер Загса string fiom; //ФИО мужа ...

Поиск повторяющихся комбинаций
Есть список списков заменяющий массив 1000 на 10 заполненый случайными числами от 1 до 100. Нужно найти повторяющиеся комбинации чисел по...

50
3 / 3 / 1
Регистрация: 23.09.2019
Сообщений: 107
06.05.2020, 22:52  [ТС]
Студворк — интернет-сервис помощи студентам
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
#include <iostream>
using namespace std;
 
struct car {
    struct Date {
        int day, month, year;
    }date;
    string mark;
    int yearOfIssue;
    string color, number;
 
};
 
car* addCar(car* arr, int& size) {
    size++;
    car* arr2 = new car[size];
    for (int i = 0; i < size - 1; i++) {
        arr2[i].date.day = arr[i].date.day;
        arr2[i].date.month = arr[i].date.month;
        arr2[i].date.year = arr[i].date.year;
        arr2[i].mark = arr[i].mark;
        arr2[i].yearOfIssue = arr[i].yearOfIssue;
        arr2[i].color = arr[i].color;
        arr2[i].number = arr[i].number;
    }
    cout << "Date of registration: (day/month/year)" << endl;
    cin >> arr2[size - 1].date.day >> arr2[size - 1].date.month >> arr2[size - 1].date.year;
    cout << "Mark of car: ";
    cin >> arr2[size - 1].mark;
    cout << "Year of issue: ";
    cin >> arr2[size - 1].yearOfIssue;
    cout << "Color of car: ";
    cin >> arr2[size - 1].color;
    cout << "Number of car: ";
    cin >> arr2[size - 1].number;
    delete[]arr;
    arr = arr2;
    return arr;
}
void getInfo(car* arr, int size) {
    for (int i = 0; i < size; i++) {
        cout << "Date of registration: (day/month/year)" << endl;
        cin >> arr[i].date.day >> arr[i].date.month >> arr[i].date.year;
        cout << "Mark of car: ";
        cin >> arr[i].mark;
        cout << "Year of issue: ";
        cin >> arr[i].yearOfIssue;
        cout << "Color of car: ";
        cin >> arr[i].color;
        cout << "Number of car: ";
        cin >> arr[i].number;
    }
}
void outputInfo(car* arr, int size) {
    for (int i = 0; i < size; i++) {
        cout << "Date of registration: " << arr[i].date.day << ".0" << arr[i].date.month << "." << arr[i].date.year << endl;
        cout << "Mark of car: " << arr[i].mark << endl;
        cout << "Year of issue: " << arr[i].yearOfIssue << endl;
        cout << "Color of car: " << arr[i].color << endl;
        cout << "Number of car: " << arr[i].number << endl;
    }
}
int main() {
    cout << "Enter number of cars: ";
    int size;
    cin >> size;
    car* arr = new car[size];
    getInfo(arr, size);
    cout << "Date base: " << endl;
    cout << endl;
    outputInfo(arr, size);
    cout << "Do you want to add a new car? (+/-)" << endl;
    char s;
    cin >> s;
    if (s == '+') {
        arr = addCar(arr, size);
        cout << "Date base: \n" << endl;
        outputInfo(arr, size);
    }
    else cout << "Success!" << endl;
    system("pause");
    return 0;
}
Фух! Основная работа позади. Пошёл писать удаление и поиск. А вамYetty, большое спасибо!
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.05.2020, 23:02
Цитата Сообщение от fYm13 Посмотреть сообщение
Фух! Основная работа позади. Пошёл писать удаление и поиск.
поставьте delete[]arr; перед system("pause"); и подумайте всё-таки над вводом строки даты в формате "DD:MM:YYYY". также не помешает перейти с ввода слов на ввод строк (например марка может состоять из нескольких слов)
0
3 / 3 / 1
Регистрация: 23.09.2019
Сообщений: 107
06.05.2020, 23:12  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
подумайте всё-таки над вводом строки даты в формате "DD:MM:YYYY".
Да, просто я хотел разобраться с основными проблемами, а уже потом привести код в порядок.
Цитата Сообщение от Yetty Посмотреть сообщение
также не помешает перейти с ввода слов на ввод строк
Тоже задумался над этим.


Долго ждать себя я не заставил
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
#include <iostream>
using namespace std;
 
struct car {
    struct Date {
        int day, month, year;
    }date;
    string mark;
    int yearOfIssue;
    string color, number;
 
};
 
car* addCar(car* arr, int& size) {
    size++;
    car* arr2 = new car[size];
    for (int i = 0; i < size - 1; i++) {
        arr2[i].date.day = arr[i].date.day;
        arr2[i].date.month = arr[i].date.month;
        arr2[i].date.year = arr[i].date.year;
        arr2[i].mark = arr[i].mark;
        arr2[i].yearOfIssue = arr[i].yearOfIssue;
        arr2[i].color = arr[i].color;
        arr2[i].number = arr[i].number;
    }
    cout << "Date of registration: (day/month/year)" << endl;
    cin >> arr2[size - 1].date.day >> arr2[size - 1].date.month >> arr2[size - 1].date.year;
    cout << "Mark of car: ";
    cin >> arr2[size - 1].mark;
    cout << "Year of issue: ";
    cin >> arr2[size - 1].yearOfIssue;
    cout << "Color of car: ";
    cin >> arr2[size - 1].color;
    cout << "Number of car: ";
    cin >> arr2[size - 1].number;
    delete[]arr;
    arr = arr2;
    return arr;
}
car* delCar(car *arr, int &size, int num) {
    car* arr2 = new car[size - 1];
    int k = 0;
    for (int i = 0; i < size; i++) {
        if (i == num) continue;
        arr2[k].date.day = arr[i].date.day;
        arr2[k].date.month = arr[i].date.month;
        arr2[k].date.year = arr[i].date.year;
        arr2[k].mark = arr[i].mark;
        arr2[k].yearOfIssue = arr[i].yearOfIssue;
        arr2[k].color = arr[i].color;
        arr2[k].number = arr[i].number;
        k++;
    }
    delete[]arr;
    arr = arr2;
    return arr;
}
void getInfo(car* arr, int size) {
    for (int i = 0; i < size; i++) {
        cout << "Date of registration: (day/month/year)" << endl;
        cin >> arr[i].date.day >> arr[i].date.month >> arr[i].date.year;
        cout << "Mark of car: ";
        cin >> arr[i].mark;
        cout << "Year of issue: ";
        cin >> arr[i].yearOfIssue;
        cout << "Color of car: ";
        cin >> arr[i].color;
        cout << "Number of car: ";
        cin >> arr[i].number;
    }
}
void outputInfo(car* arr, int size) {
    for (int i = 0; i < size; i++) {
        cout << "Date of registration: " << arr[i].date.day << ".0" << arr[i].date.month << "." << arr[i].date.year << endl;
        cout << "Mark of car: " << arr[i].mark << endl;
        cout << "Year of issue: " << arr[i].yearOfIssue << endl;
        cout << "Color of car: " << arr[i].color << endl;
        cout << "Number of car: " << arr[i].number << endl;
    }
}
int main() {
    cout << "Enter number of cars: ";
    int size;
    cin >> size;
    car* arr = new car[size];
    getInfo(arr, size);
    cout << "Date base: " << endl;
    cout << endl;
    outputInfo(arr, size);
    cout << "Do you want to add a new car? (+/-)" << endl;
    char s;
    cin >> s;
    if (s == '+') {
        arr = addCar(arr, size);
        cout << "Date base: \n" << endl;
        outputInfo(arr, size);
    }
    cout << "Do you want to delete a car? (+/-)" << endl;
    char ch;
    cin >> ch;
    if (ch == '+') {
        cout << "Enter nubmer of car: ";
        int k; 
        cin >> k;
        arr = delCar(arr, size, k);
        cout << "Date base: \n" << endl;
        outputInfo(arr, size);
    }
    system("pause");
    return 0;
}
Выбило ошибку, когда выбрал "удаление машины". На то, как оформлены эти процедуры в мейне - не обращайте внимание. Это я исправлю в самом конце.

Добавлено через 2 минуты
UPD:
Нашёл проблему. Забыл изменить размер массива...
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.05.2020, 23:19
fYm13, что-то Вы не то делаете. удаление машины наверное нужно осуществлять по индивидуальному признаку авто - госномеру
0
3 / 3 / 1
Регистрация: 23.09.2019
Сообщений: 107
06.05.2020, 23:32  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
удаление машины наверное нужно осуществлять по индивидуальному признаку авто - госномеру
Хм... я представил себе вывод базы данных и удаление ячейки зарегистрированной машины. Но так, как сказали Вы, будет правильнее, да.

Хотел задать вам вопрос еще. Сейчас пытался осуществить ввод строки, а не слова. То есть: getline(cin, s). И если таких строк несколько. Имеется в виду, ввод, к примеру, цвета и марки. Программа сразу прыгает к вводу последней строки, перепрыгивая предыдущий ввод. Без ошибок. Почему так случается?
Вот пример:

C++
1
2
3
4
5
6
cout << "Enter color of car: ";
    string st1;
    getline(cin, st1);
    cout << "Enter mark of car: ";
    string st2;
    getline(cin, st2);
0
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
06.05.2020, 23:38
код можно адаптировать к твоему заданию https://cpp.com.ru/shildt_spr_po_c/22/2207.html
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.05.2020, 23:39
Цитата Сообщение от fYm13 Посмотреть сообщение
я представил себе вывод базы данных и удаление ячейки зарегистрированной машины
как Вы хотели удалять машину ?
Цитата Сообщение от fYm13 Посмотреть сообщение
Хотел задать вам вопрос еще
если getline находится после ввода числа туда заходит \n. перед тем getline перед которым ввод числа ставим
C++
1
cin.ignore();
0
3 / 3 / 1
Регистрация: 23.09.2019
Сообщений: 107
06.05.2020, 23:43  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
как Вы хотели удалять машину ?
К примеру, в базе данных по порядку идут зарегистрированные машины.
1...
2...
3...
Пользователь выбирает порядковый номер и по нему удаляется машина.

Цитата Сообщение от Yetty Посмотреть сообщение
cin.ignore();
Благодарю.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.05.2020, 00:04
Цитата Сообщение от fYm13 Посмотреть сообщение
К примеру, в базе данных по порядку идут зарегистрированные машины.
1...
2...
3...
так у Вас же нет нумерации в структуре. и делать её не стоит так как при добавлении-удалении авто она будет нарушаться. а просто посчитать начиная с начала, если база внушительная не получится.

Добавлено через 5 минут
меню не будете делать ?
0
3 / 3 / 1
Регистрация: 23.09.2019
Сообщений: 107
07.05.2020, 00:08  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
по индивидуальному признаку авто - госномеру
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
#include <iostream>
#include <string>
using namespace std;
 
struct car {
    struct Date {
        int day, month, year;
    }date;
    string mark;
    int yearOfIssue;
    string color, number;
 
};
 
car* addCar(car* arr, int& size) {
    size++;
    car* arr2 = new car[size];
    for (int i = 0; i < size - 1; i++) {
        arr2[i].date.day = arr[i].date.day;
        arr2[i].date.month = arr[i].date.month;
        arr2[i].date.year = arr[i].date.year;
        arr2[i].mark = arr[i].mark;
        arr2[i].yearOfIssue = arr[i].yearOfIssue;
        arr2[i].color = arr[i].color;
        arr2[i].number = arr[i].number;
    }
    cout << "Date of registration: [DD.MM.YYYY]:";
    cin >> arr2[size - 1].date.day >> arr2[size - 1].date.month >> arr2[size - 1].date.year;
    cout << "Mark of car: ";
    cin.ignore();
    getline(cin, arr2[size - 1].mark);
    cout << "Year of issue: ";
    cin >> arr2[size - 1].yearOfIssue;
    cout << "Color of car: ";
    cin.ignore();
    getline(cin, arr2[size - 1].color);
    cout << "Number of car: ";
    getline(cin, arr2[size - 1].number);
    delete[]arr;
    arr = arr2;
    return arr;
}
car* delCar(car *arr, int &size, int num) {
    car* arr2 = new car[size - 1];
    int k = 0;
    for (int i = 0; i < size; i++) {
        if (i == num) continue;
        arr2[k].date.day = arr[i].date.day;
        arr2[k].date.month = arr[i].date.month;
        arr2[k].date.year = arr[i].date.year;
        arr2[k].mark = arr[i].mark;
        arr2[k].yearOfIssue = arr[i].yearOfIssue;
        arr2[k].color = arr[i].color;
        arr2[k].number = arr[i].number;
        k++;
    }
    size--;
    delete[]arr;
    arr = arr2;
    return arr;
}
void findCar(car* arr, int size) {
    cout << "Enter color of car: ";
    string st1;
    cin.ignore();
    getline(cin, st1);
    cout << "Enter mark of car: ";
    string st2;
    getline(cin, st2);
    for (int i = 0; i < size; i++) {
        if ((arr[i].color == st1) & (arr[i].mark == st2)) {
            cout << "Date of registration: " << arr[i].date.day << ".0" << arr[i].date.month << "." << arr[i].date.year << endl;
            cout << "Mark of car: " << arr[i].mark << endl;
            cout << "Year of issue: " << arr[i].yearOfIssue << endl;
            cout << "Color of car: " << arr[i].color << endl;
            cout << "Number of car: " << arr[i].number << endl;
        }
        else {
            cout << "Not found!" << endl;
        }
    }
}
void getInfo(car* arr, int size) {
    for (int i = 0; i < size; i++) {
        cout << "Date of registration: [DD.MM.YYYY]:";
        cin >> arr[i].date.day >> arr[i].date.month >> arr[i].date.year;
        cout << "Mark of car: ";
        cin.ignore();
        getline(cin, arr[i].mark);
        cout << "Year of issue: ";
        cin >> arr[i].yearOfIssue;
        cout << "Color of car: ";
        cin.ignore();
        getline(cin, arr[i].color);
        cout << "Number of car: ";
        getline(cin, arr[i].number);
    }
}
void outputInfo(car* arr, int size) {
    for (int i = 0; i < size; i++) {
        cout << "Date of registration: " << arr[i].date.day << ".0" << arr[i].date.month << "." << arr[i].date.year << endl;
        cout << "Mark of car: " << arr[i].mark << endl;
        cout << "Year of issue: " << arr[i].yearOfIssue << endl;
        cout << "Color of car: " << arr[i].color << endl;
        cout << "Number of car: " << arr[i].number << endl;
    }
}
int main() {
    cout << "Enter number of cars: ";
    int size;
    cin >> size;
    car* arr = new car[size];
    getInfo(arr, size);
    cout << "Date base: " << endl;
    cout << endl;
    outputInfo(arr, size);
    cout << "Do you want to add a new car? (+/-)" << endl;
    char s;
    cin >> s;
    if (s == '+') {
        arr = addCar(arr, size);
        system("cls");
        cout << "Date base: \n" << endl;
        outputInfo(arr, size);
    }
    cout << "Do you want to delete a car? (+/-)" << endl;
    char ch;
    cin >> ch;
    if (ch == '+') {
        cout << "Enter number of car: ";
        string numb;
        cin.ignore();
        getline(cin, numb);
        for (int i = 0; i < size; i++) {
            if (arr[i].number == numb) {
                delCar(arr, size, i);
                break;
            }
        }
        system("cls");
        cout << "Date base: \n" << endl;
        outputInfo(arr, size);
    }
    cout << "Do you want find car? (+/-)" << endl;
    char fc;
    cin >> fc;
    if (fc == '+') {
        system("cls");
        findCar(arr, size);
    }
    system("pause");
    return 0;
}
Попробовал сделать так... В теории, должно работать, а выдало ошибку при вводе номера машины, которую хочу удалить.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.05.2020, 00:09
Цитата Сообщение от fYm13 Посмотреть сообщение
Пользователь выбирает порядковый номер
всё понял, просто по текущему номеру. думаю что от Вас хотят не это. да и смысла особого (с практической точки зрения не вижу). а по номеру например это база гаража, машину такую-то списали и удалили из базы.
0
3 / 3 / 1
Регистрация: 23.09.2019
Сообщений: 107
07.05.2020, 00:11  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
меню не будете делать ?
Мне ко всему этому вдобавок придется делать блок-схемы, поэтому, чтоб облегчить себе в этом задачу - воздержусь.
Но с меню это выглядело бы все намного лучше. Я постараюсь визуально приукрасить код, добавив "system("cls)".
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.05.2020, 00:17
fYm13, не пишите это в main (в main только ввод номера для удаления)
Цитата Сообщение от fYm13 Посмотреть сообщение
for (int i = 0; i < size; i++) {
            if (arr[i].number == numb)
0
3 / 3 / 1
Регистрация: 23.09.2019
Сообщений: 107
07.05.2020, 00:19  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
Вы int приравняли к string.
Это в строке:

C++
1
if (arr[i].number == numb)
?

Не понимаю, где именно...

Цитата Сообщение от Yetty Посмотреть сообщение
предлагаю всё же работать по полю arr[i].number
Как раз эта ошибка и связана с тем, что я решил сделать удаление по номеру
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.05.2020, 00:24
я там исправил уже. эта строка должна быть вместо строки 47
C++
1
if (arr[i].number == num) continue;
0
3 / 3 / 1
Регистрация: 23.09.2019
Сообщений: 107
07.05.2020, 00:28  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
не пишите это в main (в main только ввод номера для удаления)
Вызвано исключение по адресу 0x0F65F3BE (ucrtbased.dll) в ConsoleApplication7.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xDDDDDDDD.

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
#include <iostream>
#include <string>
using namespace std;
 
struct car {
    struct Date {
        int day, month, year;
    }date;
    string mark;
    int yearOfIssue;
    string color, number;
 
};
 
car* addCar(car* arr, int& size) {
    size++;
    car* arr2 = new car[size];
    for (int i = 0; i < size - 1; i++) {
        arr2[i].date.day = arr[i].date.day;
        arr2[i].date.month = arr[i].date.month;
        arr2[i].date.year = arr[i].date.year;
        arr2[i].mark = arr[i].mark;
        arr2[i].yearOfIssue = arr[i].yearOfIssue;
        arr2[i].color = arr[i].color;
        arr2[i].number = arr[i].number;
    }
    cout << "Date of registration: [DD.MM.YYYY]:";
    cin >> arr2[size - 1].date.day >> arr2[size - 1].date.month >> arr2[size - 1].date.year;
    cout << "Mark of car: ";
    cin.ignore();
    getline(cin, arr2[size - 1].mark);
    cout << "Year of issue: ";
    cin >> arr2[size - 1].yearOfIssue;
    cout << "Color of car: ";
    cin.ignore();
    getline(cin, arr2[size - 1].color);
    cout << "Number of car: ";
    getline(cin, arr2[size - 1].number);
    delete[]arr;
    arr = arr2;
    return arr;
}
car* delCar(car *arr, int &size, string numb) {
    car* arr2 = new car[size - 1];
    int k = 0, val;
    for (int i = 0; i < size; i++) {
        if (arr[i].number == numb) {
            val = i;
        }
    }
    for (int i = 0; i < size; i++) {
        if (i == val) continue;
        arr2[k].date.day = arr[i].date.day;
        arr2[k].date.month = arr[i].date.month;
        arr2[k].date.year = arr[i].date.year;
        arr2[k].mark = arr[i].mark;
        arr2[k].yearOfIssue = arr[i].yearOfIssue;
        arr2[k].color = arr[i].color;
        arr2[k].number = arr[i].number;
        k++;
    }
    size--;
    delete[]arr;
    arr = arr2;
    return arr;
}
void findCar(car* arr, int size) {
    cout << "Enter color of car: ";
    string st1;
    cin.ignore();
    getline(cin, st1);
    cout << "Enter mark of car: ";
    string st2;
    getline(cin, st2);
    for (int i = 0; i < size; i++) {
        if ((arr[i].color == st1) & (arr[i].mark == st2)) {
            cout << "Date of registration: " << arr[i].date.day << ".0" << arr[i].date.month << "." << arr[i].date.year << endl;
            cout << "Mark of car: " << arr[i].mark << endl;
            cout << "Year of issue: " << arr[i].yearOfIssue << endl;
            cout << "Color of car: " << arr[i].color << endl;
            cout << "Number of car: " << arr[i].number << endl;
        }
        else {
            cout << "Not found!" << endl;
        }
    }
}
void getInfo(car* arr, int size) {
    for (int i = 0; i < size; i++) {
        cout << "Date of registration: [DD.MM.YYYY]:";
        cin >> arr[i].date.day >> arr[i].date.month >> arr[i].date.year;
        cout << "Mark of car: ";
        cin.ignore();
        getline(cin, arr[i].mark);
        cout << "Year of issue: ";
        cin >> arr[i].yearOfIssue;
        cout << "Color of car: ";
        cin.ignore();
        getline(cin, arr[i].color);
        cout << "Number of car: ";
        getline(cin, arr[i].number);
    }
}
void outputInfo(car* arr, int size) {
    for (int i = 0; i < size; i++) {
        cout << "Date of registration: " << arr[i].date.day << ".0" << arr[i].date.month << "." << arr[i].date.year << endl;
        cout << "Mark of car: " << arr[i].mark << endl;
        cout << "Year of issue: " << arr[i].yearOfIssue << endl;
        cout << "Color of car: " << arr[i].color << endl;
        cout << "Number of car: " << arr[i].number << endl;
    }
}
int main() {
    cout << "Enter number of cars: ";
    int size;
    cin >> size;
    car* arr = new car[size];
    getInfo(arr, size);
    cout << "Date base: " << endl;
    cout << endl;
    outputInfo(arr, size);
    cout << "Do you want to add a new car? (+/-)" << endl;
    char s;
    cin >> s;
    if (s == '+') {
        arr = addCar(arr, size);
        system("cls");
        cout << "Date base: \n" << endl;
        outputInfo(arr, size);
    }
    cout << "Do you want to delete a car? (+/-)" << endl;
    char ch;
    cin >> ch;
    if (ch == '+') {
        cout << "Enter number of car: ";
        string numb;
        cin.ignore();
        getline(cin, numb);
        delCar(arr, size, numb);
        system("cls");
        cout << "Date base: \n" << endl;
        outputInfo(arr, size);
    }
    cout << "Do you want find car? (+/-)" << endl;
    char fc;
    cin >> fc;
    if (fc == '+') {
        system("cls");
        findCar(arr, size);
    }
    system("pause");
    return 0;
}
Исправил, такая же ошибка.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.05.2020, 00:35
fYm13, зачем в функции удаления сделали 2 цикла ? я ведь написал строку выше
0
3 / 3 / 1
Регистрация: 23.09.2019
Сообщений: 107
07.05.2020, 00:37  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
я ведь написал строку выше
Да, я исправил после отправления кода.
На данный момент результат таков:

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
#include <iostream>
#include <string>
using namespace std;
 
struct car {
    struct Date {
        int day, month, year;
    }date;
    string mark;
    int yearOfIssue;
    string color, number;
 
};
 
car* addCar(car* arr, int& size) {
    size++;
    car* arr2 = new car[size];
    for (int i = 0; i < size - 1; i++) {
        arr2[i].date.day = arr[i].date.day;
        arr2[i].date.month = arr[i].date.month;
        arr2[i].date.year = arr[i].date.year;
        arr2[i].mark = arr[i].mark;
        arr2[i].yearOfIssue = arr[i].yearOfIssue;
        arr2[i].color = arr[i].color;
        arr2[i].number = arr[i].number;
    }
    cout << "Date of registration: [DD.MM.YYYY]:";
    cin >> arr2[size - 1].date.day >> arr2[size - 1].date.month >> arr2[size - 1].date.year;
    cout << "Mark of car: ";
    cin.ignore();
    getline(cin, arr2[size - 1].mark);
    cout << "Year of issue: ";
    cin >> arr2[size - 1].yearOfIssue;
    cout << "Color of car: ";
    cin.ignore();
    getline(cin, arr2[size - 1].color);
    cout << "Number of car: ";
    getline(cin, arr2[size - 1].number);
    delete[]arr;
    arr = arr2;
    return arr;
}
car* delCar(car *arr, int &size, string numb) {
    car* arr2 = new car[size - 1];
    int k = 0;
    for (int i = 0; i < size; i++) {
        if (arr[i].number == numb) continue;
        arr2[k].date.day = arr[i].date.day;
        arr2[k].date.month = arr[i].date.month;
        arr2[k].date.year = arr[i].date.year;
        arr2[k].mark = arr[i].mark;
        arr2[k].yearOfIssue = arr[i].yearOfIssue;
        arr2[k].color = arr[i].color;
        arr2[k].number = arr[i].number;
        k++;
    }
    size--;
    delete[]arr;
    arr = arr2;
    return arr;
}
void findCar(car* arr, int size) {
    cout << "Enter color of car: ";
    string st1;
    cin.ignore();
    getline(cin, st1);
    cout << "Enter mark of car: ";
    string st2;
    getline(cin, st2);
    for (int i = 0; i < size; i++) {
        if ((arr[i].color == st1) & (arr[i].mark == st2)) {
            cout << "Date of registration: " << arr[i].date.day << ".0" << arr[i].date.month << "." << arr[i].date.year << endl;
            cout << "Mark of car: " << arr[i].mark << endl;
            cout << "Year of issue: " << arr[i].yearOfIssue << endl;
            cout << "Color of car: " << arr[i].color << endl;
            cout << "Number of car: " << arr[i].number << endl;
        }
        else {
            cout << "Not found!" << endl;
        }
    }
}
void getInfo(car* arr, int size) {
    for (int i = 0; i < size; i++) {
        cout << "Date of registration: [DD.MM.YYYY]:";
        cin >> arr[i].date.day >> arr[i].date.month >> arr[i].date.year;
        cout << "Mark of car: ";
        cin.ignore();
        getline(cin, arr[i].mark);
        cout << "Year of issue: ";
        cin >> arr[i].yearOfIssue;
        cout << "Color of car: ";
        cin.ignore();
        getline(cin, arr[i].color);
        cout << "Number of car: ";
        getline(cin, arr[i].number);
    }
}
void outputInfo(car* arr, int size) {
    for (int i = 0; i < size; i++) {
        cout << "Date of registration: " << arr[i].date.day << ".0" << arr[i].date.month << "." << arr[i].date.year << endl;
        cout << "Mark of car: " << arr[i].mark << endl;
        cout << "Year of issue: " << arr[i].yearOfIssue << endl;
        cout << "Color of car: " << arr[i].color << endl;
        cout << "Number of car: " << arr[i].number << endl;
    }
}
int main() {
    cout << "Enter number of cars: ";
    int size;
    cin >> size;
    car* arr = new car[size];
    getInfo(arr, size);
    cout << "Date base: " << endl;
    cout << endl;
    outputInfo(arr, size);
    cout << "Do you want to add a new car? (+/-)" << endl;
    char s;
    cin >> s;
    if (s == '+') {
        arr = addCar(arr, size);
        system("cls");
        cout << "Date base: \n" << endl;
        outputInfo(arr, size);
    }
    cout << "Do you want to delete a car? (+/-)" << endl;
    char ch;
    cin >> ch;
    if (ch == '+') {
        cout << "Enter number of car: ";
        string numb;
        cin.ignore();
        getline(cin, numb);
        delCar(arr, size, numb);
        system("cls");
        cout << "Date base: \n" << endl;
        outputInfo(arr, size);
    }
    cout << "Do you want find car? (+/-)" << endl;
    char fc;
    cin >> fc;
    if (fc == '+') {
        system("cls");
        findCar(arr, size);
    }
    system("pause");
    return 0;
}
Но ошибка не исчезла...
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.05.2020, 00:41
Цитата Сообщение от fYm13 Посмотреть сообщение
Но ошибка не исчезла...
попробуйте в функции удаления перейти с массива arr2 на arr3
0
3 / 3 / 1
Регистрация: 23.09.2019
Сообщений: 107
07.05.2020, 00:46  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
попробуйте в функции удаления перейти с массива arr2 на arr3

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
#include <iostream>
#include <string>
using namespace std;
 
struct car {
    struct Date {
        int day, month, year;
    }date;
    string mark;
    int yearOfIssue;
    string color, number;
 
};
 
car* addCar(car* arr, int& size) {
    size++;
    car* arr2 = new car[size];
    for (int i = 0; i < size - 1; i++) {
        arr2[i].date.day = arr[i].date.day;
        arr2[i].date.month = arr[i].date.month;
        arr2[i].date.year = arr[i].date.year;
        arr2[i].mark = arr[i].mark;
        arr2[i].yearOfIssue = arr[i].yearOfIssue;
        arr2[i].color = arr[i].color;
        arr2[i].number = arr[i].number;
    }
    cout << "Date of registration: [DD.MM.YYYY]:";
    cin >> arr2[size - 1].date.day >> arr2[size - 1].date.month >> arr2[size - 1].date.year;
    cout << "Mark of car: ";
    cin.ignore();
    getline(cin, arr2[size - 1].mark);
    cout << "Year of issue: ";
    cin >> arr2[size - 1].yearOfIssue;
    cout << "Color of car: ";
    cin.ignore();
    getline(cin, arr2[size - 1].color);
    cout << "Number of car: ";
    getline(cin, arr2[size - 1].number);
    delete[]arr;
    arr = arr2;
    return arr;
}
car* delCar(car *arr, int &size, string numb) {
    car* arr3 = new car[size - 1];
    int k = 0;
    for (int i = 0; i < size; i++) {
        if (arr[i].number == numb) continue;
        arr3[k].date.day = arr[i].date.day;
        arr3[k].date.month = arr[i].date.month;
        arr3[k].date.year = arr[i].date.year;
        arr3[k].mark = arr[i].mark;
        arr3[k].yearOfIssue = arr[i].yearOfIssue;
        arr3[k].color = arr[i].color;
        arr3[k].number = arr[i].number;
        k++;
    }
    size--;
    delete[]arr;
    arr = arr3;
    return arr;
}
void findCar(car* arr, int size) {
    cout << "Enter color of car: ";
    string st1;
    cin.ignore();
    getline(cin, st1);
    cout << "Enter mark of car: ";
    string st2;
    getline(cin, st2);
    for (int i = 0; i < size; i++) {
        if ((arr[i].color == st1) & (arr[i].mark == st2)) {
            cout << "Date of registration: " << arr[i].date.day << ".0" << arr[i].date.month << "." << arr[i].date.year << endl;
            cout << "Mark of car: " << arr[i].mark << endl;
            cout << "Year of issue: " << arr[i].yearOfIssue << endl;
            cout << "Color of car: " << arr[i].color << endl;
            cout << "Number of car: " << arr[i].number << endl;
        }
        else {
            cout << "Not found!" << endl;
        }
    }
}
void getInfo(car* arr, int size) {
    for (int i = 0; i < size; i++) {
        cout << "Date of registration: [DD.MM.YYYY]:";
        cin >> arr[i].date.day >> arr[i].date.month >> arr[i].date.year;
        cout << "Mark of car: ";
        cin.ignore();
        getline(cin, arr[i].mark);
        cout << "Year of issue: ";
        cin >> arr[i].yearOfIssue;
        cout << "Color of car: ";
        cin.ignore();
        getline(cin, arr[i].color);
        cout << "Number of car: ";
        getline(cin, arr[i].number);
    }
}
void outputInfo(car* arr, int size) {
    for (int i = 0; i < size; i++) {
        cout << "Date of registration: " << arr[i].date.day << ".0" << arr[i].date.month << "." << arr[i].date.year << endl;
        cout << "Mark of car: " << arr[i].mark << endl;
        cout << "Year of issue: " << arr[i].yearOfIssue << endl;
        cout << "Color of car: " << arr[i].color << endl;
        cout << "Number of car: " << arr[i].number << endl;
    }
}
int main() {
    cout << "Enter number of cars: ";
    int size;
    cin >> size;
    car* arr = new car[size];
    getInfo(arr, size);
    cout << "Date base: " << endl;
    cout << endl;
    outputInfo(arr, size);
    cout << "Do you want to add a new car? (+/-)" << endl;
    char s;
    cin >> s;
    if (s == '+') {
        arr = addCar(arr, size);
        system("cls");
        cout << "Date base: \n" << endl;
        outputInfo(arr, size);
    }
    cout << "Do you want to delete a car? (+/-)" << endl;
    char ch;
    cin >> ch;
    if (ch == '+') {
        cout << "Enter number of car: ";
        string numb;
        cin.ignore();
        getline(cin, numb);
        delCar(arr, size, numb);
        system("cls");
        cout << "Date base: \n" << endl;
        outputInfo(arr, size);
    }
    cout << "Do you want find car? (+/-)" << endl;
    char fc;
    cin >> fc;
    if (fc == '+') {
        system("cls");
        findCar(arr, size);
    }
    delete[]arr;
    system("pause");
    return 0;
}
Попробовал, как Вы сказали, но ошибка как была, так и осталась. И как говорит компилятор, ошибка в функции...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.05.2020, 00:46

Поиск комбинаций отрезков
Есть одномерные детали длиной 3,5,7,9,11,13,15. Есть заготовка фиксированной длины 20. Припуски, толщина распила 0. Как получить все...

Поиск комбинаций символов в тексте
Ребят, тут ещё одна проблема возникла. Необходимо подсчитать количество сдвоенных символов в тексте (допустим, &quot;нн&quot;) Всё...

Поиск комбинаций купленных товаров
Добрый вечер! Имеется вот такое вот условие задачи: Необходимо разработать программу, позволяющую выявить наиболее часто встречающиеся...

Выборка подмножества комбинаций без повторов из множества всех комбинаций перестановок
Собственно вопрос. Существует ли алгоритм нахождения без перебора уникальных комбинаций в сортированном множестве всех возможных...

Найти число таких комбинаций, и сформировать массив из самих этих комбинаций, при которых выполняется условие
Ребята, помогите новичку) задача в следующем - ряд из 8 чисел, скажем условно, w1 w2... w8, изменяющихся в интервале 0:0.1:1. Надо найти...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru