сортировка пузырьком C++ структуры в файле
необходимо отсортировать и сделать поиск инфы по файлу. вот что у меня получилось
выдает ошибку 'Серьезность Код Описание Проект Файл Строка Состояние подавления Ошибка (активно) E0167 аргумент типа "TV_Programm *" несовместим с параметром типа "char"' и 'Серьезность Код Описание Проект Файл Строка Состояние подавления Ошибка C2664 "void Sort(TV_Programm **,const char)": невозможно преобразовать аргумент 2 из "TV_Programm *" в "const char"'
и еще вопрос: у меня структура или массив динамический или нет?
// ConsoleApplication1.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//
#include <iostream>
#include <string>
#include <conio.h>
#include <iostream>
#include <windows.h> //#include <Windows.h> // для работы SetConsoleCP, SetConsoleOutputCP
#include <fstream>
#include <clocale>
#include <cstdlib> // подключаем цвета консоли
#include <algorithm>
#include <vector>
#pragma warning(disable : 4996);
#define FNAME "Text.txt" // файл
#define SIZELST 100
#define COL 80
#define ROW 20
using namespace std;
typedef struct {
char chanell[25]; // канал
char date_time[25]; // время и дата показа
char show[25]; // программа
} TV_Programm;
//TV_Programm tv[SIZELST];//массив структур
TV_Programm* tv = new TV_Programm[SIZELST];
int nst = 0; //число введенных структур
// прототипы пользовательских функций
int menu(); // главное меню
int spisok(); // ввод исходных данных
int resc(); //вывод содержимого текстового файла на экран
int poisk(); // поиск информации
int menu() // функция МЕНЮ
{
cout << "-----============== ИНФОРМАЦИОННАЯ СИСТЕМА - ТЕЛЕПРОГРАММА ================-----\n";
cout << " 1 - ДОБАВИТЬ ИНФОРМАЦИЮ" << endl;
cout << " 2 - ПРОСМОТР ВСЕЙ ИНФОРМАЦИИ" << endl;
cout << " 3 - ПОИСК ИНФОРМАЦИИ по заданному критерию" << endl;
cout << " 0 - ВЫХОД " << endl;
cout << "Выберите операцию:";
int menu_number; // число выбора из меню
cin >> menu_number;
return menu_number;
}
int spisok() // функция ВВОДА ДАННЫХ ПРОГРАММЫ В ФАЙЛ
{
SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода
SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода
setlocale(LC_ALL, "Rus"); // Подключение русского языка
ofstream outFil(FNAME); // Открытие файла для записи и проверка на открытие
if (!outFil)
{
cout << "Не открыт файл " << FNAME;
_getch();
return 1;
}
system("cls");
cout << " Введите число каналов: ";
cin >> nst; cout << endl;
for (int j = 0; j < nst; j++) // цикл заполнения файла
{
cin.ignore();
cout << "Введите название канала, время и программу через пробел: " << endl;
cout << "Пример: Channel Time Program ЛИБО Канал Время Программа " << endl;
//cin >> tv[j].chanell;
scanf("%s", &tv[j].chanell);
cin.ignore();
//cout << "Введите время и дата показа: " << endl;
//cin >> tv[j].date_time;
scanf("%s", &tv[j].date_time);
cin.ignore();
//cout << "Введите программу: " << endl;
//cin >> tv[j].show;
scanf("%s", &tv[j].show);
//cin.ignore();
outFil << tv[j].chanell << " "
<< tv[j].date_time << " "
<< tv[j].show << "\n";
}
outFil.close();
}
int resc() // функция ВЫВОДА ИЗ ФАЙЛА ВСЕЙ ИНФОРМАЦИИ
{
setlocale(LC_CTYPE, "rus");
string textline;
char matr[ROW][COL];
int count = -1;
// Имя открываемого файла, задано в директиве #define
ifstream inFile(FNAME);
if (!inFile)
{
cout << "Не открыт файл" << FNAME;
_getch();
return 1;
}
/*// Вывод содержимого текстового файла на экран
char ch;
while (inFile.get(ch)) cout << ch;*/
//чтение файла в матрицу
system("cls");
cout << "\nСодержимое файла с данными\n";
while (getline(inFile, textline))
{
count++;
strcpy(matr[count], textline.c_str());
cout << "\n" << matr[count];
}
cout << "\n"; cout << endl;
return 0;
}
//
void Sort(TV_Programm** q, const char n) {
for (int i = 0;i < n;i++) {
for (int j = 0;j < n - i - 1;j++) {
if (q[j]->chanell > q[j + 1]->chanell)
{
TV_Programm* temp = q[j];
q[j] = q[j + 1];
q[j + 1] = temp;
}
}
}
}
//
int poisk() // поиск информации
{
setlocale(LC_CTYPE, "rus");
//printf("%s", tv[0].chanell);
TV_Programm** tv_new = new TV_Programm*[SIZELST];
for (int i = 0;i < SIZELST;i++) tv_new[i] = &tv[i];
Sort(tv_new, tv);
return 0;
}
int main()
{
setlocale(LC_CTYPE, "rus");
system("color 74"); // меняем цвета консоли
while (true)
{
switch (menu())
{
case 1: {spisok(); break; } // функция ВВОДА ДАННЫХ ПРОГРАММЫ В ФАЙЛ
case 2: {resc(); break; } // функция ВЫВОДА ИЗ ФАЙЛА ВСЕЙ ИНФОРМАЦИИ
case 3: {poisk(); break; } // поиск информации
case 0: {return 0; break; } // выход из программы
default: { system("cls"); cout << "Выберите правильно!\n";} // проверка если выбор не из меню
}
}
getch();
}