Giriş Yap Kayıt ol Online Üyeler Aktif Konular Arama Üyeler Forum Kuralları
Tahribat.Com | C De Yazmak Istedigim Bi Program ?
Tahribat.Com Forumları
C - C++
      C De Yazmak Istedigim Bi Program ?
Bu Bölümde yeni konu açmak için tıklayın Konuyu cevaplamak için tık...
Konu 15 Aralik 2009 (Sali) 20:24 tarihinde açıldı. Kısayol | Alıntı yap | Özel Mesaj
aLsanCaK


Kayıt : 30 Kasim 2007
BuCaLi
Erkek Üye
 

birazdan bir yerden bularak duzenlemeye calistigim kodlari paylasicam ( bir ton error ve warning var) ama zaman kazanmak acisindan konuyu simdi aciyorum, ben duzenleyene kadar yazan cikabilir diye :) program soyle olacak;

 

menu

1 kitap ekle ( kitap adi, kitabin yazari, fiyati)

2 kitaplari listele ( fiyati kucuk olandan buyuk olana dogru butun kitaplari listeleyecek)

3 cikis

 

c++ ile olmayacak ozellikle c ile olmasi gerekiyor .. simdiden tesekurler


www.palaq.com bilgi deposu 
15 Aralik 2009 (Sali) 20:30 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
Fikret


Kayıt : 1 Ekim 2007
GopCity
Erkek Üye
 

C bilmiyorum fakat yardımım dokunur diyerekten yazayım.

veritabanı bağlantısını ve sql cümlelerini araştır. select ve insert sorguları bu program için işini görür :)


screw you guys! i"m goin" hoooome! 
15 Aralik 2009 (Sali) 20:33 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
JPriest


Kayıt : 9 Mart 2007
İstanbul--Çanakkale
Erkek Üye
 

Eğer ödevse bu veri tabanından ziyade struct (yapı) öğrenilmesi için verilmiştir. Birazdan anlarız.

Edit : evet öyleymiş. File i/o, struct, pointer işlemleri.


Sen hiç kaval çaldın mı? 
15 Aralik 2009 (Sali) 20:34 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
aLsanCaK


Kayıt : 30 Kasim 2007
BuCaLi
Erkek Üye
 

/**bu kodlari da duzeltebilireseniz yada oda olur**/

 

#include <stdio.h>
#include <ctype.h>


struct book_struct
{ char book_name[25];
char book_writer[25];
float price;
};

FILE *fp;

#define MAX 250
#define FILENAME "book.dat"


void main(void);
void menu(void);
void add_book(void);
void list_book(void);
void add_to_file(struct book_struct item);

