При повторном запуске результаты поиска не выводятся и не записываются в файл. При первичном все работает. Где здесь ошибка?
#include <iostream>
#include <iomanip>
#include <string>
#include <conio.h>
#include <fstream>
using namespace std;
void create();
void open();
void menu();
void menu2();
void spisok_inst();
void spisok_kaf();
void phone();
struct spisok
{
char name_isnt[100];
char num_korp[100];
char name_kaf[100];
char phone_kaf[100];
};
spisok sp[100];
int n = 0;
void menu()
{
int key;
cout << endl;
cout << " ГЛАВНОЕ МЕНЮ" << endl << endl;
cout << "1) Создать файл" << endl;
cout << "2) Открыть файл" << endl;
cout << "3) Поиск" << endl;
cout << "4) Выход" << endl;
cin >> key;
switch(key)
{
case 1:
create();
break;
case 2:
open();
break;
case 3:
menu2();
break;
case 4:
exit(0);
}
getch();
system("cls");
}
void create()
{
char filename[100];
cout << "Введите название файла: ";
cin >> filename;
system("cls");
ofstream fout;
fout.open(filename);
char answer;
do
{
cout << "Введите название института: ";
cin >> sp[n].name_isnt;
cout << "Введите номер корпуса: ";
cin >> sp[n].num_korp;
cout << "Введите название кафедры: ";
cin >> sp[n].name_kaf;
cout << "Введите телефон кафедры: ";
cin >> sp[n].phone_kaf;
cout << endl;
cout << "Вы хотите ввести еще данные? (y/n)" << endl;
cin >> answer;
cout << endl;
n++;
}
while(answer == 'y');
fout << "|Название института|Номер корпуса|Название кафедры|Телефон кафедры|" << endl;
fout << "|==================|=============|================|===============|" << endl;
for(int i=0; i<n; i++)
fout << setw(5) << sp[i].name_isnt << setw(18) << sp[i].num_korp << setw(15)
<< sp[i].name_kaf << setw(25) << sp[i].phone_kaf << endl;
fout.close();
cout << "Файл сохранен";
getch();
system("cls");
menu();
}
void open()
{
system("cls");
char filename[100];
cout << "Введите название файла: ";
cin >> filename;
ifstream fin;
fin.open(filename);
if(!fin.is_open())
{
cout << "Файл не найден.";
getch();
system("cls");
menu();
}
while(!fin.eof())
{
string s;
getline(fin, s);
cout << s << endl;
}
fin.close();
getch();
system("cls");
menu();
}
void menu2()
{
system("cls");
int key;
cout << " Меню 2:" << endl << endl;
cout << "Искать:" << endl;
cout << "1) список институтов" << endl;
cout << "2) список кафедр" << endl;
cout << "3) номер телефона кафедры" << endl << endl;
cout << "4) выйти из программы" << endl;
cin >> key;
switch(key)
{
case 1:
spisok_inst();
break;
case 2:
spisok_kaf();
break;
case 3:
phone();
break;
case 4:
exit(0);
}
getch();
system("cls");
menu();
}
void spisok_inst()
{
system("cls");
char filename[100];
cout << "Введите название файла: ";
cin >> filename;
ifstream f1;
f1.open(filename);
if(!f1.is_open())
{
cout << "Файл не найден.";
getch();
system("cls");
menu();
}
string s;
while(!f1.eof())
{
getline(f1, s);
cout << s << endl;
}
f1.close();
string num_korp1;
cout << endl << "Введите номер корпуса: ";
cin >> num_korp1;
cout << endl << "Список интистутов, находящихся в " << num_korp1 << " корпусе" << endl;
for(int i=0; i<n; i++)
{
if(num_korp1 == sp[i].num_korp)
cout << sp[i].name_isnt << endl;
}
ofstream f2;
cout << endl << "Введите название файла: ";
cin >> filename;
f2.open(filename);
f2 << "Список интистутов, находящихся в " << num_korp1 << " корпусе" << endl;
for(int i=0; i<n; i++)
{
if(num_korp1 == sp[i].num_korp)
f2 << sp[i].name_isnt << endl;
}
cout << endl << "Файл сохранен" << endl;
f2.close();
getch();
system("cls");
menu();
}
void spisok_kaf()
{
system("cls");
char filename[100];
cout << "Введите название файла: ";
cin >> filename;
ifstream f1;
f1.open(filename);
if(!f1.is_open())
{
cout << "Файл не найден.";
getch();
system("cls");
menu();
}
string s;
while(!f1.eof())
{
getline(f1, s);
cout << s << endl;
}
string name_inst1;
cout << endl << "Введите название института: ";
cin >> name_inst1;
cout << endl << "Список кафедр, входящие в институт " << name_inst1 << endl;
for(int i=0; i<n; i++)
{
if(sp[i].name_isnt == name_inst1)
cout << sp[i].name_kaf << endl;
}
f1.close();
ofstream f2;
cout << endl << "Введите название файла: ";
cin >> filename;
f2.open(filename);
f2 << "Список кафедр, входящие в институт " << name_inst1 << endl;
for(int i=0; i<n; i++)
{
if(sp[i].name_isnt == name_inst1)
f2 << sp[i].name_kaf << endl;
}
cout << endl << "Файл сохранен" << endl;
f2.close();
getch();
system("cls");
menu();
}
void phone()
{
system("cls");
char filename[100];
cout << "Введите название файла: ";
cin >> filename;
ifstream f1;
f1.open(filename);
if(!f1.is_open())
{
cout << "Файл не найден.";
getch();
system("cls");
menu();
}
string s;
while(!f1.eof())
{
getline(f1, s);
cout << s << endl;
}
f1.close();
string phone1;
cout << endl << "Введите название кафедры: ";
cin >> phone1;
cout << endl << "Номер телефона кафедры " << phone1 << endl;
for(int i=0; i<n; i++)
{
if(sp[i].name_kaf == phone1)
cout << sp[i].phone_kaf << endl;
}
ofstream f2;
cout << endl << "Введите название файла: ";
cin >> filename;
f2.open(filename);
f2 << "Номер телефона кафедры " << phone1 << endl;
for(int i=0; i<n; i++)
{
if(sp[i].name_kaf == phone1)
f2 << sp[i].phone_kaf << endl;
}
cout << endl << "Файл сохранен" << endl;
f2.close();
getch();
system("cls");
menu();
}
int main()
{
setlocale(LC_ALL, "rus");
menu();
getch();
system("cls");
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Вот что написано: реализация – это способ показать наследование интерфейса в UMLКогда мы говорим, что класс A реализует интерфейс B, это значит,...
Нужно с использованием оператора LEA узнать адрес начала списка символов, чтобы потом с помощью XLAT выбрать нужный символС обычной переменной...
Прочитал, что такая ошибка при делении на ноль, но у меня нет никакого деления, самая простая программа:
Есть много функций с одинаковым именем и разной цифрой в конце этого имени, то есть function1, function2, function3 и тд