folder Tahribat.com Forumları
linefolder C - C++
linefolder C++ Listeye Alfabetik Sıraya Göre Ekleme Fonksiyonu Acil Yardım



C++ Listeye Alfabetik Sıraya Göre Ekleme Fonksiyonu Acil Yardım

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    JuNYoR
    JuNYoR's avatar
    Kayıt Tarihi: 15/Haziran/2006
    Erkek

    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
    typedef struct kayit { char Ad[15];
    char Soyad[30];
    char Adres[40];
    unsigned short int Yas;
    struct kayit * sonraki;} kayitTip;
    int main()
    {
          kayitTip * Listeye_Ekle (kayitTip *, kayitTip *);
          void Listele (kayitTip *);
          kayitTip * Listeden_Sil(char*,kayitTip *);
          kayitTip * kayit;
          kayitTip * Liste=NULL;
          int secim;
          int L;
          char Ad[15];
          while(1){
          printf("1.Kayit Ekle\n");
          printf("2.Kayit Listele\n");
          printf("3.Kayit Sil\n");
          printf("Secim [1-4]?\n");
          scanf("%d",&secim);
          if(secim==1){
          kayit=(kayitTip * ) malloc (sizeof(kayitTip));
          printf("Ad:\n");
          scanf("%s",kayit->Ad);
          printf("Soyad:\n");
          scanf("%s",kayit->Soyad);
          printf("Adres:\n");
          scanf("%s",kayit->Adres);
          printf("Yas:\n");
          scanf("%d",&kayit->Yas);
          kayit->sonraki=NULL;
          getch();
          Liste=Listeye_Ekle(Liste,kayit);
          printf("Islem Basarili!\n");
          }else if(secim==2)Listele(Liste);
          else if(secim==3){printf("Silinecek kaydin adini giriniz:\n");
          scanf("%s",Ad);
          Liste=Listeden_Sil(Ad,Liste);
          }
          else if (secim==4) break;
          }
          system("PAUSE");
          return 0;
    }
    kayitTip* Listeye_Ekle(kayitTip * Liste, kayitTip * kayit) {
              if (Liste!=NULL) {
              kayit->sonraki=Liste;
              Liste=kayit;
              }  else{Liste=kayit;}
    }

    kayitTip* Listeden_Sil(char * Ad, kayitTip * L) {
              kayitTip*p;
              kayitTip*onceki;
              p=L;
              onceki=NULL;
              while (p!=NULL){
              if (strcmp (p->Ad,Ad)==0)
              {
               if (L==p){L=L->sonraki;
               free(p);
               }
               else if(p->sonraki==NULL){
               onceki->sonraki=NULL;
               free(p);
               }
               else {
               onceki->sonraki=p->sonraki;
               free(p);}
               }
               onceki=p;
               p=p->sonraki;
               }
               return L;
           }
     void Listele ( kayitTip * L) {
              while( L!=NULL){
              printf("Ad:%s\n", L->Ad);
              printf("Soyad:%s\n", L->Soyad);
              printf("Adres:%s\n", L->Adres);
              printf("Yas:%d\n", L->Yas);
              L=L->sonraki;}
              }


    Arkadaşlar komutlar bunlar ancak eklemeyi alfabetik yapmıyor. Girilen kaydın "Adı" strcmp ile varolan kayıtlarla karşılaştırılıp, başa sona ya da en önemlisi araya ekleme yapıp bağlantıların tekrardan kurulması gerek. Bu konuda acil yardım ederseniz çok sevinirim.

    Şimdiden teşekkür ederim.


    Su gibi olmalıyız. Herşeyden aşağıda, ama kaya gibi kuvvetli......
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    seretide
    seretide's avatar
    Kayıt Tarihi: 14/Haziran/2010
    Erkek

    Listeye ekleme yapıldıktan sonra sıralama yapılsa olurmu?

     

    //bu fonksiyonu listeye_ekle fonksiyonun sonuna eklersin

    void listeyi_sirala(kayitTip * L)
    {   
        kayitTip *i,*k;
        int tmp,j;
       
      
       

        for(i=L;i->sonraki!=NULL;i=i->sonraki){
            for(k=i->sonraki;k!=NULL;k=k->sonraki){
                if(i->Ad[0]>k->Ad[0]){
                   tmp=i->Yas;
                   i->Yas=k->Yas;
                   k->Yas=tmp;
                 
                   for(j=0;j<15;j++){
                      tmp=i->Ad[j];
                      i->Ad[j]=k->Ad[j];
                      k->Ad[j]=tmp;
                   }
                   for(j=0;j<25;j++){
                      tmp=i->Soyad[j];
                      i->Soyad[j]=k->Soyad[j];
                      k->Soyad[j]=tmp;
                   }
                   for(j=0;j<40;j++){
                      tmp=i->Adres[j];
                      i->Adres[j]=k->Adres[j];
                      k->Adres[j]=tmp;              
                   }
                }
            }
        }
      
     
    }


    Saçma
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    JuNYoR
    JuNYoR's avatar
    Kayıt Tarihi: 15/Haziran/2006
    Erkek

    Hata alıyorumda tam olarak nereye ekleyeceğim ?


    Su gibi olmalıyız. Herşeyden aşağıda, ama kaya gibi kuvvetli......
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    seretide
    seretide's avatar
    Kayıt Tarihi: 14/Haziran/2010
    Erkek

    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>


    typedef struct kayit { char Ad[15];
    char Soyad[30];
    char Adres[40];
    unsigned short int Yas;
    struct kayit * sonraki;} kayitTip;


    int main()
    {
          kayitTip * Listeye_Ekle (kayitTip *, kayitTip *);
          void Listele (kayitTip *);
          kayitTip * Listeden_Sil(char*,kayitTip *);
          kayitTip * kayit;
          kayitTip * Liste=NULL;
          int secim;
          int L;
          char Ad[15];
          while(1){
          printf("1.Kayit Ekle\n");
          printf("2.Kayit Listele\n");
          printf("3.Kayit Sil\n");
          printf("Secim [1-4]?\n");
          scanf("%d",&secim);
          if(secim==1){
          kayit=(kayitTip * ) malloc (sizeof(kayitTip));
          printf("Ad:\n");
          scanf("%s",kayit->Ad);
          printf("Soyad:\n");
          scanf("%s",kayit->Soyad);
          printf("Adres:\n");
          scanf("%s",kayit->Adres);
          printf("Yas:\n");
          scanf("%d",&kayit->Yas);
          kayit->sonraki=NULL;
          getch();
          Liste=Listeye_Ekle(Liste,kayit);
          printf("Islem Basarili!\n");
          }else if(secim==2)Listele(Liste);
          else if(secim==3){printf("Silinecek kaydin adini giriniz:\n");
          scanf("%s",Ad);
          Liste=Listeden_Sil(Ad,Liste);
          }
          else if (secim==4) break;
          }
          system("PAUSE");
          return 0;
    }

    void listeyi_sirala(kayitTip * L)
    {   
        kayitTip *i,*k;
        int tmp,j;
       
       
       

        for(i=L;i->sonraki!=NULL;i=i->sonraki){//liste sinif bilgilerine göre siralaniyor
            for(k=i->sonraki;k!=NULL;k=k->sonraki){
                if(i->Ad[0]>k->Ad[0]){
                   tmp=i->Yas;
                   i->Yas=k->Yas;
                   k->Yas=tmp;
                 
                   for(j=0;j<15;j++){
                      tmp=i->Ad[j];
                      i->Ad[j]=k->Ad[j];
                      k->Ad[j]=tmp;
                   }
                   for(j=0;j<25;j++){
                      tmp=i->Soyad[j];
                      i->Soyad[j]=k->Soyad[j];
                      k->Soyad[j]=tmp;
                   }
                   for(j=0;j<40;j++){
                      tmp=i->Adres[j];
                      i->Adres[j]=k->Adres[j];
                      k->Adres[j]=tmp;              
                   }
                }
            }
        }
       
      
        
     
    }

    kayitTip* Listeye_Ekle(kayitTip * Liste, kayitTip * kayit) {
              if (Liste!=NULL) {
              kayit->sonraki=Liste;
              Liste=kayit;
              }  else{Liste=kayit;}
    }

    kayitTip* Listeden_Sil(char * Ad, kayitTip * L) {
              kayitTip*p;
              kayitTip*onceki;
              p=L;
              onceki=NULL;
              while (p!=NULL){
              if (strcmp(p->Ad,Ad)==0)
              {
               if (L==p){L=L->sonraki;
               free(p);
               }
               else if(p->sonraki==NULL){
               onceki->sonraki=NULL;
               free(p);
               }
               else {
               onceki->sonraki=p->sonraki;
               free(p);}
               }
               onceki=p;
               p=p->sonraki;
               }
               return L;
           }
     void Listele ( kayitTip * L) {
              while( L!=NULL){
              printf("Ad:%s\n", L->Ad);
              printf("Soyad:%s\n", L->Soyad);
              printf("Adres:%s\n", L->Adres);
              printf("Yas:%d\n", L->Yas);
              L=L->sonraki;}
              }


    Saçma
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    seretide
    seretide's avatar
    Kayıt Tarihi: 14/Haziran/2010
    Erkek

    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>


    typedef struct kayit { char Ad[15];
    char Soyad[30];
    char Adres[40];
    unsigned short int Yas;
    struct kayit * sonraki;} kayitTip;


    int main()
    {
          kayitTip * Listeye_Ekle (kayitTip *, kayitTip *);
          void Listele (kayitTip *);
          kayitTip * Listeden_Sil(char*,kayitTip *);
          kayitTip * kayit;
          kayitTip * Liste=NULL;
          int secim;
          int L;
          char Ad[15];
          while(1){
          printf("1.Kayit Ekle\n");
          printf("2.Kayit Listele\n");
          printf("3.Kayit Sil\n");
          printf("Secim [1-4]?\n");
          scanf("%d",&secim);
          if(secim==1){
          kayit=(kayitTip * ) malloc (sizeof(kayitTip));
          printf("Ad:\n");
          scanf("%s",kayit->Ad);
          printf("Soyad:\n");
          scanf("%s",kayit->Soyad);
          printf("Adres:\n");
          scanf("%s",kayit->Adres);
          printf("Yas:\n");
          scanf("%d",&kayit->Yas);
          kayit->sonraki=NULL;
          getch();
          Liste=Listeye_Ekle(Liste,kayit);
          printf("Islem Basarili!\n");
          }else if(secim==2)Listele(Liste);
          else if(secim==3){printf("Silinecek kaydin adini giriniz:\n");
          scanf("%s",Ad);
          Liste=Listeden_Sil(Ad,Liste);
          }
          else if (secim==4) break;
          }
          system("PAUSE");
          return 0;
    }

    void listeyi_sirala(kayitTip * L)
    {   
        kayitTip *i,*k;
        int tmp,j;
       
       
       

        for(i=L;i->sonraki!=NULL;i=i->sonraki){//liste sinif bilgilerine göre siralaniyor
            for(k=i->sonraki;k!=NULL;k=k->sonraki){
                if(i->Ad[0]>k->Ad[0]){
                   tmp=i->Yas;
                   i->Yas=k->Yas;
                   k->Yas=tmp;
                 
                   for(j=0;j<15;j++){
                      tmp=i->Ad[j];
                      i->Ad[j]=k->Ad[j];
                      k->Ad[j]=tmp;
                   }
                   for(j=0;j<25;j++){
                      tmp=i->Soyad[j];
                      i->Soyad[j]=k->Soyad[j];
                      k->Soyad[j]=tmp;
                   }
                   for(j=0;j<40;j++){
                      tmp=i->Adres[j];
                      i->Adres[j]=k->Adres[j];
                      k->Adres[j]=tmp;              
                   }
                }
            }
        }
       
      
        
     
    }

    kayitTip* Listeye_Ekle(kayitTip * Liste, kayitTip * kayit) {
              if (Liste!=NULL) {
              kayit->sonraki=Liste;
              Liste=kayit;
              }  else{Liste=kayit;}

              listeyi_sirala(Liste);

    }

    kayitTip* Listeden_Sil(char * Ad, kayitTip * L) {
              kayitTip*p;
              kayitTip*onceki;
              p=L;
              onceki=NULL;
              while (p!=NULL){
              if (strcmp(p->Ad,Ad)==0)
              {
               if (L==p){L=L->sonraki;
               free(p);
               }
               else if(p->sonraki==NULL){
               onceki->sonraki=NULL;
               free(p);
               }
               else {
               onceki->sonraki=p->sonraki;
               free(p);}
               }
               onceki=p;
               p=p->sonraki;
               }
               return L;
           }
     void Listele ( kayitTip * L) {
              while( L!=NULL){
              printf("Ad:%s\n", L->Ad);
              printf("Soyad:%s\n", L->Soyad);
              printf("Adres:%s\n", L->Adres);
              printf("Yas:%d\n", L->Yas);
              L=L->sonraki;}
              }


    Saçma
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    JuNYoR
    JuNYoR's avatar
    Kayıt Tarihi: 15/Haziran/2006
    Erkek

    Çok teşekkür ederim. Listelerken sadece ilk kayıt listeleniyor ama kod kısmı işimi görecektir. İyi günler.


    Su gibi olmalıyız. Herşeyden aşağıda, ama kaya gibi kuvvetli......
Toplam Hit: 1880 Toplam Mesaj: 6