Dosye
Məktəbin hər bir şagirdi haqqında məlumat aşağıdakı kimidir: soyad, ad, sinif, doğum tarixi.
Müxtəlif vəziyyətlərdə, şagirdləri fərqli qaydalarla sıralamaq lazım ola bilər. Standart sıralama qaydalarının tam siyahısı belədir:
surname
— yalnız soyadına görə;fullname
— soyadına görə, soyadlar eyni olduqda isə adına görə;birthyear
— doğum ilinə görə, ilin içindəki tarixi nəzərə almadan, kiçik tarixlərdən (böyük şagirdlər) böyük tarixlərə (kiçik şagirdlər) doğru;birthdate
— doğum tarixinə görə, ili də daxil olmaqla, kiçik tarixlərdən (böyük şagirdlər) böyük tarixlərə (kiçik şagirdlər) doğru;birthday
— doğum gününə görə, yəni müxtəlif illərin eyni gün və ayını bərabər hesab edərək, 01.01-dən 31.12-yə qədər (təqvim mənasında,gg.aa
formatında);grade
— sinifə görə, təhsil ilinin nömrəsi kimi, 1-dən 11-ə qədər, hərfi nəzərə almadan;class
— əvvəlcə təhsil ilinin nömrəsi kimi sinifə görə, eyni olduqda isə sinif hərfinə görəA
-danZ
-yə qədər.
Bundan əlavə, bəzən bir neçə qaydanı tətbiq etmək lazım olur: əvvəlcə biri, birincidə bərabərlik olduqda isə ikinci və s. Məsələn, "birthyear grade surname
" deməkdir ki, əvvəlcə bütün şagirdləri, məsələn, 1998-ci il təvəllüdlü, sonra 1999-cu il təvəllüdlü, sonra 2000-ci il təvəllüdlü və s. göstərmək lazımdır, eyni doğum ilinə malik şagirdlər arasında siniflərə görə (təhsil illəri kimi, hərfi nəzərə almadan) sıralama aparılmalı, eyni doğum ilinə və hərfi nəzərə almadan sinifə malik olanlar isə soyadlarına görə əlifba sırasına uyğun yerləşdirilməlidir.
Giriş verilənləri
Birinci sətirdə lazım olan sıralama qaydası yazılıb, bir və ya bir neçə söz kimi surname
, fullname
, birthyear
, birthdate
, birthday
, grade
, class
. Ən azı bir söz mütləq mövcuddur; əgər bir neçə söz varsa, onlar tək boşluqla ayrılır; eyni söz bir dəfədən çox təkrarlana bilməz.
İkinci sətirdə şagirdlərin sayı () yazılıb.
Daha sonra qrupdan ibarət hər biri 4 sətir olan məlumatlar gəlir: (1) soyad — böyük latın hərfi ilə başlayır, sonra latın hərfləri, tire, apostrof ardıcıllığı; (2) ad — böyük latın hərfi ilə başlayır, sonra latın hərfləri, tire, apostrof və boşluqlar ardıcıllığı; (3) doğum tarixi (gg.aa.yy
, yəni həm gün, həm ay, həm də il həmişə iki rəqəmlə verilir); (4) sinif — 1-dən 11-ə qədər olan rəqəm və bir böyük latın hərfi, aralarında boşluq olmadan.
Bütün doğum tarixləri düzgündür (məsələn, 30.02 yoxdur) və 1990-dan 2030-a qədər olan illərə aiddir. Məsələn, , çünki əslində bu 1997 və 2002-dir. Əksər hallarda, yuxarı sinif şagirdlərinin doğum tarixləri aşağı sinif şagirdlərindən daha erkəndir, lakin istisnalar mümkündür.
Əksəriyyət (ən azı 99,9%) soyad və adların uzunluğu 20 simvoldan çox deyil, lakin qalan 0,1% üçün yalnız bu təmin edilir ki, onların ümumi uzunluğu bir milyon simvoldan çox deyil. Soyadlar və adlar mütləq hərf və ya apostrofla bitir (lakin tire və ya boşluqla deyil).
Soyadları soyadlarla və adları adlarla müqayisə edərkən proqramlaşdırma dilləri üçün standart olan böyük-kiçik hərf həssas leksikoqrafik müqayisə istifadə olunmalıdır (tire, boşluq və s. olsa belə).
Çıxış verilənləri
sətir çıxarın, hər birində bir şagird haqqında məlumatlar belə formatda yazılıb: sinif, vergül, boşluq, soyad, vergül, boşluq, ad, vergül, boşluq, doğum tarixi.
Sinif, soyad, ad və doğum tarixi giriş məlumatlarında olduğu kimi bayt-bayt eyni olmalıdır.
Sətirlər birinci sətirdə təsvir olunan sıralama qaydasına uyğun olaraq sıralanmalıdır.
Göstərilən qaydaların tətbiqi nəticəsində müxtəlif düzgün cavablar mümkün olduqda, hər hansı bir düzgün cavabı çıxarın. Məsələn, artıq qeyd olunan "birthyear grade surname
" qaydasında, eyni sinifdə (təhsil ili) eyni soyadlı eyni doğum ilinə malik olanlar varsa, onları istənilən qaydada çıxara bilərsiniz, lakin hər birini yalnız bir dəfə çıxarmalısınız.
Nümunələr
birthyear grade surname 8 Gonsales Anna Maria 5A 01.05.03 Ivanov Kyrylo 11A 12.01.97 Ivanov Ivan 3D 20.01.05 Ivanov Andrii 11B 23.12.97 Petrenko Nataliia 11B 23.08.97 Andrijchenko Kateryna 11B 07.02.98 Shevchenko Denys 10A 07.05.98 Smirnov-Kovalenko Yehor 9A 13.11.98
11A, Ivanov, Kyrylo, 12.01.97 11B, Ivanov, Andrii, 23.12.97 11B, Petrenko, Nataliia, 23.08.97 9A, Smirnov-Kovalenko, Yehor, 13.11.98 10A, Shevchenko, Denys, 07.05.98 11B, Andrijchenko, Kateryna, 07.02.98 5A, Gonsales, Anna Maria, 01.05.03 3D, Ivanov, Ivan, 20.01.05
Qeyd
Ivanov Andrii
vəIvanov Kyrylo
yerləri dəyişdirilmiş cavab da doğrudur. Bu giriş məlumatları üçün bu iki cavabdan başqa düzgün cavab yoxdur.C# dili, əksər proqramlaşdırma dillərindən fərqli olaraq, standart böyük-kiçik hərf həssas leksikoqrafik müqayisə haqqında bir qədər fərqli təsəvvürə malikdir, buna görə də açıq-aydın
p1.surName.CompareTo(p2.surName)
fraqmenti əvəzinəString.Compare(p1.surName, p2.surName, StringComparison.Ordinal)
yazılmalıdır və bu vacib olan digər hallarda da eyni şəkildə.