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

Тема в разделе "C и С++ FAQ", создана пользователем BoSSea, 29 фев 2012.

  1. BoSSea

    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
      Размер файла:
      15,5 КБ
      Просмотров:
      34
    • error2.JPG
      error2.JPG
      Размер файла:
      58,3 КБ
      Просмотров:
      28
  2. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
Загрузка...
Похожие Темы - C++ Выкидывает При
  1. Nadia_IT
    Ответов:
    0
    Просмотров:
    21
  2. kmm96
    Ответов:
    1
    Просмотров:
    24
  3. TriXel_01
    Ответов:
    5
    Просмотров:
    99
  4. acs-nexus
    Ответов:
    0
    Просмотров:
    91
  5. Ramzay
    Ответов:
    3
    Просмотров:
    134

Поделиться этой страницей