
Привет! Я создал программу на языке C , которая позволяет работать с массивом структур. Эта программа записывает данные, введенные с клавиатуры, в файл, используя символ табуляции в качестве разделителя полей структуры. Она также реализует возможность дополнения существующего массива структур новыми структурами, сохранение и чтение массива структур из файла, поиск структуры с заданным значением выбранного элемента и вывод содержимого массива структур на экран.В качестве примера, я взял структуру ″Покупатель″ с полями⁚ фамилия, имя, отчество, город, улица, номер дома, номер квартиры, номер кредитной карточки и код покупки. Программа позволяет добавлять новых покупателей в массив структур и записывать его в файл. При повторном запуске программы, структуры из файла будут добавлены в массив. Также программа позволяет искать структуру с заданным значением выбранного элемента и выводить содержимое массива структур на экран.Воспользуюсь библиотекой `
cpp
#include
#include
using namespace std;
const int MAX_SIZE 100;
struct Buyer {
string lastName;
string firstName;
string middleName;
string city;
string street;
int houseNumber;
int apartmentNumber;
string creditCardNumber;
int purchaseCode;
};
void addBuyer(Buyer buyers[], intn size) {
if (size > MAX_SIZE) {
cout << ″Массив структур уже полон.″ << endl;
return;
}
Buyer newBuyer;
cout << ″Введите фамилию⁚ ″;
cin >> newBuyer.lastName;
cout << ″Введите имя⁚ ″;
cin >> newBuyer.firstName;
cout << ″Введите отчество⁚ ″;
cin >> newBuyer.middleName;
cout << ″Введите город⁚ ″;
cin >> newBuyer.city;
cout << ″Введите улицу⁚ ″;
cin >> newBuyer.street;
cout << ″Введите номер дома⁚ ″;
cin >> newBuyer.houseNumber;
cout << ″Введите номер квартиры⁚ ″;
cin >> newBuyer.apartmentNumber;
cout << ″Введите номер кредитной карточки⁚ ″;
cin >> newBuyer.creditCardNumber;
cout << ″Введите код покупки⁚ ″;
cin >> newBuyer.purchaseCode;
buyers[size] newBuyer;
size ;
ofstream file(″buyers.txt″, ios⁚⁚app);
if (file.is_open) {
file << newBuyer.lastName << ″\t″ << newBuyer.firstName << ″\t″ << newBuyer.middleName << ″\t″
<< newBuyer.city << ″\t″ << newBuyer.street << ″\t″ << newBuyer.houseNumber << ″\t″
<< newBuyer.apartmentNumber << ″\t″ << newBuyer.creditCardNumber << ″\t″
<< newBuyer.purchaseCode << endl;
file.close;
} else {
cout << ″Не удалось открыть файл.″ << endl;
}
}
void readBuyersFromFile(Buyer buyers[], intn size) {
ifstream file(″buyers.txt″);
if (file.is_open) {
while (!file.eof) {
Buyer newBuyer;
file >> newBuyer.lastName >> newBuyer.firstName >> newBuyer.middleName
>> newBuyer.city >> newBuyer.street >> newBuyer.houseNumber
>> newBuyer.apartmentNumber >> newBuyer.creditCardNumber
>> newBuyer.purchaseCode;
if (!file.fail) {
buyers[size] newBuyer;
size ;
}
}
file.close;
}
else {
cout << ″Не удалось открыть файл.″ << endl;
}
}
int findBuyerByPurchaseCode(const Buyer buyers[], int size, int purchaseCode) {
for (int i 0; i < size; i ) {
if (buyers[i].purchaseCode purchaseCode) {
return i;
}
}
return -1;
}
void displayBuyers(const Buyer buyers[], int size) {
if (size 0) {
cout << ″Массив структур пуст.″ << endl;
return;
}
cout << ″Содержимое массива структур⁚″ << endl;
for (int i 0; i < size; i ) {
cout << ″Покупатель ″ << i 1 << ″⁚″ << endl;
cout << ″Фамилия⁚ ″ << buyers[i].lastName << endl;
cout << ″Имя⁚ ″ << buyers[i].firstName << endl;
cout << ″Отчество⁚ ″ << buyers[i].middleName << endl;
cout << ″Город⁚ ″ << buyers[i].city << endl;
cout << ″Улица⁚ ″ << buyers[i].street << endl;
cout << ″Номер дома⁚ ″ << buyers[i].houseNumber << endl;
cout << ″Номер квартиры⁚ ″ << buyers[i].apartmentNumber << endl;
cout << ″Номер кредитной карточки⁚ ″ << buyers[i].creditCardNumber << endl;
cout << ″Код покупки⁚ ″ << buyers[i].purchaseCode << endl;
cout << endl;
}
}
int main {
Buyer buyers[MAX_SIZE];
int size 0;
cout << ″Выберите действие⁚″ << endl;
cout << ″1. Добавить покупателя.″ << endl;
cout << ″2. Считать покупателей из файла.″ << endl;
cout << ″3. Найти покупателя по коду покупки.″ << endl;
cout << ″4. Вывести содержимое массива покупателей.″ << endl;
switch (choice) {
case 1⁚
addBuyer(buyers, size);
break;
case 2⁚
readBuyersFromFile(buyers, size);
break;
case 3⁚
int purchaseCode;
cout << ″Введите код покупки⁚ ″;
cin >> purchaseCode;
int index findBuyerByPurchaseCode(buyers, size, purchaseCode);
if (index ! -1) {
cout << ″Структура с заданным значением выбранного элемента найдена в покупателе ″ << index 1 << endl;
} else {
cout << ″Структура с заданным значением выбранного элемента не найдена.″ << endl;
}
break;
case 4⁚
displayBuyers(buyers, size);
break;
default⁚
cout << ″Неверный выбор.″ << endl;
break;
}
return 0;
}
Надеюсь, эта программа поможет вам работать с массивом структур на языке C . Удачи!