Örnek problemler ve çözümleri /*Klavyeden girilen n ve m aralığındaki (n ve m dahil) 2, 3 ve 5 sayılarına bölünebilen sayıların toplamlarını ve ortalamalarını hesaplayan bir C# programını yazınız. Not-1: while döngüsü kullanınız. Not-2: ortalamanın küsuratlı olabileceğini göz önünde bulundurarak ortalama değişkenini float veya double olarak tanımlayınız. * */ int n, m, top = 0, adet = 0; double ort; Console.Write("m değerini giriniz:"); // n sayısının m'den küçük eşit olduğunu garantiye al if (n > m) int t = m; m = n; n = t; Console.WriteLine("[0,1] aralığında 2, 3 ve 5 sayılarına bölebilen sayıların;", n, m); while (n <= m) if (n % 2 == 0 && n % 3 == 0 && n % 5 == 0) // veya şöyle olabilirdi: if(n % 30 == 0 ) top += n; adet++; n++; ort = (double)top / adet; Console.WriteLine(" Toplamı : " + top); Console.WriteLine(" Ortalaması : " + ort); 1 BMYO- Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2013-2014 Bahar Dönemi
/*Kendisi hariç pozitif tam bölenlerinin toplamı kendisine eşit olan sayılara mükemmel sayılar denir. * Örneğin 6 ve 28 sayısı mükemmel sayılardır. 6'nın bölenleri: 1, 2, 3 1+2+3 = 6 28'in bölenleri: 1, 2, 4, 7, 14 1+2+4+7+14 = 28 Buna göre girilen [n,m] aralığındaki mükemmel olan sayıları bulunuz.*/ int n, m, top = 0; Console.Write("m değerini giriniz:"); // n sayısının m'den küçük eşit olduğunu garantiye al if (n > m) int t = m; m = n; n = t; Console.WriteLine("[0,1] aralığında ki mükemmel sayılar:", n, m); while (n <= m) for (int i = 1; i < n; i++) if (n % i == 0) top += i; if (top == n) Console.Write(n + " "); n++; top = 0; 2 BMYO- Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2013-2014 Bahar Dönemi
/* 0 dan farklı basamaklarının toplamı ve çarpımı bir birine eşit olan sayılara yuvarlak sayı denir. * Eğer basamakları toplamı basamakları çarpımının yarısına eşit ise buna yarı yuvarlak sayı denir. * Örneğin 321 sayısının rakamları çarpımı 6, rakamları toplamı 6 olduğu için yuvarlak bir sayıdır. * 813 sayısının rakamları toplamı 12, rakamları çarpımı 24 olduğu için yarı yuvarlak bir sayıdır. * Buna göre girilen [n,m] aralığındaki yuvarlak ve yarı yuvarlak olan sayıları bulunuz. */ int n, m, top = 0, carp = 1; Console.Write("m değerini giriniz:"); // n sayısının m'den küçük eşit olduğunu garantiye al if (n > m) int t = m; m = n; n = t; Console.WriteLine("[0,1] aralığında ki yuvarlak ve yarı yuvarlak sayılar:", n, m); for (int i = n; i <= m; i++) int sayı = i; while (sayı > 0) // kalan son basamak int k = sayı % 10; // son basamağı toplama ekle top += k; // eğer son basamak 0 değilse carpım ile çarp if (k!= 0) carp *= k; // son basamağı atmak için 10'a böl sayı = sayı / 10; if (top == carp) Console.WriteLine(i + " : yuvarlak sayı"); else if (top == carp / 2) Console.WriteLine(i + " : yarı yuvarlak sayı"); top = 0; carp = 1; 3 BMYO- Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2013-2014 Bahar Dönemi
/* Kullanıcıdan istenen sayıya kadar üç boyutlu bir dizinin ilk sütununda her elemanı kendi satırının faktörüyeli, orta sütununda her elemanı kendi indisinin kendi on anki indis kuveti, son sütununda her elemanı o anki indisine kadar olan sayıların toplamı olacak bir C# programı yazınız. örneğin N=6 için; 0! = 1 0^0=1 0+..+0=0 1! = 1 1^1=1 0+..+1=1 2! = 2 2^2=4 0+..+2=3 3! = 6 3^3=27 0+..+3=6 4! = 24 4^4=256 0+..+4=10 5! = 120 5^5=3125 0+..+5=15 6! = 720 6^6=46656 0+..+6=21 */ int n; int[,] dizi = new int[3, n+1]; for (int i = 0; i <= n; i++) dizi[0, i] = 1; dizi[1, i] = 1; dizi[2, i] = 0; for (int j = 1; j <= i; j++) dizi[0, i] *= j; dizi[1, i] *= i; dizi[2, i] += j; Console.WriteLine("0! = 1,-10 0^0 = 2,-10 0+..+0 = 3,-10", i, dizi[0, i], dizi[1, i], dizi[2, i]); 4 BMYO- Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2013-2014 Bahar Dönemi
/* Farklı eleman sayılarına sahip Rastgele üretilmiş iki farklı diziyi tek bir dizide birleştirerek kabarcık yöntemi ile küçükten büyüğe sıralayınız. Örnek: A dizisi ve B dizisi şekilde görünüyor. Bu iki dizi C dizisi içinde küçükten büyüğe doğru sıralanmıştır. A dizisi ==> 2 4 2 1 0 9 8 B dizisi ==> 6 3 2 5 0 7 8 C dizisi ==> 0 1 2 2 2 3 4 4 5 5 6 7 8 8 9 Not: A ve B dizilerinin eleman sayıları ayrı ayrı kullanıcıdan istenecektir. C dizisinin eleman sayısı A ve B dizilerinin eleman sayılarının toplamı kadar olmalıdır. Elemanların değerlerini rastgele üretmek için Random sınıfını kullanabilirsiniz. */ int n, m; Random r = new Random(); Console.Write("A Dizisinin eleman sayısını giriniz:"); Console.Write("B Dizisinin eleman sayısını giriniz:"); int[] A = new int[n]; int[] B = new int[m]; int[] C = new int[n + m]; Console.WriteLine("A dizisi:"); for (int i = 0; i < A.Length; i++) A[i] = r.next(0, 100); // A dizisinin elemanları değerleri 1 ile 100 arasında olacak. Console.Write(A[i] + " "); Console.WriteLine("\n\nB dizisi:"); for (int i = 0; i < B.Length; i++) B[i] = r.next(0, 100); // B dizisinin elemanları değerleri 1 ile 100 arasında olacak. Console.Write(B[i] + " "); // A ve B dizisini C dizisine kopyala A.CopyTo(C, 0); B.CopyTo(C, n); // kabarcık yöntemi ile sıralama for (int i = 0; i < C.Length - 1; i++) for (int j = i + 1; j < C.Length; j++) if (C[i] > C[j]) int t = C[j]; C[j] = C[i]; C[i] = t; 5 BMYO- Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2013-2014 Bahar Dönemi
// C dzisini ekrana yazdırma: Console.WriteLine("\nC dizisi:"); foreach (int e in C) Console.Write(e + " "); /* Elemanları rastgele üretilen n elemanlı bir dizinin parametre olarak gönderildiği bir fonksiyonda dizinin çift elemanlarının toplamını tek elemanlarının toplamına oranlayan bir fonksiyon yazınız. */ static double Oranla(int[] dizi) double ctop = 0, ttop = 0; for (int i = 0; i < dizi.length; i++) if (dizi[i] % 2 == 0) ctop += dizi[i]; else ttop += dizi[i]; return ctop / ttop; int n; Console.Write("Eleman Sayısını Giriniz: "); //n sayısını kullanıcıdan iste int[] dizi = new int[n]; Random r = new Random(); for (int i = 0; i < dizi.length; i++) dizi[i] = r.next(1, 100); //dizinin elemanlarını rastgele olarak 1 ile 100 arasında üret Console.Write(dizi[i] + " - "); double oran = Oranla(dizi); Console.WriteLine("\nÇift elemanların toplamı / tek elemanların toplamı = 0:F3", oran); 6 BMYO- Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2013-2014 Bahar Dönemi