3мес



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

Помогите решить с помощью Структур, без функций string и vector ( с помощью char ). Чат гпт решает так, что при вводе данных в Visual Studio о поле человека (например ввожу Ж, а на самом деле там какой-то непонятный символ, с английскими буквами такого нет). Желательно с обьяснениями каждой функции или цикла
По дате
По рейтингу
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");
}
print('Hello, World!')
Объяснение:
я помню пен.. бальшой