N
nreginka832
Здравствуйте. Нужно описать структуру "фильм".
-название
-режиссер
-год выпуска
-стоимость
Удалить все элементы, у которых стоимость превышает заданную
Добавить k элементов в начало файла.
Запись , чтение из файла сделала.
Вот не могу понять, как удалить именно те элементы, у которых стоимость нужно учитывать.
И добавление у меня по другому. тоже не понимаю как сделать так, чтобы добавление шло с начала.
-название
-режиссер
-год выпуска
-стоимость
Удалить все элементы, у которых стоимость превышает заданную
Добавить k элементов в начало файла.
Запись , чтение из файла сделала.
Вот не могу понять, как удалить именно те элементы, у которых стоимость нужно учитывать.
И добавление у меня по другому. тоже не понимаю как сделать так, чтобы добавление шло с начала.
C++:
#include "stdafx.h"
#include <iostream>
#include <locale>
#include <conio.h>
#include <iomanip>
#include <windows.h>
#include <fstream>
#include <string.h>
using namespace std;
const int L = 20,
N = 50;
struct film // структура фильм
{
char name[L], // Название
director[L], // режиссер
year[L]; // год выпуска
char cost[9]; // стоимость
};
film x[N];
int n;
void inputFile();
void outputScreen();
void outputScreenFile();
void addFilm();
void deleteFilm();
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
setlocale(LC_CTYPE, "Russian");
int j; //пункт меню
while (1)//бесконечный цикл
{
system("CLS");
cout << "\n Структура фильм\n";
cout << "\n Структура фильм\n";
cout << "-----------------------------------\n";
cout << "1 Ввод из текстового файла\n";
cout << "2 Просмотр \n";
cout << "3 Сохранение в текстовом файле\n";
cout << "4 Добавление записи\n";
cout << "5 Удаление записи\n";
cout << "-----------------------------------\n";
cout << "0 Завершение работы. Выход из программы\n";
cout << endl;
cout << "Ваш выбор (0-6): ";
cin >> j;
switch (j)
{
case 1: inputFile(); _getch(); break;
case 2: outputScreen(); _getch(); break;
case 3: outputScreenFile(); _getch(); break;
case 4: addFilm(); _getch(); break;
case 5: deleteFilm(); _getch(); break;
case 0: cout << "Завершение работы. Нажмите Enter\n";
_getch(); return;
default: cout << "Ошибка: Введённый пункт отсутствует!\n";
_getch(); break;
}
}
}
void inputFile() // ввод из файла
{
char file[L];
ifstream fin;
cout << "Имя входного файла: "; cin >> file;
fin.open(file);
if (fin.fail()) { cout << file << " - не открыт\n"; _getch(); exit(1); }
n = 0;
do
{
fin >> x[n].name >> x[n].director>>x[n].year >> x[n].cost;
n++;
} while (fin.good());
fin.close();
cout << endl << "Количество записей n= " << n;
cout << "\nФайл введён. Полученный массив: \n";
outputScreen();
}
void outputScreen() //вывод на экран
{
cout << " Структура фильм\n";
cout << "____________________________________________________\n";
cout << " |№ | Название | Режиссер | ГодВыпуска | Стоимость | " << endl;
cout << " |--|----------|----------|------------|-----------|\n";
int i;
for (i = 0; i<n; i++)
cout << left << " |" << setw(2) << i + 1 << "|" << setw(10) << x[i].name << "|" << "|" << setw(10) << x[i].director << "|" << setw(11) << x[i].year << "|" << setw(11) << x[i].cost << "|" << endl;
cout << "____________________________________________________\n";
}
void outputScreenFile() //вывод в файл
{
char file[L];
ofstream fout;
int i;
cout << "Имя выходного файла: "; cin >> file;
fout.open(file);
if (fout.fail()) { cout << file << " - не создан\n"; _getch(); exit(1); }
for (i = 0; i<n; i++)
{
fout << setw(10) << x[i].name << " " << setw(10) << x[i].director << " " << setw(11) << x[i].year << " " << setw(11) << x[i].cost;
if (i != n - 1) fout << endl; if (fout.fail()) break;
}
fout.close();
cout << "Файл создан.\n";
}
void addFilm() // добавление записи
{
film t;
outputScreen();
int ans1,
ans2;
cout << "Сколько строк желаете добавить? "; cin >> ans1;
cout << "После какой строки? "; cin >> ans2;
int i, j;
for (j = 0; j<ans1; j++)
{
n++;
for (i = n - 1; i>ans2 + j; i--) x[i] = x[i - 1];
cout << "\nВведите данные фильма:\n";// Ввод данных для записи
cout << "Название: "; cin >> t.name;
cout << "Режиссер: "; cin >> t.director;
cout << "Год выпуска: "; cin >> t.year;
cout << "Стоимость: "; cin >> t.cost;
x[ans2 + j] = t;
}
cout << "Запись добавлена\n\nПолученный массив:\n";
outputScreen();
}
void deleteFilm() //удаление записи
{
int j, i;
outputScreen();
cout << "Введите стоимость фильма: ";
cin >> j;
if (j>n)
{ cout << "Нет такой стоимости\n";
_getch();
return;
}
j--;
cout << "Фильмы:";
cout << left << setw(11) << x[j].cost << right << " " << endl;
n--;
cout << "Запись удалена\n\nПолученный массив: \n";
outputScreen();
}