Untitled

mail@pastecode.io avatar
unknown
abap
3 years ago
2.9 kB
7
Indexable
Never
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <fstream>
#include<stdio.h>
#include<conio.h>

using namespace std;

FILE* fl;
typedef struct {

	char naz[30];
	char autor[30];
	int year;
	int page;
}
Books;

Books book[30]; //Массив структур

char name[20]; //Имя файла
int nst;
int n = 0;
int years;
int i;
char namet[30];
int menu(); // Меню
void spisok(); //Ввести список
void resf();//Вывести результат в файл
void resc(); //Вывести на экран за последний месяц
void VivodNaEcran(); // Вывести на экран все

int main()
{
	while (true)
	{
		switch (menu())

		{
		case 1: spisok(); break;
		case 2: resf(); break;
		case 3: VivodNaEcran(); break;
		case 4: resc(); break;
			return 0;
		default: "Viberite pravilno!";
		}
	
	}
}

int menu() //Меню

{
	cout << "1. Vvesti spisok" << endl;
	cout << "2. Vivesti v fail" << endl;
	cout << "3. Vivesti na ekran vse" << endl;
	cout << "4. Vivesti book" << endl;
	int i;
	cin >> i;
	return i;
}

void spisok() // Ввести список
{
	cout << "Vvedite kolichestvo" << endl;
	cin >> nst;
	for (int i = 0; i < nst; i++)
	{
		cout << "Vvedite nazvanie:" << endl;
		cin >> book[i].naz;
		cout << "Vvedite autor:" << endl;
		cin >> book[i].autor;
		cout << "Vvedite page:" << endl;
		cin >> book[i].page;
		cout << "Vvedite year:" << endl;
		cin >> book[i].year;
	}
}

void resf() // Вывести результат в файл
{
	FILE* fl;
	fopen_s(&fl, "file.txt", "w");             // Здесь нужно было присвоить fopen для fl, также заменил fopen_s на fopen
	for (int i = 0; i < nst; i++)
	{
		if (book[i].year != 0) {			
			fprintf(fl, "%s %s %u %u", book[i].naz, book[i].autor, book[i].page, book[i].year);

		}
		cout << endl;
	}
	fclose(fl);
}
void VivodNaEcran() //Вывести все на экран
{
	n = 0;
	FILE* fl; fopen_s(&fl, "file.txt", "r");
	if (fl != NULL)
	{
		do {
			n++;
			fscanf(fl, "%s %s %d %d", book[n].naz, book[n].autor, &book[n].page, &book[n].year);
			cout << book[n].naz << " " << book[n].autor << " " << book[n].page << " " << book[n].year << endl;
		} while (!feof(fl));
		
	}
	else {
		cout << "ERROR";
	}
	fclose(fl);
}
void resc() //Вывести на экран книги после заданного года
{
	n = 0;
	int PrevYear; 
	cout << " Enter year before " << endl;
	cin >> PrevYear;

	FILE* fl; fopen_s(&fl, "file.txt", "r");
	if (fl != NULL)
	{
		do {
			n++;
			fscanf(fl, "%s %s %d %d", book[n].naz, book[n].autor, &book[n].page, &book[n].year);
		} while (!feof(fl));

	}
	for (int i = 0; i <= n; i++)
	{
		if (PrevYear < book[i].year)
			{
			cout << book[i].naz << " " << book[i].autor << " " << book[i].page << " " << book[i].year << endl;
			}
	}
	fclose(fl);

}