Tuesday, 3 January 2012

Reading file and creating binary tree

void Agac::agackur(char *talebeno,char *isim,char *soyisim){
    ogrenciPtr tara,yeni;
    tara = kok;
    int karsilas;
    bool eklenme_durumu = false;
    yeni = new Ogrenci;
    strcpy(yeni->ad,isim);
    strcpy(yeni->soyad,soyisim);
    strcpy(yeni->ogrno,talebeno);
    yeni->sagPtr = NULL;
    yeni->solPtr = NULL;
    if(kok==NULL){
        kok=yeni;
        //ilk düğüm burada eklenir
        dugumsayisi++;
        return;
    }
    while((tara!=NULL) && (!eklenme_durumu)){           
        karsilas = strcmp(yeni->ogrno,tara->ogrno);
        if(karsilas<0){
            if(tara->solPtr != NULL)
                tara=tara->solPtr;
            else{
                tara->solPtr = yeni;
                eklenme_durumu = true;
            }
        }else if(karsilas>0){
            if(tara->sagPtr != NULL)
                tara = tara->sagPtr;
            else{
                tara->sagPtr = yeni;
                eklenme_durumu = true;
            }
        }else
            ;
    }
    if(eklenme_durumu)
        dugumsayisi++;
    //Diğer düğümler yukarıdaki satırlarda eklenir
       
       

}
/**********************************************************************************************************************************
* Fonksiyonun adı:dosyadanoku                                                                                                     *
* Fonksiyonun amacı:girdi dosyasindan ogrenci bilgilerini okuyarak agackur fonksiyonuna gönderirir                                  *              
* Giriş Parametresi: ---                                                                                                          *
* Çıkış parametresi: ---                                                                                                          *
* Veri yapıları:struct Kayit                                                                                                      * 
***********************************************************************************************************************************/
void Agac::dosyadanoku(){
    struct Kayit{
        char ad[Ad_soyad_uzunluk];
        char soyad[Ad_soyad_uzunluk];
        char ogrno[Ogrenci_no_uzunluk];
    };
    Kayit kayit;
    char four[Ad_soyad_uzunluk];
    char c;
    cout << "okunuyor" <<endl;
    ifstream oku;
    oku.open("data1.txt",fstream::out);
    if(oku==NULL)
        cerr << "Hata" << endl;
   

    while(!oku.eof()){
        oku >> kayit.ogrno >> kayit.ad >> kayit.soyad;
        if(kayit.ogrno==NULL)
            break;
        oku.get(c);//Bir karakter okur
        c=oku.peek();//Sonraki karakteri okur fakat imlec ilerlemez
        if(c>='A' && c<='Z'){
            oku >> four;
            oku.ignore(1);
            strcat(kayit.ad," ");
            strcat(kayit.ad,kayit.soyad);
            strcpy(kayit.soyad,four);
        }else if(c>='0' && c<='9')
            ;
        else if(c==NULL){
            agackur(kayit.ogrno,kayit.ad,kayit.soyad);
            break;
        }
        agackur(kayit.ogrno,kayit.ad,kayit.soyad);
    }
    oku.close();
}

No comments:

Post a Comment