Ö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);
}
}

Benzer belgeler