
Программа на C++ Создайте текстовый файл, содержащий сведения о пациентах глазной клиники:
фамилия пациента, пол, возраст, место проживания (город), диагноз. Напишите программу, которая формирует двоичный файл, каждый элемент которого является структурой, составленной на основе данных текстового файла. Отсортируйте данные бинарного файла в алфавитном порядке фамилий пациентов. Выведите на экран информацию об иногородних пациентах с диагнозом J.

Ответы на вопрос

Ответ:
Отпишитесь если будут ошибки, т. к. кодил на мобилке.
Тело программы:
public static void Main (string[] args)
{
int man = 0;
int woman = 0;
String file = File. ReadAllText ("persons. txt");
List persons = StringToPersons (file);
foreach (Person p in persons)
if (p. Sex = = "Мужской")
man++;
else if (p. Sex = = "Женский")
woman++;
Console. WriteLine ("Женщин: {0}/nМужчин: {1}", woman, man);
persons = persons. OrderBy (p = > p. LastName). ToList ();
for (int i = 0; i
{
Person p = persons[i];
Console. WriteLine ("Пациент # {0}/nФИО: {1} {2} {3}, Пол: {4}, Возраст: {5} лет, Место проживания: {6}, Диагноз: {7}.", i+1, p. LastName, p. FirstName, p. Patronymic, p. Sex, p. Age, p. City, p. Main);
}
}
public static List StringToPersons (String FileContent)
{
List persons = new List ();
String[] lines = FileContent. Split ('; ');
foreach (String line in lines)
{
String[] data = line. Split (':');
if (data. Length>7)
{
throw new Exception ("Error read persons file");
}
Person person = new Person (data[0], data[1], data[2], data[3], data[4], data[5], data[6]);
persons. Add (person);
}
return persons;
}
}
public class Person
{
public String LastName;
public String FirstName;
public String Patronymic;
public String Sex;
public String Age;
public String City;
public String Main;
public Person (String LastName, String FirstName, String Patronymic, String Sex, String Age, String City, String Main)
{
this. LastName = LastName;
this. FirstName = FirstName;
this. Patronymic = Patronymic;
this. Sex = Sex;
this. Age = Age;
this. City = City;
this. Main = Main;
}
}
Текстовый файл:
Сергеев: Иван: Алексеевич: Мужской: 34:Санкт-Петербург: Кариес;
Белоусова: Элина: Станислава: Женщина: 27:Москва: Ангина;
Павлов: Николай: Дмитриевич: Мужской: 89:Астрахань: Сахарный диабет
P. s. я не доктор, соответственно в плане диагноза я написал чушь.



Для выполнения данной задачи вам потребуется написать программу на C++, которая читает данные из текстового файла, создает двоичный файл, сортирует его и затем выводит информацию о нужных пациентах. Ниже представлен пример такой программы:
cpp#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
struct Patient {
std::string lastName;
char gender;
int age;
std::string city;
std::string diagnosis;
};
bool comparePatients(const Patient& p1, const Patient& p2) {
return p1.lastName < p2.lastName;
}
int main() {
std::ifstream inputFile("patients.txt");
if (!inputFile) {
std::cerr << "Error opening input file." << std::endl;
return 1;
}
std::vector<Patient> patients;
Patient tempPatient;
while (inputFile >> tempPatient.lastName >> tempPatient.gender >> tempPatient.age >> tempPatient.city >> tempPatient.diagnosis) {
patients.push_back(tempPatient);
}
inputFile.close();
std::sort(patients.begin(), patients.end(), comparePatients);
std::ofstream binaryFile("patients.dat", std::ios::binary);
if (!binaryFile) {
std::cerr << "Error creating binary file." << std::endl;
return 1;
}
for (const Patient& patient : patients) {
binaryFile.write(reinterpret_cast<const char*>(&patient), sizeof(Patient));
}
binaryFile.close();
std::ifstream binaryInput("patients.dat", std::ios::binary);
if (!binaryInput) {
std::cerr << "Error opening binary file." << std::endl;
return 1;
}
std::cout << "Information about out-of-town patients with diagnosis J:" << std::endl;
while (binaryInput.read(reinterpret_cast<char*>(&tempPatient), sizeof(Patient))) {
if (tempPatient.city != "your_city" && tempPatient.diagnosis == "J") {
std::cout << "Last Name: " << tempPatient.lastName << "\n"
<< "Gender: " << tempPatient.gender << "\n"
<< "Age: " << tempPatient.age << "\n"
<< "City: " << tempPatient.city << "\n"
<< "Diagnosis: " << tempPatient.diagnosis << "\n\n";
}
}
binaryInput.close();
return 0;
}
Пожалуйста, замените "your_city"
на название города, который вы считаете иногородним. Также учтите, что этот код предоставляет базовое решение и может потребовать дополнительной доработки для обработки ошибок и улучшения производительности.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili