Verilen ödevde, input.txt isimli dosyadan ad, soyad ve adres gibi bazı bilgileri alan ve üzerinde bazı işlemler gerçekleştiren bir program yazmanız beklenmektedir. Kişilere ait her kaydın formatı aşağıdaki gibi olmalıdır: <adı><2. adı [opsiyonel]> <soy adı>; <adres, e-mail, telefon numarası><yeni satır karakteri> Adres bölümünün içerisinde ilçe ve il bilgisi ‘/’ karakteri kullanılarak ayrılacaktır. (Merkez/Yalova) örneğinde olduğu gibi. Bunun haricinde hiçbir yerde bu karakter kullanılmayacaktır. input.txt dosyasına ilişkin örnek bir içerik aşağıdaki gibidir: Cafer Avcı; Tigem yerleşkesi Merkez/Yalova [email protected] 77200 2261234567 Ali Veli; 5551234567 Istanbul M. Hatay S. 20-2 Karsiyaka/Izmir [email protected] Akif Erdemli; Gokalp C. Alibeykoy/Istanbul [email protected] 2124564567 Metin Gokhan; [email protected] Alibeykoy/Istanbul 2124564567 Aysenur Gulfidan; Metin Bey S. 10-8 Kadikoy/Istanbul 5321112223 [email protected] Programın yazılması aşağıdaki gibi olacaktır: IO Functions int readRecords(char filename[], char records[][30], int* numOfRecords, int rowCap, ,int colCap): dosyadaki kayıt sayısını alır, dosyayı açar, verilen 2 boyutlu matrisi dosyaya kaydeder. Matristeki satır sayısına ilişkin bir değer çıkış parametresi olarak geriye döner, öyle ki, “0” bir hata olmadığını, “-1” dosyanın bulunamadığını ve “-2” ise matrisin satır sayısının yetersiz olduğunu ifade eder. /*Herhangi bir sayida sutuna sahip string turundeki matrisin yazim islemini gerceklestirir*/ /*outFile: yazilacak olan dosya */ /*strArr: matrisin (0, 0) elemanini gosteren isaretci(pointer)*/ int writeStrArr(FILE* outFile, const char* strArr, int colC) { int i; char* row; /*starting address of the row to be printed*/ for(i=0; i<colC; ++i) { /*write a row to the stream*/ fprintf(outFile,”%s\n”, row); /*update the address of the row*/ row += colC; } } int writePtrArr(FILE* outFile, char* ptrArr[], int size):(Pointer) işaretçi dizisinin içeriğini dosyaya yazar. Temel İşlemler: char* getName(char records[][30], const char name[], const char sirName[]): Aranılan bir kişiye (ad ve soyad ile) ait kayıt bulunduysa bu kişinin kaydının hafızada tutulan başlangıç adresini geriye değer olarak döndürmektedir, bulunamadıysa null değer döner. int changeEmailAddress(char records[][30], const char name[], const char sirName[], const char newEmail[]) :kişiye ait verilen ad, soyad ve adres bilgileri kullanılarak yapılan arama neticesinde parametre olarak gelen kişinin e-mail ini eskisi ile değiştiren fonksiyondur. Geriye değer olarak bulunduysa 0, bulunamadıysa -1 döner. int getNamesInCity(char strArr[][30], const char city[], char names[][15]):verilen şehirde aranan isimli kaç kişi olduğunu bulan ve geriye değer olarak dönen fonksiyon. void getPtrArray(char* ptrArr[], char strArr[][30], int rowC): string matrisi olarak aldığı değerin her bir satırının başlangıç adres bilgisini (pointer) işaretçi dizisi olarak geriye dönen fonksiyon. int getAddressInTown(char strArr[][30], const char town[], char* addresses[]): kayıtlar içinden verilen şehir bilgisini içerisinde barındıran farklı kişilere ait adres bilgilerinin adreslerini bir (pointer) işaretçi dizisi olarak geriye döndüren fonksiyon. Sıralama İşlemleri int isGreaterByName(const char record1[], const char record2[]): eğer record1 record2 den sözlük bakımından daha önce ise geriye 1 değerini döndürür. int isGreaterByEmail(const char record1[], const char record2[]): eğer record1 in mail adresi record2 deki mail adresinden sözlük bakımından daha önce ise geriye 1 değerini döndürür. int isGreaterByCity(const char record1[], const char record2 eğer record1 in şehir bilgisi record2 deki şehir bilgisinden sözlük bakımından daha önce ise geriye 1 değerini döndürür. void sortRecords(char* records[], int size, isGreater(const char rec1[], const char rec2[])): kayıtları, verilen fonksiyondaki(isGreater(…..) iki kaydın sözlük bakımından önceliğine göre sıralar. void sortByEmail(char* records[]): tüm kayıtları sortRecords() a parametre olarak isGreaterByEmail() fonksiyonunu vererek mail bilgilerinin sözlük önceliklerine göre sıralar. Genel Olarak: 1.Temel kodlama kurallarına uyulmalıdır. 2.Kod bütünlüğü olmalıdır. 3.Ana fonksiyonda yazmış olduğunuz kodlar için açıklama satırları yazmanız istenmektedir. 4.Final sınavından önce bizzat kendiniz gelerek tarafıma yazdığınız programı sunmanız gerekmektedir. Aksi takdirde “0” verilecektir.
© Copyright 2024 Paperzz