/*********************************************************/
void main(void)
{
struct book_struct ;
char ans;
do
{ menu();
scanf(" %d", &ans);
switch (ans)
{ case (1) : { add_book();
break; }
case (2) : { list_book();
break; }
}
while (ans!=3);

}
/*********************************************************/
void disp_menu()
{

printf("\t\t Ana Menu\n");
printf("\t\t --------------------\n\n\n\n");
printf("ne istiyorsunuz?:\n\n\n");
printf("\t1. yeni kitap ekle\n\n\n");
printf("\t2. kitaplari listele\n\
\n\n");
printf("\t3. programi kapat\n\n\n");
printf("seciminiz nedir?");
}

/*********************************************************/
void add_book(void)
{
struct book_struct item;
char ans;
do
{ fflush(stdin);
printf("\n\n\n\n\nkitap adi ? ");
gets(item.book_name);
printf("yazar adi? ");
gets(item.book_writer);
printf("fiyati? ");
gets(item.price);


add_to_file(item);
printf("\n\nyeni bir kitap eklemek istermisiniz?");
printf(" secim ? (Y/N) ");
ans=getchar();
getchar();
} while (toupper(ans)=='Y');


}

/*********************************************************/
void print_na(void)
{
struct book_struct item;
int s, linectr=0;

s = sizeof(struct book_struct);
if((fp=fopen(FILENAME, "r"))==NULL)

do
{ if(fread(&item, sizeof(struct book_struct), 1,
fp)!=s)
{ if(feof(fp))
{ break; }
}
if (linectr>20)
{
linectr=0; }
pr_data(item);
linectr+=4;
} while (!feof(fp));
fclose(fp);
printf("\n- End of list -");
pause_sc();
return 0;
}

/*********************************************************/
void err_msg(char err_msg[])
{
printf("\n\n%s\n", err_msg);
printf("%c", BELL);
return 0;
}

/*********************************************************/
void add_to_file(struct book_struct item)
{
if((fp = fopen(FILENAME, "a"))==NULL) /* Open file in
append mode */
{ err_msg("*** Disk error--please check \
disk drive ***");
return 0; }
fwrite(&item, sizeof(item), 1, fp);

fclose(fp);
return 0;
}


www.palaq.com bilgi deposu 
15 Aralik 2009 (Sali) 20:49 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
JPriest


Kayıt : 9 Mart 2007
İstanbul--Çanakkale
Erkek Üye
 

Fonksiyonların hepsi void tanımlanmış ama sonlarında return 0; var. Bildiğim kadarıyla void tanımlanan metodların içinde return olmaz. O kısımları düzeltmekle başlayabilirsin. Bir de Windows'ta çalışıyorsan main fonksiyonu şöyle başlasın

int main (){

//yapılacak işler

..

şöyle de bitsin :

system ("pause");

return 0;

}


Sen hiç kaval çaldın mı? 
15 Aralik 2009 (Sali) 22:32 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
yafa13


Kayıt : 1 Kasim 2007
İst/Elb
Erkek Üye
 

Bizde bunun geniş hali vardı şu kodlar yardımcı olur sanki kardeş sana

 

 

#include <stdio.h>
#include <stdlib.h>  /* calloc(), free() */
#include <time.h>    /* time(), localtime(), strftime() */
#include <string.h>  /* strcpy(), strncpy(), strtok(), strstr(), strcmp() */

typedef enum {FALSE, TRUE} bool;
enum {KITAP_EKLE=1, KITAP_CIKAR, ODUNC_VER, GERI_AL, ARAMA1, ARAMA2, LISTELE1,
      LISTELE2, KAPAT=0};

typedef struct kitap_s{
    char ad[256];
    char yazar[256];
    char yayin_yili[256];
    char odunc_verilen[256];
    char odunc_verilme_tarihi[256];
    char raf_no[256];

    struct kitap_s *next1;  /* Bağlantılı liste */
    struct kitap_s *next2;  /* Bağlantılı liste */
}kitap_t;

typedef struct liste_s{
    struct kitap_s *son1;  /* Listenin son elemanı */
    struct kitap_s *son2;  /* Listenin son elemanı */
}liste_t;

/* program arabirimi fonksiyonları */
void dosyadan_oku(char *dosya_adi, liste_t *liste);
int dosyaya_yaz(char *dosya_adi, liste_t *liste);
void ekran_temizle(void);
int menu(char *kriter1, char *kriter2);
char *arguman(char *bilgi);
char *u2l(const char *st);
void menuye_don(void);

/* Menü fonksiyonları */
void kitap_ekle(liste_t *liste);
void kitap_cikar(char *kriter, liste_t *liste);
void odunc_ver(char *kriter, liste_t *liste);
void geri_al(char *kriter, liste_t *liste);
int arama(char* kriter, liste_t *liste);
void listele(char *kriter, int sira, liste_t *liste);

/* Çevrel liste fonksiyonları */
void sonuna_ekle(kitap_t *kitap, liste_t *liste);
void basina_ekle(kitap_t *kitap, liste_t *liste);
bool bos_liste(liste_t *liste);
void dugum_sil(int dugumNO, liste_t *liste);
void liste_yaz(FILE *file, int numarala, int sira, liste_t *liste);
int dugum_bul(kitap_t *dugum, int next, liste_t *liste);
kitap_t *BubbleSort(char *kriter, int sira, liste_t *liste);
void swap(kitap_t *prev, kitap_t *cur, kitap_t *next, int sira, liste_t *liste);

int main(int argc, char *argv[])
{
    liste_t liste;
   
    liste.son1 = NULL;
    liste.son2 = NULL;
   
    if( (argc < 4) || !arguman(argv[2]) || !arguman(argv[3]) )
    { /* Eksik veya geçersiz parametre */
        printf("Kullanim: odev3 dosya_adi kriter_1 kriter_2\n");
        return -1;
    }
   
    dosyadan_oku(argv[1], &liste);
    while(1)
    {
        switch(menu(argv[2], argv[3]))
        {
            case KITAP_EKLE:
                kitap_ekle(&liste);
                break;

            case KITAP_CIKAR:
                kitap_cikar(argv[2], &liste);
                break;

            case ODUNC_VER:
                odunc_ver(argv[2], &liste);
                break;

            case GERI_AL:
                geri_al(argv[2], &liste);
                break;

            case ARAMA1:
                arama(argv[2], &liste);
                break;

            case ARAMA2:
                arama(argv[3], &liste);
                break;
           
            case LISTELE1:
                listele(argv[2], 1, &liste);
                break;

            case LISTELE2:
                listele(argv[3], 2, &liste);
                break;

            case KAPAT:
                if(dosyaya_yaz(argv[1], &liste))
                    return 0;
                break;

            default:
                printf("Gecersiz secim yaptiniz!\n");
        } // switch sonu
    } // while sonu
    return 0;
}

/****************************************************************
 * fonksiyon: sonuna_ekle                                       *
 * Verilen kitabı listenin sonuna ekler                         *
 ****************************************************************/
void sonuna_ekle(kitap_t *kitap, liste_t *liste)
{
    if(liste->son1 == NULL) /* Liste boşsa */
    {
        kitap->next1 = kitap->next2 = kitap;
        liste->son1 = liste->son2 = kitap;
    }
    else
    {
        kitap->next1 = liste->son1->next1;
        liste->son1->next1 = kitap;
        liste->son1 = kitap;

        kitap->next2 = liste->son2->next2;
        liste->son2->next2 = kitap;
        liste->son2 = kitap;
    }
}

/****************************************************************
 * fonksiyon: bos_liste                                         *
 * Listenin boş olup olmadığı bilgisini döndürür                *
 ****************************************************************/
bool bos_liste(liste_t *liste)
{
    return (liste->son1 == NULL);
}

/*******************************************************************
 * fonksiyon: liste_yaz                                            *
 * Verilen listeyi, numaralı ya da numarasız verilen dosyaya yazar *
 *******************************************************************/
void liste_yaz(FILE *file, int numarala, int sira, liste_t *liste)
{
    kitap_t *tmp;
    int i = 1;
    char *ch;

    ch = (numarala) ? ", " : " |";

    if(liste->son1 == NULL)
    {
        if(numarala)
            fprintf(file, "Liste bos!");
        fprintf(file, "\n");
    }
    else
    {
        tmp = (sira == 1) ? liste->son1 : liste->son2;
        do
        {
            tmp = (sira == 1) ? tmp->next1 : tmp->next2;
            if(numarala)
                fprintf(file, "%d: ", i++);
            fprintf(file, "%s%s%s%s%s%s%s%s%s%s%s \n",
                tmp->ad, ch,
                tmp->yazar, ch,
                tmp->yayin_yili, ch,
                tmp->odunc_verilen, ch,
                tmp->odunc_verilme_tarihi, ch,
                tmp->raf_no);
        }while(tmp != ( (sira == 1) ? liste->son1 : liste->son2));
    }
}

/****************************************************************
 * fonksiyon: eleman_bul                                        *
 * Verilen sıra numarasındaki elemanı döndürür                  *
 ****************************************************************/
kitap_t * eleman_bul(int sira, int next, liste_t *liste)
{
    kitap_t *tmp;
    int i=0;
   
    if(liste->son1 == NULL)
        return NULL; // Liste boş
    tmp = (next == 1) ? liste->son1 : liste->son2;
    do
    {
        tmp = (next == 1) ? tmp->next1 : tmp->next2;
        i++;
    }while((tmp != ( (next == 1) ? liste->son1 : liste->son2))&&(i < sira) );
    if(i == sira)
        return tmp;
    else
        return NULL;  //Listede o kadar eleman yok
}

/****************************************************************
 * fonksiyon: dugum_bul                                         *
 * Verilen adresteki elemanın numarasını döndürür               *
 ****************************************************************/
int dugum_bul(kitap_t *dugum, int next, liste_t *liste)
{
    kitap_t *tmp;
    int i=0;
   
    if(liste->son1 == NULL)
        return 0; // Liste boş

    tmp = (next == 1) ? liste->son1 : liste->son2;
    do
    {
        tmp = (next == 1) ? tmp->next1 : tmp->next2;
        i++;
        if(tmp == dugum)
            return i;
    }while(tmp != ((next == 1) ? liste->son1 : liste->son2));
    return 0;  //Listede o kadar eleman yok
}

/****************************************************************
 * fonksiyon: dugum_sil                                         *
 * Belirtilen sıradaki düğümü siler, listeden çıkarır           *
 * Eleman iki listeden de çıkarılmalıdır                        *
 ****************************************************************/
void dugum_sil(int dugumNO, liste_t *liste)
{
    kitap_t *tmp1, *tmp2, *tmp3;
    int tmp_no_2;

    tmp1 = eleman_bul(dugumNO, 1, liste);
    tmp_no_2 = dugum_bul(tmp1, 2, liste);
    tmp2 = eleman_bul(dugumNO-1, 1, liste);
    tmp3 = eleman_bul(dugumNO+1, 1, liste);

    if(tmp1)
    {
        if(tmp2 && tmp3) /* ortada bir eleman */
            tmp2->next1 = tmp3;
        else if(tmp2)  /* Liste sonu */
        {
            tmp2->next1 = tmp1->next1;
            liste->son1 = tmp2;
        }
        else if (tmp3)  /* Liste başı */
        {
            liste->son1->next1 = tmp3;
        }
        else  /* Tek elemanlı */
            liste->son1 = NULL;

        tmp2 = eleman_bul(tmp_no_2 - 1, 2, liste);
        tmp3 = eleman_bul(tmp_no_2 + 1, 2, liste);

        if(tmp2 && tmp3) /* ortada bir eleman */
            tmp2->next2 = tmp3;
        else if(tmp2)  /* Liste sonu */
        {
            tmp2->next2 = tmp1->next2;
            liste->son2 = tmp2;
        }
        else if (tmp3)  /* Liste başı */
        {
            liste->son2->next2 = tmp3;
        }
        else  /* Tek elemanlı */
            liste->son2 = NULL;

        free(tmp1);
    }
    else
    {
        printf("dugum_sil: Olmayan bir kitap seçtiniz!\n");
        menuye_don();
    }
}

/*************************************************************************
 * Fonksiyon: dosyadan_oku                                               *
 * Belirtilen dosyadan kitap bilgilerini alıp, listeye kopyalar          *
 * dosya adı için bir karakter dizisi ve liste için bir işaretçi gerekir *
 *************************************************************************/
void dosyadan_oku(char *dosya_adi, liste_t *liste)
{
    FILE *file;
    char *temp, line[1024]={0};
    int offset=0;  /* Kitabın hangi özelliğinde olduğunu tutan indeks*/
    kitap_t *kitap_tmp;
   
    if((file = fopen(dosya_adi, "r")) == NULL)
    {
        printf("dosyadan_oku: Belirttiginiz dosya acilamadi.\n");
        printf("Kapatmak icin ENTER tusuna basin.\n");
        getchar();
        exit(-1); /* Hata ver, çık */
    }

    while(!feof(file))
    {
        if((kitap_tmp = (kitap_t *) calloc(1, sizeof(kitap_t))) == NULL)
        {
            printf("dosyadan_oku: Bellek yetersiz!\n");
            printf("Kapatmak icin ENTER tusuna basin.\n");
            getchar();
            exit(-1);
        }
        fgets(line, 1024, file);  // Dosyadan bir satır oku
        if(strlen(line) < 9)  // Çok kısa, hatalı olabilir; sonraki satıra geç
            continue;
        offset = 0;
        temp = strtok(line, "|\n"); // | veya \n karakterine gelene kadar oku
        while(temp != NULL)  //satır sonuna kadar
        {
            switch(offset)
            {
                case 0:
                    strncpy(kitap_tmp->ad, temp, strlen(temp)-1);
                    break;
                case 1:
                    strncpy(kitap_tmp->yazar, temp, strlen(temp)-1);
                    break;
                case 2:
                    strncpy(kitap_tmp->yayin_yili, temp, strlen(temp)-1);
                    break;
                case 3:
                    strncpy(kitap_tmp->odunc_verilen, temp, strlen(temp)-1);
                    break;
                case 4:
                    strncpy(kitap_tmp->odunc_verilme_tarihi, temp,
                            strlen(temp)-1);
                    break;
                case 5:
                    strncpy(kitap_tmp->raf_no, temp, strlen(temp)-1);
                    sonuna_ekle(kitap_tmp, liste);
            } /* switch sonu */
            temp = strtok(NULL, "|\n");  // aynı satırdan, bir sonraki bölümü al
            offset++;
        } /* while(temp != NULL) sonu */
    } /*while(!feof(file)) sonu */
    fclose(file);
}
/****************************************************************
 * fonksiyon: menu                                              *
 * Komut satırında belirtilen kriterlere göre bir menü gösterir *
 * kriterler için iki tane karakter dizisi alır                 *
 * Yapılan seçimi geri döndür                                   *
 ****************************************************************/
int menu(char *kriter1, char *kriter2)
{
    int i=0;
    char c[10];
   
    ekran_temizle();
   
    printf("\tMENU\n");
    printf("\t----\n\n");
    printf("1. Kitap Ekle\n");
    printf("2. Kitap Cikar\n");
    printf("3. Odunc Ver\n");
    printf("4. Geri Al\n");
    printf("5. %s ile ara\n", arguman(kriter1));
    printf("6. %s ile ara\n\n", arguman(kriter2));
    printf("7. %s ile listele\n", arguman(kriter1));
    printf("8. %s ile listele\n\n", arguman(kriter2));
    printf("0. Kapat\n\n");
   
    printf("Seciminizi girin: ");
    gets(c);
    if(strlen(c) > 1) /* Menüdekiler tek basamaklı */
        return -1;
    if(*c >= '0' && *c <= '9') /* Rakam değilse */
        return *c - '0';
    return -1;  /* Rakam girilmemiş */
}

/****************************************************************
 * fonksiyon: kitap_ekle                                        *
 * Kitap bilgilerini alır ve listeye ekler                      *
 ****************************************************************/
void kitap_ekle(liste_t *liste)
{
    kitap_t *kitap=NULL;
   
    if( (kitap = (kitap_t *) calloc(1, sizeof(kitap_t)) ) != NULL)
    {
        printf("\n");
        printf("Kitabin Adi: ");
        gets(kitap->ad);
       
        printf("Kitabin Yazari: ");
        gets(kitap->yazar);
       
        printf("Kitabin Yayin Yili: ");
        gets(kitap->yayin_yili);
       
        printf("Kitabin Raf Numarasi: ");
        gets(kitap->raf_no);
       
        sonuna_ekle(kitap, liste);  /* listenin sonuna kaydet */
    }
    else
    {
        printf("*** kitap_ekle: Bellek yetersiz!\n");
        menuye_don();
    }
}

/****************************************************************
 * fonksiyon: kitap_cikar                                       *
 * Seçilen kitabı listeden siler                                *
 ****************************************************************/
void kitap_cikar(char *kriter, liste_t *liste)
{
    int kitapNO = 0;

    if( bos_liste(liste) )
    {
        printf("\nkitap_cikar: Liste bos!\n");
        menuye_don();
    }
    else
    {
        ekran_temizle();
        printf("Kitap listesi:\n\n");
        BubbleSort(kriter, 1, liste);
        liste_yaz(stdout, TRUE, 1, liste);  /* ekrana numaralı listeyi yazdırır */

        printf("Cikarilacak kitabin numarasini girin: ");
        scanf("%d", &kitapNO);
        if(kitapNO > 0)
            dugum_sil(kitapNO, liste);
        menuye_don();
    }
}

/****************************************************************
 * fonksiyon: odunc_ver                                         *
 * Hangi kitabın kime ödünc verileceği bilgisini alır, kaydeder *
 ****************************************************************/
void odunc_ver(char *kriter, liste_t *liste)
{
    int kitapNO;
    char kime[256];
    kitap_t *tmp = NULL;
    time_t tm = time(NULL);
    struct tm *ptr = localtime(&tm);

    ekran_temizle();
    BubbleSort(kriter, 1, liste);
    liste_yaz(stdout, TRUE, 1, liste);
    printf("\nOdunc verilecek kitabı seçin: ");
    scanf("%d", &kitapNO);  // \n'i halletmek gerekli
    getchar();
    printf("Kime odunc verilecek: ");
    gets(kime);

    if((tmp = eleman_bul(kitapNO, 1, liste)) != NULL)
    {
        strcpy(tmp->odunc_verilen, kime);
        strftime(tmp->odunc_verilme_tarihi, 255, "%d.%m.%Y", ptr);
        printf("Odunc verildi.\n\n");
    }
    else
    {
        printf("\nodunc_ver: Eleman bulunamadi!\n");
        menuye_don();
    }
}

/****************************************************************
 * fonksiyon: geri_al                                           *
 * Seçilen kitabın odunc verilen ve verilme tarihi kısmını siler*
 ****************************************************************/
void geri_al(char *kriter, liste_t *liste)
{
    int kitapNO;
    kitap_t *tmp;

    ekran_temizle();
    BubbleSort(kriter, 1, liste);
    liste_yaz(stdout, TRUE, 1, liste);
    printf("Geri alinacak kitabi secin: ");
    scanf("%d", &kitapNO);
    getchar();

    if((tmp = eleman_bul(kitapNO, 1, liste)) != NULL)
    {
        strcpy(tmp->odunc_verilen, "\0\0");
        strcpy(tmp->odunc_verilme_tarihi, "\0\0");
        printf("Geri alindi.\n\n");
        menuye_don();
    }
    else
        printf("\ngeri_al: Eleman bulunamadi!\n");
}

/****************************************************************
 * fonksiyon: dosyaya_yaz                                       *
 * listenin son halini dosyaya kaydeder                         *
 ****************************************************************/
int dosyaya_yaz(char *dosya_adi, liste_t *liste)
{
    FILE *file;

    file = fopen(dosya_adi, "w");
    if(file)  /* dosya açıldıysa, listeyi yaz */
    {
        liste_yaz(file, FALSE, 1, liste);
        return 1;
    }

    printf("\ndosyaya_yaz: %s kaydetmek için açılamadı!\n", dosya_adi);
    return 0;
}

/****************************************************************
 * fonksiyon: ekran_temizle                                     *
 * Ekrana ardarda satırsonu karakteri girerek ekranı temizler   *
 ****************************************************************/
void ekran_temizle(void)
{
    int i;
   
    for(i = 0; i < 5; i++, printf("\n"));
}

/****************************************************************
 * fonksiyon: listele                                           *
 * Menüdeki listele fonksiyonu yapar, ekrana listeyi basar      *
 ****************************************************************/
void listele(char *kriter, int sira, liste_t *liste)
{
    ekran_temizle();
    BubbleSort(kriter, sira, liste);
    liste_yaz(stdout, TRUE, sira, liste);
    menuye_don();
}

/****************************************************************
 * fonksiyon: arguman                                           *
 * komut satırından verilen kriterleri menü için hazırlar       *
 ****************************************************************/
char *arguman(char *bilgi)
{
    char *sonuc = NULL;

    if(!strcmp(bilgi, "kadi"))
        sonuc = "Kitap adi";
       
    if(!strcmp(bilgi, "kyazar"))
        sonuc = "Yazar adi";
       
    if(!strcmp(bilgi, "yayinyil"))
        sonuc = "Yayin yili";
       
    if(!strcmp(bilgi, "oduncver"))
        sonuc = "Odunc verilen";
       
    if(!strcmp(bilgi, "odunctar"))
        sonuc = "Odunc verilme tarihi";
       
    if(!strcmp(bilgi, "rafno"))
        sonuc = "Raf numarasi";
   
    return sonuc;
}

/****************************************************************
 * fonksiyon: arama                                             *
 * Verilen kritere göre, büyük-küçük harf duyarsız bir arama    *
 *    yapılabilmesini sağlar                                    *
 ****************************************************************/
int arama(char *kriter, liste_t *liste)
{
    kitap_t *tmp;
    int i=1, ok=0, bitti=0;
    char arama_metini[256]={0};
   
    ekran_temizle();
    if(liste->son1 == NULL)
    { /* Boş listede arama yapmaya gerek yok */
        printf("Liste Bos!\n");
        menuye_don();
        return 0;
    }
   
    printf(">%s: ", arguman(kriter));
    gets(arama_metini);  /* aranılacak kelimeyi al */

    if(*arama_metini != '\0')  /* arama kelimesi girildiyse */
    {
        i=1;
        tmp = eleman_bul(i, 1, liste);
        while(tmp)
        {
            if(!strcmp(kriter, "kadi") && strstr(u2l(tmp->ad), u2l(arama_metini)))
                ok = 1;
            if(!strcmp(kriter, "kyazar") && strstr(u2l(tmp->yazar), u2l(arama_metini)))
                ok = 1;
            if(!strcmp(kriter, "yayinyil") && strstr(u2l(tmp->yayin_yili), u2l(arama_metini)))
                ok = 1;
            if(!strcmp(kriter, "oduncver") && strstr(u2l(tmp->odunc_verilen), u2l(arama_metini)))
                ok = 1;
            if(!strcmp(kriter, "odunctar") && strstr(u2l(tmp->odunc_verilme_tarihi), u2l(arama_metini)))
                ok = 1;
            if(!strcmp(kriter, "rafno") && strstr(u2l(tmp->raf_no), u2l(arama_metini)))
                ok = 1;

            if(ok)
            {
                printf("%d: %s, %s, %s, %s, %s, %s\n",
                    i,
                    tmp->ad,
                    tmp->yazar,
                    tmp->yayin_yili,
                    tmp->odunc_verilen,
                    tmp->odunc_verilme_tarihi,
                    tmp->raf_no);
                   
                ok = 0;
            }
            i++;
            tmp = eleman_bul(i, 1, liste);
        } // while(tmp) sonu
       
    } //if(*arama_metini != '\0') sonu
    else
        printf("Arama kriteri girmediniz!\n");
    menuye_don();
}

/*****************************************************************
 * fonksiyon: u2l                                                *
 * Büyük harfleri, küçük harfe dönüştürür ve yeni katarı döndürür*
 *****************************************************************/
char *u2l(const char *st)
{
    char *lowercase, *t;
   
    t = lowercase = (char *) calloc(strlen(st)+1, sizeof(char));
   
    strcpy(lowercase, st);
    while(*lowercase)  /* Katar sonuna kadar devam edilecek */
    {
        if( (*lowercase >= 'A') && (*lowercase <= 'Z') )
            *lowercase += 'a' - 'A';  /* Küçük harfe dönüştür */
        lowercase++;
    }
    return t; /* Yeni oluşturulan katarı geri döndür*/
}

/******************************************************************
 * fonksiyon: menuye_don                                          *
 * menü işlemleri bitince tekrar menüye dönmeden önceki yazıyı    *
 * hazırlar                                                       *
 ******************************************************************/
void menuye_don(void)
{
    printf("\nMenuye donmek icin ENTER tusuna basin.\n");
    getchar();
}

/*******************************************************************
 * fonksiyon: BubbleSort                                           *
 * Çift işaretçili çevrel listeyi belirtilen kritere göre sıralar  *
 * Algoritması: BubbleSort sırala algoritmasının bağlantılı liste  *
 *     uygulaması                                                  *
 * Sıralama karakter katarları ile olduğundan kıyas fonksiyonu     *
 *     olarak strcmp() kullanıldı. Büyük/küçük harf ayrımı olmaması*
 *     için diziler, küçük harf olarak gönderiliyor.               *
 ******************************************************************/
kitap_t *BubbleSort(char *kriter, int sira, liste_t *liste)
{
    kitap_t *prev, *cur, *next;
    int change, ok = 0;

    /* Dizi boşsa geri dönüyoruz */
    if (liste->son1 == NULL)
        return NULL;

    do
    {
        change = 0; /* değişiklik yapılmayan turda sıralama biter */

        /* işaretçileri ayarlıyoruz */
        prev = NULL;
        cur = ((sira == 1) ? liste->son1->next1 : liste->son2->next2);
        next = ((sira == 1) ? cur->next1 : cur->next2);

        while (next != ((sira == 1) ? liste->son1->next1 : liste->son2->next2) )
        {
            if(!strcmp(kriter, "kadi") && (strcmp( u2l(cur->ad), u2l(next->ad) ) > 0) )
                ok = 1;
            if(!strcmp(kriter, "kyazar") && (strcmp( u2l(cur->yazar), u2l(next->yazar) ) > 0) )
                ok = 1;
            if(!strcmp(kriter, "yayinyil") && (strcmp( u2l(cur->yayin_yili), u2l(next->yayin_yili) ) > 0) )
                ok = 1;
            if(!strcmp(kriter, "oduncver") && (strcmp( u2l(cur->odunc_verilen), u2l(next->odunc_verilen) ) > 0) )
                ok = 1;
            if(!strcmp(kriter, "odunctar") && (strcmp( u2l(cur->odunc_verilme_tarihi), u2l(next->odunc_verilme_tarihi) ) > 0) )
                ok = 1;
            if(!strcmp(kriter, "rafno") && (strcmp( u2l(cur->raf_no), u2l(next->raf_no) ) > 0) )
                ok = 1;

            if (ok)
            {
                ok = 0;
                swap(prev, cur, next, sira, liste);
                change = 1; /* Değişiklik yaptık */
                prev = next;
                next = (sira == 1) ? cur->next1 : cur->next2;
            } else {
                /* işaretçileri ilerlet */
                prev = cur;
                cur = next;
                next = (sira == 1) ? next->next1 : next->next2;
            }
        }
    }while (change);
   
    return (sira == 1) ? liste->son1 : liste->son2;
}

/******************************************************************
 * fonksiyon: swap                                                *
 * Listenin elemanlarını yer değiştirmeye yarar                   *
 ******************************************************************/
void swap(kitap_t *prev, kitap_t *cur, kitap_t *next, int sira, liste_t *liste)
{
    if(next == ( (sira == 1) ? liste->son1 : liste->son2) )
    { /* Liste sonunda */
        if(prev) /* 2 elemandan fazla */
        {
            ((sira == 1) ? prev->next1 : prev->next2) = next;
            ((sira == 1) ? cur->next1 : cur->next2) = ((sira == 1) ? next->next1 : next->next2);
            ((sira == 1) ? next->next1 : next->next2) = cur;
        }
            ((sira == 1) ? liste->son1 : liste->son2) = cur;
    }else if(cur == ((sira == 1) ? liste->son1->next1 : liste->son2->next2) )
    { /* Liste başında */
        ((sira == 1) ? cur->next1 : cur->next2) = ((sira == 1) ? next->next1 : next->next2);
        ((sira == 1) ? next->next1 : next->next2) = cur;
        ((sira == 1) ? liste->son1->next1 : liste->son2->next2) = next;
    }
    else{ /* Listede ortada */
        ((sira == 1) ? prev->next1 : prev->next2) = next;
        ((sira == 1) ? cur->next1 : cur->next2) = ((sira == 1) ? next->next1 : next->next2);
        ((sira == 1) ? next->next1 : next->next2) = cur;
    }
}


 
16 Aralik 2009 (Çarsamba) 20:25 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
aLsanCaK


Kayıt : 30 Kasim 2007
BuCaLi
Erkek Üye
 

Hocalar bunu yazabilecek kimse yokmu yaa biliyom kolay bisey, bu arada benim odevim felan degil yani endise etmeyin .. kuzene lazim hadi gozunuzu seveyim


www.palaq.com bilgi deposu 
16 Aralik 2009 (Çarsamba) 20:40 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
alp


Kayıt : 28 Ekim 2003
Ankara
Erkek Üye
 

Pascal won"t quite cut it, write in C. Don"t even mention COBOL, write in C. I"m sick of ones and zeroes, write in C. I hate the word PROCEDURE, write in C. 
16 Aralik 2009 (Çarsamba) 20:49 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
JPriest


Kayıt : 9 Mart 2007
İstanbul--Çanakkale
Erkek Üye
 

Balık vermek yerine balık tutmayı öğrenmesini sağlamak daha yararlı olur bence. Kodu verdin adam aldı hocaya verdi dersi geçti. Ee sonra? Benim gibi olur. Bir şey öğrenmeden geçer gider..


Sen hiç kaval çaldın mı? 
16 Aralik 2009 (Çarsamba) 20:49 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
aLsanCaK


Kayıt : 30 Kasim 2007
BuCaLi
Erkek Üye
 

cok tesekur ederim hocam, tek bi yer kalmis, listelerken fiyatlara gore listelemiyor :)

 

 

