C/C++

Помощь в написании кода на C++

Описать структуру с именем Note, содержащую следующие поля:
Фамилия, имя;
номер телефона;
день рождения (массив из трёх чисел);
2.Написать программу, выполняющую следующие действия:
Ввод данных с клавиатуры в массив, состоящий из восьми элементов типа Note; записи должны быть упорядочены по трем первым цифрам номера телефона;
Вывод на экран информации о человеке, чья фамилия введена с клавиатуры; если таких нет, вывести на экран соответствующее сообщение.
Ew Klid
Ew Klid
179
struct Note {
string name;
string surname;
string phone_number;
int birthday[3];
};
Для сортировки записей по трем первым цифрам номера телефона вы можете использовать функцию sort() из библиотеки algorithm. Вот пример кода для ввода данных с клавиатуры в массив из восьми элементов типа Note и сортировки записей по трем первым цифрам номера телефона:

#include <iostream>
#include <algorithm>
using namespace std;

struct Note {
string name;
string surname;
string phone_number;
int birthday[3];
};

bool compare(Note a, Note b) {
return a.phone_number.substr(0, 3) < b.phone_number.substr(0, 3);
}

int main() {
Note notes[8];
for (int i = 0; i < 8; i++) {
cout << "Введите имя: ";
cin >> notes[i].name;
cout << "Введите фамилию: ";
cin >> notes[i].surname;
cout << "Введите номер телефона: ";
cin >> notes[i].phone_number;
cout << "Введите день рождения (через пробел): ";
cin >> notes[i].birthday[0] >> notes[i].birthday[1] >> notes[i].birthday[2];
}
sort(notes, notes + 8, compare);

string surname_to_find;
cout << "Введите фамилию для поиска: ";
cin >> surname_to_find;

bool found = false;
for (int i = 0; i < 8; i++) {
if (notes[i].surname == surname_to_find) {
cout << "Имя: " << notes[i].name << endl;
cout << "Фамилия: " << notes[i].surname << endl;
cout << "Номер телефона: " << notes[i].phone_number << endl;
cout << "День рождения: " << notes[i].birthday[0] << "." << notes[i].birthday[1] << "." << notes[i].birthday[2] << endl;
found = true;
break;
}
}

if (!found) {
cout << "Запись не найдена." << endl;
}
}
Кирилл Владимиров
Кирилл Владимиров
1 748
Лучший ответ
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

struct Note {
string firstName;
string lastName;
string phoneNumber;
int birthday[3];
};

bool compareNotes(Note a, Note b) {
return a.phoneNumber.substr(0, 3) < b.phoneNumber.substr(0, 3);
}

int main() {
Note notes[8];

// Ввод информации о 8 контактах
for (int i = 0; i < 8; i++) {
cout << "Контакт #" << (i + 1) << endl;
cout << "Введите фамилию: ";
cin >> notes[i].lastName;
cout << "Введите имя: ";
cin >> notes[i].firstName;
cout << "Введите номер телефона: ";
cin >> notes[i].phoneNumber;
cout << "Введите день рождения в формате дд.мм.гггг: ";
scanf("%d.%d.%d", &notes[i].birthday[0], &notes[i].birthday[1], &notes[i].birthday[2]);
cout << endl;
}

// Сортировка записей по трем первым цифрам номера телефона
sort(notes, notes + 8, compareNotes);

// Вывод информации о контакте по фамилии
string queryLastName;
bool found = false;
cout << "Введите фамилию для поиска: ";
cin >> queryLastName;
for (int i = 0; i < 8; i++) {
if (notes[i].lastName == queryLastName) {
found = true;
cout << "Найдено: " << notes[i].firstName << " " << notes[i].lastName << endl;
cout << "Номер телефона: " << notes[i].phoneNumber << endl;
cout << "День рождения: " << notes[i].birthday[0] << "." << notes[i].birthday[1] << "." << notes[i].birthday[2] << endl;
cout << endl;
}
}

// Вывод сообщения, если фамилия не найдена
if (!found) {
cout << "Контакт с фамилией " << queryLastName << " не найден." << endl;
}

return 0;
}
```
Руслан Валеев
Руслан Валеев
3 562