C++ Выкидывает При Компилирование

  • Автор темы BoSSea
  • Дата начала
B

BoSSea

Здраствуйте, пишу програму в С++ (Поиск в неупорядоченной таблице + Бинарный поиск в упорядоченой)

пока недобавил бынарный поиск все было как в сказке, после добавления выдает ошыбку
Скрин прекрипил к топику + отчет ошыбки

З.Ы. в универе все компилируеться норм, по этому решил что что то не так в сборки С, если кто знает в чем может быть причина заранее спасибо за ответ.

Вот Кодб З.Ы. прога не дописана(работает но не полностью) + там все на румынском
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код програмы</div></div><div class="sp-body"><div class="sp-content">
C++:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<iostream.h>
#include<dos.h>
#include<time.h>
#include<stdlib.h>
#include<math.h>

class carte
{
protected:
char autor[50],edit[20];
int an;
float pret;
char denum[50];
public:
////////////////////////////
carte()
{
denum[0]='\0';
autor[0]='\0';
edit[0]='\0';
an=0;
pret=0.0;
}
////////////////////////////////////
carte(char *in_denum,char *in_autor,char *in_edit, int in_an,float in_pret)
{
strcpy(denum,in_denum);
strcpy(autor,in_autor);
strcpy(edit,in_edit);
an=in_an;
pret=in_pret;
}
////////////////////////////////
virtual int fscan_inf(FILE *carti)
{
return fscanf(carti,"%s%s%s%d%f",denum,autor,edit,&an,&pret);
}
/////////////////////////////////////
virtual void show(const char *in, const char *end)
{
cout<<in;
if(denum[0])
cout<<denum<<" "<<autor<<" "<<edit<<" "<<an<<" "<<pret<<endl;
cout<<end;
}
////////////////////////////
int operator >(carte&c2)
{ return strcmp(this->denum,c2.denum)>0;}
/////////////////////////////////////////////
int operator <(carte&c2)
{ return strcmp(this->denum,c2.denum)<0;}
///////////////////////////////////////////////
int operator ==(carte&c2)
{ return strcmp(this->denum,c2.denum)==0;}

};


//////////////////////////////////TABLE SECVENTIAL-----------------------------
const int Nmax=200;
template<class den>

class table
{
protected:
int n;
den t[Nmax];
public:
/////////////////////////////////
table(){n=0;}


///////////////////////
table(char *carti)
{
FILE *pf;
int repeat;
pf=fopen(carti,"rt");
n=0;
while(!feof(pf))
if(t[n].fscan_inf(pf)>0)
{
if((repeat=search(t[n]))==0)
{
char mes[60];
mes[0]='\0';
strcat(mes,"Cheia coincide");
error(mes);
}
n++;
}
fclose(pf);
}
/////////////////////////////////////
virtual void show(const char *in, const char *end)
{
clrscr();
cout<<in;
for(int i=0;i<n;i++)
{
if(i>0&&i%10==0)
{
cout<<"continua";
getch();
clrscr();
cout<<in;
}
cout<<(i+1)<<".";
t[i].show(" ","\n"); cout<<end;
}
cout<<"sfirsitul tabelului";
getch();
}
/////////////////////////////////////////
int search (den e)
{
int poz=-1;
for(int i=0;(poz==-1)&&i<n;i++)
if(e==this->t[i])
{
poz=i;
t[i].show("","");
}
return poz;
}
protected:
void error(char *mes)
{
cerr<<mes;
getch();
exit(1);
}
};
/////////////////////TABLE BINAR-------------------------------------
///////////////////////////////////////////////////////////////////
template<class den>
class binar:public table<den>
{
protected:
int n;
den t[Nmax];
den a;
public:
binar(){n=0;}
///////////////////////////////////////////////////////
binar(char *carti)
{
FILE *pf;
int repeat;
pf=fopen(carti,"rt");
n=0;
while(!feof(pf))
if(t[n].fscan_inf(pf)>0)
{
if((repeat=search(t[n]))==0)
{
char mes[60];
mes[0]='\0';
strcat(mes,"Cheia coincide");
error(mes);
}
n++;
}
fclose(pf);
}
////////////////////////////////////////////////////////////
virtual void show(const char *in, const char *end)
{
clrscr();
cout<<in;
for(int i=0;i<n;i++)
{
if(i>0&&i%10==0)
{
cout<<"continua";
getch();
clrscr();
cout<<in;
}
cout<<(i+1)<<".";
t[i].show("","\n"); cout<<end;
}
cout<<"sfirsitul tabelului";
getch();
}

///////////////////////////////////////////////////////////////////
void sort()
{ den aux;
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if(t[i]>t[j])
{aux=t[i];
t[i]=t[j];
t[j]=aux;}
cout<<"Sortarea selectiva sa efectuat";
}

int caut_bin(den e)
{
char *l;
int a=0,b=n-1;
clock_t t1,t2;
//cout<<"introdu denumirea cartii"<<endl;
//cin>>l;
//t1=clock();
int m,i=0;
while(a<b)
{
m=(a+b)/2;
if(e>t[m])
a=m+1;
else
if(e<t[m])
b=m-1;
else
a=b=m;
}
return e==t[m]?a:-1;
}


};