Edit : tmmdir hocam artik ihtiyacim yok cok tesekurler..


www.palaq.com bilgi deposu 
16 Aralik 2009 (Çarsamba) 23:09 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
alp


Kayıt : 28 Ekim 2003
Ankara
Erkek Üye
 

hoca koskoca adam, ben mi öğretecem kodu direk hocaya teslim etmekle, kodu inceleyip anlayıp öyle teslim etmek arasındaki farkı?

hem o capon atasözü değil mi? capon musun sen?


Pascal won"t quite cut it, write in C. Don"t even mention COBOL, write in C. I"m sick of ones and zeroes, write in C. I hate the word PROCEDURE, write in C. 

[1] [2]   [»] [»»]


Bu Bölümde yeni konu açmak için dıklayın Konuyu cevaplamak için tık...
Allah'a Havale Et Google Bookmark'a Ekle Yahoo'ya Ekle Stumbleupon'a Ekle Facebook'a Ekle Twitter'a Ekle   Google'da Ara : C de yazmak istedigim bi program ? Favorilerime Ekle Yukarı Çık
Konuda 12 Mesaj Var.
Konu 937 Sefer Gösterilmiş.
2001-2012 © Tahribat Group - Her Hakkı Saklıdır. - ● Gizlilik İlkeleri ● Kullanım Koşulları ● İletişim