Вопрос задан 01.07.2023 в 23:45. Предмет Информатика. Спрашивает Аминев Максим.

Программа на C++ Создайте текстовый файл, содержащий сведения о пациентах глазной клиники:

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

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Трошков Кирилл.

Ответ:

Отпишитесь если будут ошибки, т. к. кодил на мобилке.

Тело программы:

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. я не доктор, соответственно в плане диагноза я написал чушь.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для выполнения данной задачи вам потребуется написать программу на 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" на название города, который вы считаете иногородним. Также учтите, что этот код предоставляет базовое решение и может потребовать дополнительной доработки для обработки ошибок и улучшения производительности.

0 0

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

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

Последние заданные вопросы в категории Информатика

Задать вопрос