Verilen ödevde, input.txt isimli dosyadan ad, soyad ve adres gibi

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.