• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Исходный Код С++ Неверно Работает В Borland C++ 5.02

  • Автор темы ilya1989
  • Дата начала
I

ilya1989

Всем доброго времени суток!Столкнулся с проблемой компиляции кода на разных компиляторах Borland C++ 3.1 и Borland C++ 5.02.
C++:
#include <stdlib>
#include <iostream>
#include <iomanip>
#include <string.>
#include <fstream>
#include <conio>
#include <io>
using namespace std
#define fio 15
#define marka 11
#define time 8
#define tub 4

ofstream report;

class Driver
{
public:
char FIO[fio];
char Marka_Avto[marka];
char tub_num[tub];
char Time_Start[time];
char Time_Finish[time];
int milage;
double fuel_consumption;
};


void sozdanie(char );
void prosmotr();
void tabl();
void endtabl();
void poisk();
void del();


//1.Ввод с клавиатуры
istream &operator>>(istream &istr,Driver &drv)
{
cout<<"Введите ФИО ВОДИТЕЛЯ: ";
istr.ignore();
istr.get(drv.FIO,fio,'\n');
cout<<"Введите МАРКУ АВТОМОБИЛЯ :";
istr.ignore();
istr.get(drv.Marka_Avto,marka,'\n');
cout<<"Введите табельный номер водителя :";
istr.ignore();
istr.get(drv.tub_num,tub,'\n');
cout<<"Введите время выхода(начала) на смену:";
istr.ignore();
istr.get(drv.Time_Start,time,'\n');
cout<<"Введите время окончания на смену:";
istr.ignore();
istr.get(drv.Time_Finish,time,'\n');
cout<<"Введите общий пробег спидометра(киллометраж) :";
istr.ignore();
istr>>drv.milage;
return istr;
}
//2.Запись в файл
ofstream &operator<<(ofstream &write,Driver &drv)
{
write<<drv.FIO<<"\n";
write<<drv.Marka_Avto<<"\n";
write<<drv.tub_num<<"\n";
write<<drv.Time_Start<<"\n";
write<<drv.Time_Finish<<"\n";
write<<drv.milage<<"\n";
write<<drv.fuel_consumption<<"\n";
return write;
}

//3.Вывод на дисплей
ostream &operator<<(ostream &out,Driver &vod)
{
out.setf(ios::left);
out<<"|"<<setw(14)<<vod.FIO<<"|"<<setw(10)<<vod.Marka_Avto<<"|"<<setw(7)
<<vod.tub_num<<"|"<<setw(9)<<vod.Time_Start<<"|"<<setw(9)<<vod.Time_Finish
<<"|"<<setw(7)<<vod.fuel_consumption<<"|"<<setw(8)<<vod.milage<<"|"<<endl;


report.setf(ios::left);
report<<"|"<<setw(14)<<vod.FIO<<"|"<<setw(10)<<vod.Marka_Avto<<"|"<<setw(7)
<<vod.tub_num<<"|"<<setw(9)<<vod.Time_Start<<"|"<<setw(9)<<vod.Time_Finish
<<"|"<<setw(7)<<vod.fuel_consumption<<"|"<<setw(8)<<vod.milage<<"|"<<endl;
return out;
}

//4.Чтение из файла
ifstream &operator>>(ifstream &read, Driver &shofer)
{
read.getline(shofer.FIO,15,'\n');
read.getline(shofer.Marka_Avto,11,'\n');
read.getline(shofer.tub_num,4,'\n');
read.seekg(1L,ios::cur);
read.getline(shofer.Time_Start,8,'\n');
read.getline(shofer.Time_Finish,8,'\n');
read>>shofer.milage;
read>>shofer.fuel_consumption;
read.seekg(1L,ios::cur);
return read;
}

void sozdanie(char a)
{
clrscr();
ofstream vvod;
cout<<"ВВОД ДАННЫХ О ВОДИТЕЛЕ АТП \n\n";
Driver Voditel;
char d;
if(a=='1')
{
vvod.open("Drivers.txt",ios::binary);
report<<"СОЗДАНИЕ НОВОГО ФАЙЛА ДЛЯ ЗАПИСИ\n\n";
}
if(a=='2') 
{
vvod.open("Drivers.txt",ios::app|ios::binary);
report<<"ДОБАВЛЕНИЕ ИНФОРМАЦИИ В ФАЙЛ\n\n";
}
if(!vvod)
{
cerr<<"Don`t open file Drivers.txt for writing!";
report<<"НЕ УДАЛОСЬ ОТКРЫТЬ ФАЙЛ ДЛЯ ЗАПИСИ!\n";
}
do
{
cin>>Voditel;
if(Voditel.milage>0)
{
Voditel.fuel_consumption=0.4*Voditel.milage;
}
else if(Voditel.milage==0)
{
Voditel.fuel_consumption=0;
}
vvod<<Voditel;
cout<<"Продолжить ввод(Y\N или Д\Н)?: ";
cin.ignore();
cin.get(d);
}
while(d=='Y'||d=='y'||d=='Д'||d=='д');
clrscr();
vvod.close();
}

