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

Почему не работает код c++?

Люди добрые,подскажите пожаааааалуйста,почему код не фурычит,а то я скоро расшибусь))))))))))
Суть кода:
либо вводим с клавы,либо выводим из файла наввания книг,тираж,год издания.Прога сортирует те,что выпущены в период с 2000 по 2010гг
нельзя использовать тип string,надо использовать char

вот код который не работает,я уже не выдерживаю!!!!
#include<iostream> 
#include <iomanip> 
#include <fstream> 
#define _CRT_SECURE_NO_WARNINGS
using namespace std;
struct book
{
	char name[100];
	unsigned year;
	unsigned circulation;
};
void func(book*arr, book*array1, int N, int kolvo);
int kolvo(book*arr, int N);
int main()
{
	int n, N, otkr;
	string kng = "TextFile1.txt";
	setlocale(LC_ALL, "Rus");
	book *arr;
	cout << "ВЫБЕРИТЕ СПОСОБ ВВОДА.0 - С КЛАВИАТУРЫ, 1 - ИЗ ФАЙЛА  \n";
	cin >> otkr;
	if (otkr == 0)
	{
		cout << "ВВЕДИТЕ РАЗМЕР МАССИВА  \n";
		cin >> N;
		arr = new book[N];
		for (int i = 0; i < N; i++)
		{
			cout << "ВВЕДИТЕ НАЗВАНИЕ КНИГИ  \n";
			cin >> arr[i].name;
			cout << "ВВЕДИТЕ ТИРАЖ \n";
			cin >> arr[i].circulation;
			cout << "ВВЕДИТЕ ГОД \n";
			cin >> arr[i].year;
		};
		for (int i = 0; i < N; i++)
		{
			cout << arr[i].name << "  " << arr[i].circulation << "  " << arr[i].year << endl;
		};

	}
	else
	{
		fstream knigi;
		knigi.open("TextFile1.txt");
		knigi >> N;
		arr = new book[N];
		for (int i = 0; i < N; i++)
			knigi >> arr[i].name >> arr[i].circulation >> arr[i].year;

	};
	n = kolvo(arr, N);
	book* array1;
	array1 = new book[n];
	cout << "!!!!!!!!!!!!!!!!!!!!!" << n;
	func(arr, array1, N, n);
	for (int i = 0; i < n; i++)
	{
		cout << "КНИГИ НАПЕЧАТАННЫЕ С 2000 ПО 2010 :" << arr[i].name << "  " << arr[i].circulation << endl;
	}

	system("pause");
}

void func(book*arr, book*array1, int N, int kolvo)
{
	int schet = 0;

	for (int i = 0; i < N; i++)
	{
		if ((arr[i].year > 1999) && (arr[i].year < 2011)) {
			strcpy(array1[schet].name, arr[i].name);
			array1[schet].circulation = arr[i].circulation;
			schet++;
		}
	}

}

int kolvo(book*arr, int N)
{
	int kolvo = 0;
	for (int i = 0; i < N; i++)
	{
		if (arr[i].year > 1999 && arr[i].year < 2011)
		{
			kolvo++;
		}
		return(kolvo);
	}

}
  • Вопрос задан
  • 236 просмотров
Подписаться 2 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
NIKITF
@NIKITF
Knows Russian language
Ваш отредактированный код:

#include<iostream> 
#include<fstream> 
#include<string>
using namespace std;
struct book
{
	string name;
	unsigned year;
	unsigned circulation;
};
void sort(book* arr, book* array1, const unsigned& N);
unsigned kolvo(book* arr, const unsigned&N);
int main()
{
	unsigned n, N; bool otkr;
	setlocale(LC_ALL, ""); book* arr = NULL;
	cout << "ВЫБЕРИТЕ СПОСОБ ВВОДА. 0 - С КЛАВИАТУРЫ, 1 - ИЗ ФАЙЛА  \n"; cin >> otkr;
	if (!otkr)
	{
		cout << "ВВЕДИТЕ РАЗМЕР МАССИВА:\n";
		cin >> N;
		arr = new book[N];
		for (int i = 0; i < N; i++)
		{
			cout << "ВВЕДИТЕ НАЗВАНИЕ КНИГИ:\n";
			cin >> arr[i].name;
			cout << "ВВЕДИТЕ ТИРАЖ:\n";
			cin >> arr[i].circulation;
			cout << "ВВЕДИТЕ ГОД \n";
			cin >> arr[i].year;
		};
		for (int i = 0; i < N; i++)
		{
			cout << arr[i].name << "  " << arr[i].circulation << "  " << arr[i].year << endl;
		};
	}
	else
	{
		ifstream knigi("TextFile1.txt");
		knigi >> N;
		arr = new book[N];
		for (int i = 0; i < N; i++)
		{
			knigi >> arr[i].name >> arr[i].circulation >> arr[i].year;
		}
	};
	if ((n = kolvo(arr, N)) == 0)
	{
		cout << "no matches";
		return 0;
	}
	book* array1 = new book[n]; cout<<endl;
	sort(arr, array1, N);
	for (int i = 0; i < n; i++)
	{
		cout << "КНИГИ НАПЕЧАТАННЫЕ С 2000 ПО 2010 :" << arr[i].name << "  " << arr[i].circulation << endl;
	}
	return 0;
}

void sort(book* arr, book* array1, const unsigned&N)
{
	unsigned counter = 0;
	for (auto i = 0; i < N; i++)
	{
		if ((arr[i].year > 1999) && (arr[i].year < 2011))
		{
			array1[counter].name = arr[i].name;
			array1[counter++].circulation = arr[i].circulation;
		}
	}
}

unsigned kolvo(book* arr, const unsigned &N)
{
	unsigned number = 0;
	for (int i = 0; i < N; i++)
	{
		if (arr[i].year > 1999 && arr[i].year < 2011)
		{
			number++;
		}
		return(number);
	}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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