Ön bilgi: Dizi tanımlayabilmeli. foreach deyimi bilinmeli. Rastgele sayılar (Random) bilinmeli. 1. Aşağıda tamsayı tipinde iki boyutlu bir dizinin nasıl tanımlandığı, bir fonksiyona parametre olarak nasıl gönderildiği ve kullanıldığına dair bir örnek sunulmuştur. İnceleyiniz. soru_1(); static void soru_1() int[,] myarray = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ; // 1 2 3 4 // 5 6 7 8 // 9 10 11 12 PrintArrayItems(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()); 2. Aşağıda boolean tipinde bir dizinin tanımlanmasına ve foreach döngüsü ile dizinin tüm elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz. bool [] barray = new bool[10]; barray[0] = true; foreach (bool item in barray) Console.Write(item + " "); 3. Aşağıdaki 0 ile 10 aralığında 20 adet rastgele sayı üretimini sağlayan fonksiyonu inceleyiniz. static void RandomSayiUret()
Random rnd = new Random(); for (int i = 0; i < 20; i++) Console.Write(Convert.ToString(rnd.Next(10))+ " "); 4. (15 pt) Sütun ve satır sayısı ve elemanları klavyeden girilmek üzere iki boyutlu double tipindeki iki dizinin toplamını ekrana yazdıran program kodunu C# programlama dizi ile yazınız. Beklenen Fonksiyonlar: static double[,] DiziOku(int satir, int sutun) static void DiziTopla(double[,] dizi1, double[,] dizi2) 5. (15 pt) Sütun ve satır sayısı ve elemanları klavyeden girilmek üzere iki boyutlu double tipindeki iki dizinin çıkarma sonucunu ekrana yazdıran program kodunu C# programlama dizi ile yazınız. Beklenen Fonksiyonlar: static double[,] DiziOku(int satir, int sutun) static void DiziTopla(double[,] dizi1, double[,] dizi2) 6. (20 pt) Eleman sayısı klavyeden girilmek üzere, tek boyutlu boolean tipinde bir dizinin elemanlarını true false true false true şeklinde atayan program kodunu yazınız. 7. (50 pt) Eleman sayısı ve elemanları klavyeden girilmek üzere tek boyutlu integer tipindeki iki dizinin dot product ( ) sonucunu ekrana yazdıran program kodunu C# programlama dizi ile yazınız. Beklenen Fonksiyonlar: static double[] DiziOku(int boyut) static double DotProduct(double[] dizi1, double[] dizi2) A ve B, n elemanlı iki vektör olmak üzere n A B = A i B i = A 1 B 1 + A 2 B 2 + + A n B n i=1 Örnek: [13 5] [4 2 1] = 1.4 + 3. ( 2) + ( 5). ( 1) = 3
8. (30 pt) Sütun ve satır sayısı ve elemanları klavyeden girilmek üzere iki boyutlu double tipindeki bir dizinin elemanları toplamını bulan ve klavyeden girilen bir eşik değerden büyük ve küçük olan elemanlarını ayrı ayrı ekrana yazdıran programı C# programlama dili ile yazınız. 9. (40 pt) [-100, 100] aralığında kullanıcının istediği adette rastgele sayı üreten ve bu sayıların pozitif, negatif ve sıfır olanlarını ayrı ayrı üç dizide saklayıp bu dizilerin elamanlarını ekrana yazdıran programı C# programlama dili ile yazınız. 10. (30 pt) Kullanıcının seçimine göre double tipindeki Fahrenhayt değeri Santigrat Dereceye veya Santigrat Dereceyi Fahrenhayta dönüştüren program kodunu yazınız. Program sonucu hem double hem de integer olarak ekrana yazdırmalıdır. (FC: Fahrenhayt tan Santigrat a, CF: Santigrat tan Fahrenhayt a ve Q: Çıkış) Kullanıcıdan alınan girdi Q olana kadar program dönüşüm yapmaya devam etmelidir. ºF = ºC 1.8000 + 32.00 n 11. (15 pt) (i 2 i=0 + i!) şeklindeki bir işlem için hesapla isimli bir fonksiyon yazıp sonucu ekranda gösteren programı kodlayınız. Beklenen Fonksiyonlar : static int hesapla(int n) 12. (20 pt) Önceden tanımlı bir dizi içerisinde kullanıcı tarafından girilen bir sayının var olup olmadığını bulan programı yazınız. Program dizi ile bulunması istenen sayıyı bir metoda gönderip geriye sayının hangi pozisyonda bulunduğunu döndürmelidir. Beklenen Fonksyonlar: static int sayıbul(int[] dizi, int hedefsayi) 13. (30 pt) Ekrandan alınan sayının 1 ile 1000 arasında tam bölündüğü kaç tane sayı olduğunu metot üzerinden döndüren programı yazın. 14. (25 pt) Dizi elemanlarının ardışık olup olmadığını (10,9,8,7 ve 1,2,3,4 gibi) gösteren programı metod kullanarak yazınız. 15. toplama(add), çıkarma(sub), bölme(div) ve çarpma(mul) işlemlerini yapacak ve sonuçlarını belleğe kaydedecek basit bir hesap makinası tasarlanacaktır. Program ilk çalıştığında sonuçların kaydedileceği dizinin boyutunu alacaktır. Bundan sonra sırasıyla
işlem tipi, ilk parametre ve ikinci parametre girilecektir. İşlem tipine "exit" girilmediği sürece işlem tipinden itibaren olan döngü devam edecektir. Sonuçlar ilk başta boyutu verilen diziye kaydedilecektir. "exit" komutu geldikten sonra dizideki tüm sonuçlar ekrana altalta yazılacaktır. Her işlem tipinin ayrı ayrı fonksiyonlar şeklinde tanımlanması beklenmektedir. Girişler : dizi boyutu, işlem türü, ilk operand, ikinci operand İstenen Fonksiyonlar : addition, substraction, division, multiplication int size; int counter = 0; double[] results; size = Int32.Parse(Console.ReadLine()); results = new double[size]; while (true) String op = Console.ReadLine(); if (op == "exit") break; else if (op == "add") results[counter] = addition(double.parse(console.readline()), Double.Parse(Console.ReadLine())); else if (op == "sub") results[counter] = substraction(double.parse(console.readline()), Double.Parse(Console.ReadLine())); else if (op == "div") results[counter] = division(double.parse(console.readline()), Double.Parse(Console.ReadLine())); else if (op == "mul") results[counter] = multiplication(double.parse(console.readline()), Double.Parse(Console.ReadLine())); counter++; for (int k = 0; k < counter; k++) Console.WriteLine(results[k]); Console.ReadKey(); static double addition(double first_operant, double second_operant) return first_operant + second_operant; static double substraction(double first_operant, double second_operant) return first_operant - second_operant;
static double division(double first_operant, double second_operant) return first_operant / second_operant; static double multiplication(double first_operant, double second_operant) return first_operant * second_operant; 16. Program başlangıcında bugünün tarihini soracaktır. Gün ay yıl şeklinde sayısal giriler alındıktan sonra, 1 Ocak 1900 tarihinden itibaren bugüne kadar tüm günlerin uzun isimlerini (11 Aralık 2014) ilk index gün, ikinci index ay ve üçüncü index yıl olacak şekilde içinde saklayan 3 boyutlu string dizisini oluşturacaktır. Ardından gün, ayı ve yıl girilerek uzun isim sorgulanabilecektir. Bu sorgulama dizi üzerinden okuma şeklinde yapılacaktır. Belirtilen aralık dışında bir tarih girildiğinde bir hata mesajı gösterilecektir. String[,,] names; int current_day = Int32.Parse(Console.ReadLine()); int current_month = Int32.Parse(Console.ReadLine()); int current_year = Int32.Parse(Console.ReadLine()); names = new String[31, 12, current_year - 1990]; for (int k = 1; k < 32; k++) for (int l = 1; l < 13; l++) for (int m = 1990; m <= current_year; m++) names[k - 1, l - 1, m - 1990] = create_name(k, l, m); while (true) int requested_day = Int32.Parse(Console.ReadLine()); int requested_month = Int32.Parse(Console.ReadLine()); int requested_year = Int32.Parse(Console.ReadLine()); if (requested_year < 1990 requested_year > current_year (requested_year == current_year && requested_month > current_month) (requested_year == current_year && requested_month == current_month requested_day > current_day)) Console.WriteLine("Error!"); else Console.WriteLine(names[requested_day, requested_month, requested_year]); static String create_name(int day, int month, int year)
if (month == 1) return day.tostring() + " Ocak " + year.tostring(); if (month == 2) return day.tostring() + " Şubat " + year.tostring(); if (month == 3) return day.tostring() + " Mart " + year.tostring(); if (month == 4) return day.tostring() + " Nisan " + year.tostring(); if (month == 5) return day.tostring() + " Mayıs " + year.tostring(); if (month == 6) return day.tostring() + " Haziran " + year.tostring(); if (month == 7) return day.tostring() + " Temmuz " + year.tostring(); if (month == 8) return day.tostring() + " Ağustos " + year.tostring(); if (month == 9) return day.tostring() + " Eylül " + year.tostring(); if (month == 10) return day.tostring() + " Ekim " + year.tostring(); if (month == 11) return day.tostring() + " Kasım " + year.tostring(); if (month == 12) return day.tostring() + " Aralık " + year.tostring(); return ""; 17. Değerleri önceden belirlenmiş ya da kullanıcı tarafından girilen 10 elemanlı bir sayı dizisinin küçükten büyüğe doğru sıralayıp sıralı halini ekrana yazdıran programı kodlayınız. int[] dizi = 800, 11, 50, 771, 649, 770, 240, 9, 123, -3 ; int diziuzunluk = dizi.length; int temp = dizi[0]; for (int i = 0; i < diziuzunluk; i++) for (int j = i + 1; j < diziuzunluk; j++) if (dizi[i] > dizi[j]) temp = dizi[i]; dizi[i] = dizi[j]; dizi[j] = temp; for (int i = 0; i < dizi.length; i++) Console.Write(dizi[i] + " ");
18. Ekrandan alınan cümleyi şifreleyerek tekrar ekrana yazdıran metodu kodlayınız. Şifreleme işleminde cümle tersten yazdırılacak ve sesli harflerin yerine tek sayılar yerleştirilecektir. string cumle; Console.Write("Cümleyi Giriniz : "); cumle = Console.ReadLine(); sifrele(cumle); Console.WriteLine("Girilen Cümele : 0", cumle); static void sifrele(string dizi) char harf; Console.Write("Şifreli Hali : "); for (int i = dizi.length - 1; i >= 0; i--) harf = dizi[i]; if (harf == 'a') harf = '1'; if (harf == 'e') harf = '3'; if (harf == 'ı' harf == 'i') harf = '5'; if (harf == 'o' harf == 'ö') harf = '7'; if (harf == 'u' harf == 'ü') harf = '9'; Console.Write("0", harf);