void tabl()
{
cout<<"=======================================================================|\n";
cout<<"|	 ФИО	 |  Марка |Табельн|Вр.нач. | Время |Расход |Пробег |\n";
cout<<"|			 |автомобиля| номер | смены |оконч.см.|Топлива| (км)  |\n";
cout<<"=======================================================================|\n";
cout<<"|																	 |\n";

report<<"=======================================================================|\n";
report<<"|	 ФИО	 |  Марка |Табельн|Вр.нач. | Время |Расход |Пробег |\n";
report<<"|			 |автомобиля| номер | смены |оконч.см.|Топлива| (км)  |\n";
report<<"=======================================================================|\n";
report<<"|																	 |\n";
return;
}

void endtabl()
{
cout<<"|______________________________________________________________________|\n";
report<<"|______________________________________________________________________|\n";
return;
}

void prosmotr()
{
ifstream reading("Drivers.txt",ios::binary);
if(!reading)
{
cerr<<"Don`t opening of file Drivers.txt for reading\n";
report<<"НЕ УДАЛОСЬ ОТКРЫТЬ ФАЙЛ DRIVERS.TXT ДЛЯ ЧТЕНИЯ\n";
return;
}
clrscr();
gotoxy(30,1);
Driver bcd;
cout<<"Просмотр всех записей базы данных водителей АТП\n";
report<<"ПРОСМОТР ВСЕХ ЗАПИСЕЙ БАЗЫ ДАННЫХ ВОДИТЕЛЕЙ АТП\n\n";
tabl();
while(reading)
{
reading>>bcd;
if(strlen(bcd.FIO)<=0)
break;

cout<<bcd;
}
reading.close();
endtabl();
cout<<"Для продолжения нажмите любую клавишу\n";
cin.ignore();
cin.get();
clrscr();
}

