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 bool;enum ;typedef struct kitap_s kitap_t;typedef struct liste_s liste_t;/ program arabirimi fonksiyonları /void dosyadan_oku ;int dosyaya_yaz ;void ekran_temizle ;int menu(char kriter1, char kriter2);char arguman ;char u2l ;void menuye_don ;/ Menü fonksiyonları /void kitap_ekle ;void kitap_cikar ;void odunc_ver ;void geri_al ;int arama ;void listele ;/ Çevrel liste fonksiyonları /void sonuna_ekle ;void basina_ekle ;bool bos_liste ;void dugum_sil ;void liste_yaz ;int dugum_bul ;kitap_t BubbleSort ;void swap ;int main { liste_t liste; liste. son1 = NULL; liste. son2 = NULL; if( (argc < 4) || ! arguman(argv ) || ! arguman(argv ) ) dosyadan_oku(argv , &liste); while(1) { switch(menu(argv , argv )) // switch sonu } // while sonu return 0;}/ fonksiyon: sonuna_ekle Verilen kitabı listenin sonuna ekler /void sonuna_ekle { if(liste->son1 NULL) / Liste boşsa / else }/ fonksiyon: bos_liste Listenin boş olup olmadığı bilgisini dndürür /bool bos_liste / fonksiyon: liste_yaz Verilen listeyi, numaralı ya da numarasız verilen dosyaya yazar /void liste_yaz { kitap_t tmp; int i = 1; char ch; ch = ? ", " : " |"; if(liste->son1 NULL) else { tmp = (sira 1) ? liste->son1 : liste->son2; do while(tmp!= ( (sira 1) ? liste->son1 : liste->son2)); }}/ fonksiyon: eleman_bul Verilen sıra numarasındaki elemanı dndürür /kitap_t eleman_bul { kitap_t tmp; int i=0; if(liste->son1 NULL) return NULL; // Liste boş tmp = (next 1) ? liste->son1 : liste->son2; do while((tmp!= ( (next 1) ? liste->son1 : liste->son2))&& ); if return tmp; else return NULL; //Listede o kadar eleman yok}/ fonksiyon: dugum_bul Verilen adresteki elemanın numarasını dndürür /int dugum_bul { kitap_t tmp; int i=0; if(liste->son1 NULL) return 0; // Liste boş tmp = (next 1) ? liste->son1 : liste->son2; do 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 { 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 / else if (tmp3) / Liste başı / 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 / else if (tmp3) / Liste başı / else / Tek elemanlı / liste->son2 = NULL; free(tmp1); } else }/ 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 { FILE file; char temp, line = ; int offset=0; / Kitabın hangi zelliğinde olduğunu tutan indeks / kitap_t kitap_tmp; if((file = fopen NULL) while(! feof { if((kitap_tmp = calloc(1, sizeof NULL) fgets(line, 1024, file); // Dosyadan bir satır oku if(strlen < 9) // Çok kısa, hatalı olabilir; sonraki satıra geç continue; offset = 0; temp = strtok ; // | veya \n karakterine gelene kadar oku while //satır sonuna kadar { switch / switch sonu / temp = strtok ; // aynı satırdan, bir sonraki blümü al offset++; } / while sonu / } / while(! feof sonu / fclose ;}/ fonksiyon: menu Komut satırında belirtilen kriterlere gre bir menü gsterir kriterler için iki tane karakter dizisi alır Yapılan seçimi geri dndür /int menu(char kriter1, char kriter2) / fonksiyon: kitap_ekle Kitap bilgilerini alır ve listeye ekler /void kitap_ekle { kitap_t kitap=NULL; if( (kitap = calloc(1, sizeof ) != NULL) else }/ fonksiyon: kitap_cikar Seçilen kitabı listeden siler /void kitap_cikar { int kitapNO = 0; if( bos_liste ) else }/ fonksiyon: odunc_ver Hangi kitabın kime dünc verileceği bilgisini alır, kaydeder /void odunc_ver { int kitapNO; char kime ; kitap_t tmp = NULL; time_t tm = time ; struct tm ptr = localtime ; ekran_temizle ; BubbleSort(kriter, 1, liste); liste_yaz(stdout, TRUE, 1, liste); printf ; scanf ; // \n'i halletmek gerekli getchar ; printf ; gets ; if((tmp = eleman_bul(kitapNO, 1, liste)) != NULL) else }/ fonksiyon: geri_al Seçilen kitabın odunc verilen ve verilme tarihi kısmını siler /void geri_al { int kitapNO; kitap_t tmp; ekran_temizle ; BubbleSort(kriter, 1, liste); liste_yaz(stdout, TRUE, 1, liste); printf ; scanf ; getchar ; if((tmp = eleman_bul(kitapNO, 1, liste)) != NULL) else printf ;}/ fonksiyon: dosyaya_yaz listenin son halini dosyaya kaydeder /int dosyaya_yaz { FILE file; file = fopen ; if / dosya açıldıysa, listeyi yaz / printf ; return 0;}/ fonksiyon: ekran_temizle Ekrana ardarda satırsonu karakteri girerek ekranı temizler /void ekran_temizle / fonksiyon: listele Menüdeki listele fonksiyonu yapar, ekrana listeyi basar /void listele / fonksiyon: arguman komut satırından verilen kriterleri menü için hazırlar /char arguman / fonksiyon: arama Verilen kritere gre, büyük-küçük harf duyarsız bir arama yapılabilmesini sağlar /int arama { kitap_t tmp; int i=1, ok=0, bitti=0; char arama_metini = ; ekran_temizle ; if(liste->son1 NULL) printf(">%s: ", arguman ; gets ; / aranılacak kelimeyi al / if( arama_metini!= '\0') / arama kelimesi girildiyse / { i=1; tmp = eleman_bul(i, 1, liste); while { if(! strcmp && strstr(u2l , u2l ok = 1; if(! strcmp && strstr(u2l , u2l ok = 1; if(! strcmp && strstr(u2l , u2l ok = 1; if(! strcmp && strstr(u2l , u2l ok = 1; if(! strcmp && strstr(u2l , u2l ok = 1; if(! strcmp && strstr(u2l , u2l ok = 1; if i++; tmp = eleman_bul(i, 1, liste); } // while sonu } //if( arama_metini!= '\0') sonu else printf ; menuye_don ;}/ fonksiyon: u2l Büyük harfleri, küçük harfe dnüştürür ve yeni katarı dndürür /char u2l { char lowercase, t; t = lowercase = calloc(strlen +1, sizeof ; strcpy ; while / Katar sonuna kadar devam edilecek / return t; / Yeni oluşturulan katarı geri dndür /}/ fonksiyon: menuye_don menü işlemleri bitince tekrar menüye dnmeden nceki yazıyı hazırlar /void menuye_don / fonksiyon: BubbleSort Çift işaretçili çevrel listeyi belirtilen kritere gre 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 gnderiliyor. /kitap_t BubbleSort { kitap_t prev, cur, next; int change, ok = 0; / Dizi boşsa geri dnü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 && (strcmp( u2l , u2l ) > 0) ) ok = 1; if(! strcmp && (strcmp( u2l , u2l ) > 0) ) ok = 1; if(! strcmp && (strcmp( u2l , u2l ) > 0) ) ok = 1; if(! strcmp && (strcmp( u2l , u2l ) > 0) ) ok = 1; if(! strcmp && (strcmp( u2l , u2l ) > 0) ) ok = 1; if(! strcmp && (strcmp( u2l , u2l ) > 0) ) ok = 1; if else } }while ; return (sira 1) ? liste->son1 : liste->son2;}/ fonksiyon: swap Listenin elemanlarını yer değiştirmeye yarar /void swap { if(next ( (sira 1) ? liste->son1 : liste->son2) ) { / Liste sonunda / if / 2 elemandan fazla / ((sira 1) ? liste->son1 : liste->son2) = cur; }else if(cur ((sira 1) ? liste->son1->next1 : liste->son2->next2) ) else }

/ bu kodlari da duzeltebilireseniz yada oda olur / #include <stdio. h>#include <ctype. h>struct book_struct ;FILE fp;#define MAX 250#define FILENAME "book. dat"void main ;void menu ;void add_book ;void list_book ;void add_to_file ;/ /void main { struct book_struct ; char ans; do { menu ; scanf ; switch { case (1) : case (2) : } while (ans!=3);}/ /void disp_menu / /void add_book { struct book_struct item; char ans; do while (toupper 'Y');}/ /void print_na { struct book_struct item; int s, linectr=0; s = sizeof ; if((fp=fopen NULL) do { if(fread(&item, sizeof , 1, fp)!=s) { if(feof } if (linectr>20) pr_data ; linectr+=4; } while (! feof ; fclose ; printf ; pause_sc ; return 0;}/ /void err_msg / /void add_to_file { if((fp = fopen NULL) / Open file in append mode / fwrite(&item, sizeof , 1, fp); fclose ; return 0;}

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 Sen hiç kaval çaldın mı?

birazdan bir yerden bularak duzenlemeye calistigim kodlari paylasicam ama zaman kazanmak acisindan konuyu simdi aciyorum, ben duzenleyene kadar yazan cikabilir diye :) program soyle olacak; menu 1 kitap ekle 2 kitaplari listele 3 cikis c++ ile olmayacak ozellikle c ile olmasi gerekiyor.. simdiden tesekurler

cok tesekur ederim hocam, tek bi yer kalmis, listelerken fiyatlara gore listelemiyor :) Edit : tmmdir hocam artik ihtiyacim yok cok tesekurler..

Eğer devse bu veri tabanından ziyade struct ğrenilmesi için verilmiştir. Birazdan anlarız. Edit : evet yleymiş. File i/o, struct, pointer işlemleri. Sen hiç kaval çaldın mı?

hoca koskoca adam, ben mi ğretecem kodu direk hocaya teslim etmekle, kodu inceleyip anlayıp yle teslim etmek arasındaki farkı? hem o capon ataszü değil mi? capon musun sen?

www.alpworks.net/kitap. exe www.alpworks.net/kitap. c

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ı?

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 grür :) screw you guys! i"m goin" hoooome!

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