void main ()
{
int n=50;
clrscr();

table<carte>gr("D:\\b.txt");
gr.show("Cartea \n","\n");
struct time t1,t2;

char ch='n';
char denum1[50];
while(ch!='y')
{
cout<<"\n Introducem denumirea cartii pentru cautare"<<endl;
cin>>denum1;
gettime(&t1);

carte d(denum1,"","",0,0.0);
int poz=gr.search(d);
gettime(&t2);

if(poz<0)
cout<<"\n Carte introdusa nu este";
else
cout<<"\n Cartea cautata se afla pe pozitia "<<poz+1<<endl;
cout<<"\n Da? Y/N";
ch=getch();
cout<<endl;
cout<<"Lungimea Teoretica = "<<n/2<<endl;
cout<<"Lungimea practica = "<<poz+1<<endl;
}

printf("timpul initial : %d\t%d\t%d\t%d\t\n",t1.ti_hour,t1.ti_min,t1.ti_sec,t1.ti_hund);

printf("timpul practic : %d\t%d\t%d\t%d\t\n",t2.ti_hour,t2.ti_min,t2.ti_sec,t2.ti_hund);
printf("diferenta timpurilor : %d\t%d\t%d\t%d\t\n",
t2.ti_hour-t1.ti_hour,t2.ti_min-t1.ti_min,
t2.ti_sec-t1.ti_sec,
(t2.ti_hund-t1.ti_hund)*100);

if((t2.ti_sec-t1.ti_sec)<0)
printf("sec %d ",(t2.ti_sec-t1.ti_sec)+60);
getch();

binar<carte>g("d:\\b.txt");
g.show("Sortat","\n");
g.sort();
g.show("Sortat","\n");

char h='n';
char denum2[50];
while(h!='y')
{
cout<<"\nIntroduceti denumirea Cartii pentru cautare :";
cin>>denum2;
carte e(denum2,"","",0,0.0);
int pozi;
pozi=g.caut_bin(e);
if(pozi<0)
cout<<"\n Carte introdusa nu este";
else
cout<<"\n pozitia "<<pozi+1<<endl;
cout<<"\n Da? Y/N";
h=getch();
cout<<endl;
}
getch();
}
 

Вложения

  • error.JPG
    error.JPG
    12,9 КБ · Просмотры: 515
  • error2.JPG
    error2.JPG
    51,7 КБ · Просмотры: 509
S

Senset

возможно косяк в коде, который вы не прикрепили... может покажете?
или посмотрите тут:
 
Мы в соцсетях:

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