Ön bilgi: Özyineli fonksiyon tanımlanabilmeli. Dizilerin fonksiyon parametresi veya geri dönüş değeri olarak kullanımı bilinmeli. 1. Klavyeden girilen sayı n olmak üzere [1..n] aralığındaki sayıların toplamı iki farklı fonksiyon ile hesaplanmıştır. İnceleyiniz. static void Main() Console.Write("Type a positif number: "); int value = Convert.ToInt32(Console.ReadLine()); int sumregular = SumRegular(value); int sumrecursive = SumRecursive(value); static int SumRecursive(int val) if (val == 0) return 0; return val + SumRecursive(val - 1); static int SumRegular(int val) int sum = 0; for (int i = 1; i <= val; i++) sum += i; return sum; 2. Aşağıda dizilerin fonksiyona parametre olarak gönderilmesi ve fonksiyonların geri dönüş değeri olarak atanmasına yönelik bir örnek bulunmaktadır. İnceleyiniz. static void Main() int[,] myarray = GetArrayItems(2, 3); PrintArrayItems(myArray); static int[,] GetArrayItems(int row, int column) int[,] myarray = new int[row, column]; for (int i = 0; i < row; i++) for (int j = 0; j < column; j++) myarray[i, j] = Convert.ToInt32(Console.ReadLine()); return myarray;
static void PrintArrayItems(int[,] arr) int row = arr.getlength(0); int column = arr.getlength(1); for (int i = 0; i < row; i++) for (int j = 0; j < column; j++) Console.WriteLine(i.ToString() + ":" + j.tostring() + " = " + arr[i, j].tostring()); 3. Klavyeden girilen string tipinde bir değeri klavyeden girilen bir karaktere göre ayrıştıran program kodunu yazınız. Split ismindeki hazır fonksiyonu kullanmayınız. Beklenen Fonksiyonlar ve Main Fonksiyon static string[] Split(string text, char splitter) static void PrintArrayItems(string[] arr) static void Main(string[] args) Console.Write("Type a text: "); string tex = Console.ReadLine(); Console.Write("\nType a character as splitter: "); char splitter = Convert.ToChar(Console.ReadLine()); string[] words = Split(tex, splitter); PrintArrayItems(words); Beklenen ekran çıktısı (boşluk karakterine göre ayrıştırılmış metin) 4. Fibonacci serisini özyineli fonksiyonla uygulayınız. Oluşan seriyi integer bir diziye atıp ekrana yazdırınız. F n = F n 1 + F n 2 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,
5. Klavyeden girilen x ve y değerleri için aşağıdaki f(x,y) fonksiyonu sonucunu veren program kodunu fonksiyon overload işlemi ile yazınız. Fonksiyonlardan dönen değerler ve parametre türlerine aşağıda yer verilmiştir. (integer)(x + y ) Eğer x ve y integer değişken ise f(x, y, z) = (double) x y Eğer x integer ve y double değişken ise (integer)(x/y) Eğer x ve y double değişken ise Overload: Aynı imzaya sahip ancak aldıkları parametrelerin türleri ve/veya geri döndürdüğü değerin tipi farklılık gösteren fonksiyonlardır. Aşağıdaki kod bloğunda f fonksiyonu üç kere overload edilmiştir. static int f(int x, int y) static double f(double x, int y) static double f(double x, double y) 6. Koordinat düzleminde A noktası A(x, y) olarak ifade edilmektedir. Kullanıcı tarafından girilen n adet noktanın orijine olan uzaklıklarını hesaplayıp orijine en yakın olan noktadan en uzak olana sıralama yapıp, noktaları bu sıra ile ekrana yazdıran program kodunu C# programlama dili ile yazınız. K ve L iki nokta olmak üzere bu iki nokta arasındaki uzaklık formülü aşağıdadır. 2 KL = (x k x l ) 2 + (y k y l ) 2 7. Klavyeden girilen bir tamsayının karesini hesaplayan, aynı imzaya sahip fakat parametre tipi sırasıyla integer, double ve string olan 3 farklı fonksiyonu yazarak sonuçları ekranda gösteriniz. 8. Klavyeden girilen bir sayı için 1'den o sayıya kadarki sayıların üstlerini alarak toplamlarını veren konsol uygulamasını özyineli bir şekilde yazınız. 9. Taban alanı ve yükseklik bilgisi klavyeden girilen bir silindirin hacmini, aynı imzaya sahip ancak parametre tipi bir fonksiyon için integer diğer fonksiyon için double olan fonksiyon ile bulunuz. 10. Programın istenen Fibonacci sayısını ekrana yazdırması beklenmektedir. Programın çalışma adımları Kullanıcıya fibonacci serisinde kaçıncı indexteki değeri öğrenmek istediği sorulacaktır. "Index giriniz..." -Alınan indexteki değer ekrana yazdırılacaktır.
"X numaralı indexteki değer Y dir" Kullanılacak Fonksiyonlar: - static void Main(string[] args) - static int Fibb(int value) Program Kuralları: - Belirtilen fonksiyonlardan başka fonksiyon kullanılmamalıdır. - Belirtilen fonksiyonlardan Fibb fonksiyonu özyinelemeli olacaktır. - Fibb fonksiyonu Main içerisinden bir kere çağırılacak ve sorunu çözecektir. Konsoldan "Quit" değeri girilene kadar program çalışmaya devam edecektir. 11. Klavyeden girilen bir sayı için 1'den o sayıya kadarki sayıların üstlerini alarak toplamlarını veren konsol uyulamasını özyineli bir şekilde yazınız. 12. Programın aşağıda belirtilen kurallar çerçevesinde -source- olarak tanımlanan dizideki değerleri, -helper- dizisinin yardımıyla, -destination- olarak tanımlanan diziye taşıması beklenmektedir. Programın Çalışma Adımları a. Kullanıcıdan dizi boyutu istenecektir. Mesaj Şablonu: "Lütfen Dizi boyutu giriniz..." b. Kullanıcıdan gelen cevaba göre -source-, -helper- ve -destination- dizileri oluşturulacaktır. -source- dizisi gösterildiği gibi yüksek her bellek bölgesine, o bölgenin indexi gelecek şekilde doldurulacaktır. Oluşturulan diziler aşağıda verilen şablona göre ekrana yazıdırlacaktır. [0] [-] [-] [2] [-] [-] [3] [-] [-] [4] [-] [-] c. Diziler oluşturulduktan sonra verilen komutla dizi taşıma işlemi gerçekleştirilecektir. Taşımaya dair kurallar aşağıda belirtilmiştir. Komut Şablonu: "Go!" Taşıma Kuralları: - Tek seferde bir değer taşınabilir. - Taşımalar en üstteki değerden başlar, üstü boş olmayan değer taşınamaz. - Altı boş olan indexe değer taşınamaz. Değer en alttaki indexe taşınır. - Taşıma sırasında büyük değer küçük değerin üstüne gelemez. Fonksiyonlar: - static void Main(string[] args) - static void Move(int value, int [] source, int [] destination, int [] helper) Program Kuralları: - Belirtilen fonksiyonlardan başka fonksiyon kullanılmamalıdır.
- Belirtilen fonksiyonlardan Move fonksiyonu özyinelemeli olacaktır. - Move fonksiyonu Main içerisinden bir kere çağırılacak ve sorunu çözecektir. - -source-, -helper- ve -destination- dizilerinin integer (int) tipinde olması gerekmektedir. - Programın N boyutlu bir dizide sonucu 2^N-1 adımda bulması beklenmektedir. Konsol Mesajları: - Yapılan her taşıma belirtilen parametreleri içerecek şekilde, belirtilen şablona uygun olacak şekilde konsoldan gösterilmelidir. Parametreler: -değer- D -hedef dizi- HD -kaynak dizi- KD -değerin hedef dizideki indexi- HDI -değerin kaynak dizideki indexi- KDI Mesaj Şablonu: D değeri KD (KDI) dizisinden HD (HDI) dizisine taşınmıştır. Örnek: Durum 1: [2] [0] [-] [4] [3] [-] Durum 2: [2] [-] [-] [4] [3] [0] Mesaj: "0 değeri Helper (3) dizisinden Destination (4) dizisine taşınmıştır." d. Dizi taşıma işlemi tamamlandıktan sonra dizilerin son hali verilen şablona göre konsola yazdırılmalıdır. [-] [-] [0] [-] [-] [1] [-] [-] [2] [-] [-] [3] [-] [-] [4] d. Dizi taşıma işlemi tamamlandıktan işlemin kaç adımda tamamlandığı ekrana yazılmalıdır. "Taşıma işlemi X adımda tanımlanmıştır."