void poisk()
{
Driver a;
int kol;
char v;
char FIO_S[fio];
char TUB_S[tub];
char MARKA[marka];
ifstream find("Drivers.txt",ios::binary);
if(!find)
{
cout<<"Error reading of file Drivers.txt\n";
cerr<<"ERROR READING OF FILE DRIVERS.TXT\n";
return;
}
while(1)
{
clrscr();
gotoxy(25,7);
cout<<"=====================================\n";
gotoxy(25,8);
cout<<"||								 ||\n";
gotoxy(25,8);
cout<<"||	ПОИСК ВОДИТЕЛЯ ПО СЛ.АТРИБУТАМ|| \n";
gotoxy(25,9);
cout<<"||		 1.ПО ФИО				 ||\n";
gotoxy(25,10);
cout<<"||  2.ПО МАРКЕ АВТОМОБИЛЯ		 ||\n";
gotoxy(25,11);
cout<<"||  3.ПО ТАБЕЛЬНОМУ НОМЕРУ		 ||\n";
gotoxy(25,12);
cout<<"||		 4.ВЫХОД В ГЛ.МЕНЮ		||\n";
gotoxy(25,13);
cout<<"||								 ||\n";
gotoxy(25,14);
cout<<"======================================\n";
gotoxy(25,18);
cout<<"Вы выбрали: ";
cin.seekg(0,ios::end);
cin.get(v);
clrscr();
cout<<"Поиск информации\n";
report<<"\n\nПОИСК ИНФОРМАЦИИ\n";
clrscr();
switch(v)
{
case'1':
cout<<"Введите ФИО водителя: ";
cin.seekg(0,ios::end);
cin.getline(FIO_S,fio,'\n');
report<<"ФИО ВОДИТЕЛЯ :"<<FIO_S<<endl;
break;

case '2':
cout<<"Введите марку автомобиля водителя: ";
cin.seekg(0,ios::end);
cin.getline(MARKA,marka,'\n');
report<<"МАРКА АВТОМОБИЛЯ ВОДИТЕЛЯ :"<<MARKA<<endl;
break;

case '3':
cout<<"Введите табельный номер водителя: ";
cin.seekg(0,ios::end);
cin.getline(TUB_S,tub,'\n');
report<<"ТАБЕЛЬНЫЙ НОМЕР ВОДИТЕЛЯ :"<<TUB_S<<endl;
break;
case '4':
return;
}
tabl();
while(!find.eof())
{
find>>a;
if((v=='1'&&!strcmp(FIO_S,a.FIO))||
(v=='2'&&!strcmp(MARKA,a.Marka_Avto))||
(v=='3'&&!strcmp(TUB_S,a.tub_num)))
{
kol++;
cout<<a;
}
}
if(kol==0)
cout<<"Найдено 0 записей в БД по введенным данным!\n";
report<<"НАЙДЕНО 0 ЗАПИСЕЙ В БД ПО ВВЕДЕННЫМ ДАННЫМ!\n";
find.close();
endtabl();
getch();
clrscr();
return;
}
}
void del()
{
ofstream temp("Temp.txt",ios::binary);
ifstream read("Drivers.txt",ios::binary);
char FIO_DEL[fio];
int kol=0;
Driver z;
clrscr();
cout<<"Удаление водителя по ФИО \n";
report<<"УДАЛЕНИЕ ВОДИТЕЛЯ ПО ФИО \n";
cout<<"Введите ФИО водителя для удаления :";
cin.seekg(0,ios::end);
cin.getline(FIO_DEL,fio,'\n');
report<<"\nФИО ВОДИТЕЛЯ ДЛЯ УДАЛЕНИЯ :"<<FIO_DEL<<endl;
if(!temp)
{
cerr<<"Ошибка открытия файла для удаления информации!\n";
report<<"ОШИБКА ОТКРЫТИЯ ФАЙЛА ДЛЯ УДАЛЕНИЯ ИНФОРМАЦИИ\n\n";
exit(1);
}
read.seekg(0,ios::beg);
if(!temp)
{
cerr<<"Ошибка открытия файла для записи\n";
report<<"ОШИБКА ОТКРЫТИЯ ФАЙЛА ДЛЯ ЗАПИСИ\n\n";
exit(1);
}

temp.seekp(0,ios::beg);
while(!read.eof())
{
read>>z;
if(!strlen(z.FIO))
{
break;
}
if(!strcmp(FIO_DEL,z.FIO))
{
kol=1;
cout<<"\nИнформация удалена\n";
report<<"ИНФОРМАЦИЯ УДАЛЕНА\n";
cout<<"Продолжение-Enter";
cin.seekg(0,ios::end);
cin.get();
}
else
temp<<z;
}
read.close();
temp.close();
if(kol==0)
{
cout<<"Нет информации для удаления\n";
report<<"НЕТ ИНФОРМАЦИИ ДЛЯ УДАЛЕНИЯ\n\n";
}
else
{
remove("Drivers.txt");
rename("Temp.txt","Drivers.txt");
return;
}
}

void main()
{
report.open("Report.txt");
if(!report)
{
cout<<"Не удается открыть файл для записи протокола!";
return;
}
char a;
gotoxy(30,3);
cout<<"БАЗА ДАННЫХ ВОДИТЕЛЕЙ АТП\n";
while(1)
{
gotoxy(19,6);
cout<<"||--------------------------------------------||\n";
gotoxy(19,7);
cout<<"||1.Создание новой базы данных				||\n";
gotoxy(19,8);
cout<<"||2.Добавление записи в базу данных		  ||\n";
gotoxy(19,9);
cout<<"||3.Вывод всех записей из БД на дисплей	  ||\n";
gotoxy(19,10);
cout<<"||4.Поиск водителя по ФИО и ТАБ.НОМЕРУ		||\n";
gotoxy(19,11);
cout<<"||5.Удаление записи из БД					 ||\n";
gotoxy(19,12);
cout<<"||6.Выход									 ||\n";
gotoxy(19,13);
cout<<"||____________________________________________||\n";
gotoxy(19,14);
cin.seekg(0,ios::end);
cout<<"Вы ввели: \n";
gotoxy(19,15);
cin.get(a);
switch(a)
{
case '1':
case '2':
sozdanie(a);
break;
case '3':
prosmotr();
break;
case '4':
poisk();
break;
case '5':
del();
break;
case '6':
report.close();
return;

default:
cout<<"Диапазон ввода от 1 до 4!\n";
cin.seekg(0,ios::end);
cin.get();
}
}
}
В Borland C++ 3.1 код работает прекрасно,но есть необходимость запускать код на компиляцию в Borland C++ 5.02.

Вся беда в том,что при запуске кода в Borland C++ 5.02 курсор зависает на главном меню,бегает сверху вниз(дисплея) и ничего при этом нельзя сделать(выбрать нужный пункт меню).Подскажите пожалуйста,в чем может быть загвоздка?

За ранее очень благодарен за помощь!
 
L

lazybiz

cin.seekg() нельзя использовать для стандартных потоков ввода/вывода. Зачем ты его используешь?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!