Ön bilgi - WebSitem
Transkript
Ön bilgi - WebSitem
BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI 2. Hafta Ö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. static void Main(string[] args) { 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 𝑏𝑜𝑜𝑙𝑒𝑎𝑛 tipinde bir dizinin tanımlanmasına ve 𝑓𝑜𝑟𝑒𝑎𝑐ℎ döngüsü ile dizinin tüm elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz. static void Main(string[] args) { 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() { BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI 2. Hafta 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 𝑑𝑜𝑢𝑏𝑙𝑒 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) static void Main() 5. (15 pt) Sütun ve satır sayısı ve elemanları klavyeden girilmek üzere iki boyutlu 𝑑𝑜𝑢𝑏𝑙𝑒 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) static void Main() 6. (20 pt) Eleman sayısı klavyeden girilmek üzere, tek boyutlu 𝑏𝑜𝑜𝑙𝑒𝑎𝑛 tipinde bir dizinin elemanlarını “𝑡𝑟𝑢𝑒 − 𝑓𝑎𝑙𝑠𝑒 − 𝑡𝑟𝑢𝑒 − 𝑓𝑎𝑙𝑠𝑒 − 𝑡𝑟𝑢𝑒 … ” şeklinde atayan program kodunu yazınız. 7. (50 pt) Eleman sayısı ve elemanları klavyeden girilmek üzere tek boyutlu 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 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) static void Main() 𝐴 ve 𝐵, 𝑛 elemanlı iki vektör olmak üzere 𝑛 𝐴 ∙ 𝐵 = ∑ 𝐴𝑖 𝐵𝑖 = 𝐴1 𝐵1 + 𝐴2 𝐵2 + ⋯ + 𝐴𝑛 𝐵𝑛 𝑖=1 Ö𝑟𝑛𝑒𝑘: [13 − 5] ∙ [4 − 2 − 1] = 1.4 + 3. (−2) + (−5). (−1) = 3 BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI 2. Hafta 8. (30 pt) Sütun ve satır sayısı ve elemanları klavyeden girilmek üzere iki boyutlu 𝑑𝑜𝑢𝑏𝑙𝑒 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 𝑑𝑜𝑢𝑏𝑙𝑒 tipindeki Fahrenhayt değeri Santigrat Dereceye veya Santigrat Dereceyi Fahrenhayta dönüştüren program kodunu yazınız. Program sonucu hem 𝑑𝑜𝑢𝑏𝑙𝑒 hem de 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 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. º𝐹 = º𝐶 ∗ 1.8000 + 32.00 n 2 (15 pt) ∑i=0(i + i!) şeklindeki bir işlem için hesapla isimli bir fonksiyon yazıp 11. sonucu ekranda gösteren programı kodlayınız. Beklenen Fonksiyonlar : static int hesapla(int 12. n) (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. 14. 15. (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. (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. 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 BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI 2. Hafta 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 static void Main() { 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; BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI 2. Hafta } 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. static void Main() { 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) { BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI 2. Hafta if (month == 1) return day.ToString() if (month == 2) return day.ToString() if (month == 3) return day.ToString() if (month == 4) return day.ToString() if (month == 5) return day.ToString() if (month == 6) return day.ToString() if (month == 7) return day.ToString() if (month == 8) return day.ToString() if (month == 9) return day.ToString() if (month == 10) return day.ToString() if (month == 11) return day.ToString() if (month == 12) return day.ToString() + " Ocak " + year.ToString(); + " Şubat " + year.ToString(); + " Mart " + year.ToString(); + " Nisan " + year.ToString(); + " Mayıs " + year.ToString(); + " Haziran " + year.ToString(); + " Temmuz " + year.ToString(); + " Ağustos " + year.ToString(); + " Eylül " + year.ToString(); + " Ekim " + year.ToString(); + " Kasım " + year.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. static void Main(string[] args) { 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] + " "); BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI 2. Hafta } 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. static void Main(string[] args) { 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); } }