@marlaaa

Как сделать удаление и добавление элемента в массив структур?

Проблема конкретно с функциями elementdob и elementdel. Что я делаю не так и как можно сделать лучше?

Мой код
#include <iostream>
#include <fstream>
#include <Windows.h>
using namespace std;
struct student {
    string name;
    string surname;
    string patronimic;
    string vuz;
    string telnumber;
    string dr;
    string adress;
    string pol;
    string rost;
    string ves;
    string kurs;
    string gruppa;
    string speshial;
    string naz;

};
// ...
void elementdob(student*& stu, int& n, student newelement) { // <---

    student* stooo = new student[n+1];
    for (int i = 0; i < n; i++) {
        stooo[i] = stu[i];
    }
    stooo[n] = newelement;
    n++;
    delete[] stu;
    stu = stooo;
    
}
void elementdel(student*& stu, int& n) { // <---
    cout << "Какой элемент удаляем?";
    int k;
    cin >> k;

    memcpy(&stu[k], &stu[k + 1], sizeof(stu[0]) * ((n-1) - k));
}
// ...
int main()
{
    setlocale(LC_ALL, "Rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int n;
    cout << "Введите количество студентов:";
    cin >> n;
    student* stu = new student[n];
    info(*&stu, n);
    student newelement; // <---
    while (1) {
        switch (menu()) {
        case 1:
            printy(*&stu, n);
            break;
        case 2:
            elementdob(*&stu, n, newelement); // <---
            cout << "Введите имя:" << endl;
            cin >> newelement.name;
            cout << "Введите фамилию:" << endl;
            cin >> newelement.surname;
            cout << "Введите отчество:" << endl;
            cin >> newelement.patronimic;
            cout << "Введите пол:" << endl;
            cin >> newelement.pol;
            cout << "Введите национальность:" << endl;
            cin >> newelement.naz;
            cout << "Введите номер телефона" << endl;
            cin >> newelement.telnumber;
            cout << "Введите вуз:" << endl;
            cin >> newelement.vuz;
            cout << "Введите курс:" << endl;
            cin >> newelement.kurs;
            cout << "Введите группу:" << endl;
            cin >> newelement.gruppa;
            cout << "Введите специальность:" << endl;
            cin >> newelement.speshial;
            cout << "Введите рост:" << endl;
            cin >> newelement.rost;
            cout << "Введите вес:" << endl;
            cin >> newelement.ves;
            cout << "Введите адресс:" << endl;
            cin >> newelement.adress;
            cout << "Введите дату рождения:" << endl;
            cin >> newelement.dr;
            break;
        case 3:
            elementdel(*&stu, n);
            break;
        case 4:
            sort(*&stu, n);
            break;
        case 5:
            return 0;
            break;
        }

        writefile(*&stu, n);
        delete[] stu;
    }
}
  • Вопрос задан
  • 230 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы