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

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

04.05.2020, 21:24. Показов 3353. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru