Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Программирование Задача C++

Помогите решить с помощью Структур, без функций string и vector ( с помощью char ). Чат гпт решает так, что при вводе данных в Visual Studio о поле человека (например ввожу Ж, а на самом деле там какой-то непонятный символ, с английскими буквами такого нет). Желательно с обьяснениями каждой функции или цикла

По дате
По рейтингу
Аватар пользователя
Высший разум
3мес
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
 #include <iostream> 
#include <cstring>

using namespace std;

template<typename T> 
T input(istream& inp, const char* prompt) { 
    cout << prompt; 
    T value{}; 
    inp >> value; 
    inp.ignore(0x1000, '\n'); 
    return value; 
}

template<> 
char input(istream& inp, const char* prompt) { 
    cout << prompt; 
    auto value = static_cast<char>(inp.get()); 
    inp.ignore(0x1000, '\n'); 
    return value; 
}

void input(istream& inp, const char* prompt, char* word, const size_t buffer) { 
    cout << prompt; 
    inp.getline(word, buffer); 
}

class Student { 
    static constexpr size_t buffer = 16; 
    char sex = 0; 
    unsigned short age = 0; 
    unsigned short course = 0; 
    char name[buffer]{}; 
    char patronymic[buffer]{}; 
    char surname[buffer]{}; 
    friend istream& operator>>(istream& inp, Student& st) { 
        input(inp, "Фамилия: ", st.surname, Student::buffer); 
        input(inp, "Имя: ", st.name, Student::buffer); 
        input(inp, "Отчество: ", st.patronymic, Student::buffer); 
        st.sex = input<char>(inp, "Пол: "); 
        st.age = input<unsigned short>(inp, "Возраст: "); 
        st.course = input<unsigned short>(inp, "Курс: "); 
        return inp; 
    } 
public: 
    bool is_female() const { 
        return sex == -58 || sex == -26; 
    } 
    bool equal_names(const Student& st) const { 
        return strcmp(st.name, name) == 0; 
    } 
    const char* get_name() const { 
        return name; 
    } 
};

int main() { 
    system("chcp 1251 > nul"); 
    const auto quantity = input<size_t>(cin, "Введите количество студентов: "); 
    auto students = new(nothrow) Student[quantity]; 
    if (students == nullptr) exit(0); 
    for (size_t i = 0; i < quantity; ++i) cin >> students[i]; 
    const char* name = nullptr; 
    size_t max_count = 0; 
    for (size_t i = 0; i < quantity; ++i) { 
        auto flag = false; 
        for (size_t j = 0; j < i; ++j) { 
            if (students[j].equal_names(students[i])) { 
                flag = !flag; 
                break; 
            } 
        } 
        if (flag) continue; 
        size_t current_count = 0; 
        for (size_t j = 0; j < i; ++j) { 
            if (students[j].equal_names(students[i])) { 
                ++current_count; 
            } 
        } 
        if (max_count < current_count) { 
            name = students[i].get_name(); 
            max_count = current_count; 
        } 
    } 
    if (name != nullptr) { 
        cout << "Чаще встречается женское имя: " << name << '\n'; 
    } else { 
        puts("В таблице не содержатся данные о женщинах."); 
    } 
    delete[] students; 
    students = nullptr; 
    system("pause > nul"); 
} 
Аватар пользователя
Ученик
3мес

print('Hello, World!')
Объяснение:
я помню пен.. бальшой