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

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

04.05.2020, 21:24. Показов 3341. Ответов 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
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru