1)bilgisayarın ürettiği rasgele büyük harfin en fazla 10 denemede tahmin edilebilme oyunu bulan program
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
int a, x = 0;
char ch, ch1;
Random b = new Random();
a = b.Next(65, 90);
ch = Convert.ToChar(a);
Console.WriteLine(a + "==>" + ch);
for (int i = 1; i <= 10; i++)
{
Console.WriteLine("bir harf giriniz ");
ch1 = Convert.ToChar(Console.ReadLine());
if (ch == ch1)
{
Console.WriteLine(i + ".seferinde bildiniz");
x = 1;
break;
}
}
if (x == 0)
Console.WriteLine("bilemediniz");
Console.ReadLine();
}
}
}
------------------------------------------------------------
2) girilen pozitif bir tam sayının iki sayının kareleri toplamı şeklinde yazılıp yazılamayacağını bulan program
float x,n,i;
Console.Write("SayıGir==>"); n=Convert.ToInt32(Console.ReadLine());
for (i=0;i<=n/2;i++)
{
x=n-i; if((Math.Floor(Math.Sqrt(x))==Math.Sqrt(x))&(Math.Floor(Math.Sqrt(i))==Math.Sqrt(i)))
{
Console.WriteLine(x+" ve "+i);
}
}
Çıktı
Girilen sayı : 25
0 ve 25
9 ve 16
Sayılardan birisini azaltırken ötekini yükseltiyoruz. ikisininde karekökü olan yerde ekrana yazdırıyoruz. Yalnız "9ve25" bulduktan sonra 25ve9 da bulmamak için sayının yarısına kadar(n/2 ile) gidiyoruz.
Karekökünü yuvarlayarak (Floor ile) Karekökünün gerçek değerine eşitse karekökü vardır diyoruz.
0'ın olmasını istemiyorsan i yi 1 den başlat.
--------------------------------------------------
3)klavyeden girilen bir tam sayıyı en yakın 5'in katına yuvarlayan program
static void Main()
{ int n;
Console.Write("SayıGir==>"); n=Convert.ToInt32(Console.ReadLine());
if ((n % 5)>2 | (n<3)) n = n + (5 - (n % 5));
else n = n -(n % 5);
Console.WriteLine("Sayı şimdi: "+n);
}
O kadar Daha kısa, daha fazla puan
Sayı 5ten küçükse "| (n<3)" ifadesiyle otomatik 5e yuvarlıyoruz.
Sayının 5e bölümünden kalan 2den büyükse sayıya 5e bölümünden kalanının 5ten farkını ekliyoruz(n = n +(5 - (n % 5));)
Sayının 5e bölümünden kalan 2den küçükse sayıdan
5e bölümünden kalanı çıkarıyoruz.
4)7'den büyük tam sayılar 3 ve 5'in katlarının toplamı şeklinde yazılabilirler.girilen bir tamsayı için a ve b kat sayılarını bulan program
int a,b,x;
Console.WriteLine("5a+3b=x denklemi için x=>"); x=Convert.ToInt32(Console.ReadLine());
for(a=0;a<=x/5;a++)
for(b=0;b<=x/3;b++)
if ((5*a+3*b)==x) Console.WriteLine("a="+a+" b="+b);
soru laf kalabalığından ibaret; Girilen x değeri için 5a+3b=x denklemindeki a ve b alabileceği değerler.
Teknik gayet basit "brute force" yani Her ihtimali denemek.
5)kendi hanelerine tam bölünen 10-99 arasındaki tam sayıları veren program
mesela 12
12:1=12
12:2=6 gibi
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication12
{
class Program
{
static void Main(string[] args)
{
int birler, onlar;
for (int i = 10; i < 100; i++)
{
birler = i % 10;
onlar = (i - (i % 10)) / 10;
if (birler != 0)
{
if (i % birler == 0)
{
if (i % onlar == 0)
{
Console.WriteLine(i);
}
}
}
}
Console.ReadLine();
}
}
}
-----------------------------------------------------------------
6)tüm kenarları tam sayı ve dik kenarları 1-33 arasındaki mümkün olan bütün abc kenarlarını bulunuz.
int c,a,b; float x,n,i;
for(c=5;c<=66;c++)
{ n=c*c;
for (i=1;i<=n-1;i++)
{
x=n-i;
if((Math.Floor(Math.Sqrt(x))==Math.Sqrt(x))&(Math.Floor(Math.Sqrt(i))==Math.Sqrt(i)))
{ a=Convert.ToInt32(Math.Sqrt(x));
b=Convert.ToInt32(Math.Sqrt(i));
if ((a<=33)&(b<=33)) Console.WriteLine("A="+a+" B="+b+" C="+c);
}
}
}
a ve b yi yani dik kenarları döngüye sokarak çıkmıyor. Hipotenüs daha uygun. 2.soruyu hatırla iki karenin toplamı biçimde yazılabilmeyi sormuş. Hipotenüs iki karenin toplamı olduğuna göre
Hipotenüsün karesi iki sayının toplamı biçimde yazılabiliyorsa bu iki sayı üçgenin dik köşelerini oluşturur.
Hipotenüs tamsayı olacak biçimde minimum 5 yazılabiliyor. Döngüyü 5 den başlattım.
Döngü içinde c'yi karesini alıp 2.sorudaki gibi iki karenin toplamı biçimde yazılabiliyor mu kontrol ettirdim.
Yazılabiliyorsa bu bir dik üçgendir. Zaten bütün özel üçgenler çıktı. Sen daha iyi kontrol edersin. Bir de sen dene.
Programın çıktısı:
A=4 B=3 C=5
A=3 B=4 C=5
A=8 B=6 C=10
A=6 B=8 C=10
A=12 B=5 C=13
A=5 B=12 C=13
A=12 B=9 C=15
A=9 B=12 C=15
A=15 B=8 C=17
A=8 B=15 C=17
A=16 B=12 C=20
A=12 B=16 C=20
A=24 B=7 C=25
A=20 B=15 C=25
A=15 B=20 C=25
A=7 B=24 C=25
A=24 B=10 C=26
A=10 B=24 C=26
A=21 B=20 C=29
A=20 B=21 C=29
A=24 B=18 C=30
A=18 B=24 C=30
A=30 B=16 C=34
A=16 B=30 C=34
A=28 B=21 C=35
A=21 B=28 C=35
A=32 B=24 C=40
A=24 B=32 C=40
Ne bakıyon daha yok
-----------------------------------------------------------
7)klavyeden girilen b tam sayısına göre a küp - a kare=b şartını sağlayan tam sayısını bulan program (0<a<100)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication12
{
class Program
{
static void Main(string[] args)
{
double b, kup, kare, fark; int varmi = 0;
Console.WriteLine("sayısı giriniz");
b = Convert.ToInt32(Console.ReadLine());
for (int c = 0; c < 100; c++)
{
kup = Math.Pow(c, 3);
kare = Math.Pow(c, 2);
fark = kup - kare;
if (fark == b)
{
varmi++;
Console.WriteLine(c);
}
}
if (varmi == 0) Console.WriteLine("hata! " + b + " ile Denklem Çözülemiyor.");
Console.ReadLine();
}
}
}
----------------------------------------------------------------
8)hanelerinin toplamı hane sayısına eşit olan 100-999 arasındaki tam sayıları bulan program
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication12
{
class Program
{
static void Main(string[] args)
{
double hane1, hane2, hane3, hanetop;
for (int i = 100; i < 999; i++)
{
hane1 = (i % 10);
hane2 = ((i - hane1) % 100) / 10;
hane3 = (i - ((hane2 * 10) + hane1)) / 100;
hanetop = hane1 + hane2 + hane3;
if (hanetop == 3)
{
Console.WriteLine(i);
}
}
Console.ReadLine();
}
}
}
-----------------------------------------------------------------
9)ilk n hanesindeki rakamların toplamı , son n hanesindeki rakamların toplamına eşit olan 2n haneli sayılar elde edilmeye çalışılmaktadır.10 000- 9 999 arasında üretilmeye çalışıcaktır. bunu bulan program.
int n,i,a,sayi,top1,top2;
string s;
int[] basamak = new int[6];
for(sayi=1000;sayi<=999999;sayi++)
{
s=Convert.ToString(sayi);
if (s.Length%2==0)
{ top1=0; top2=0;
for(i=0;i<=s.Length-1;i++) basamak[i]=Convert.ToInt32(s[i]);
for(i=0;i<=(s.Length-1)/2;i++)
{ top1=top1+basamak[i];
top2=top2+basamak[s.Length-1-i];
}
if (top1==top2) Console.WriteLine(sayi);
}
else
sayi=sayi*10-1;
}
herşey açık. Ama Sayıyı ona bölmek felan baya uzun sürerdi. Bir string bir dizi ile olay tamam.
Program gayet opsiyonel oldu basamak sayısını isdediğimiz gibi değiştirebiliriz. ben 1000-999999 seçtim. Birde "sayı" değişkenin çift rakamlı olmadığı durumlarda döngü boşuna dönmemesi için. "sayi=sayi*10-1;" yaptım hemen çift rakamlı oluyor.
-------------------------------------------------------------------
10)Fibonocci serisi sayıları aşağıdaki gibidir
1 1 2 3 5 8 ....
buna göre klavyeden girilen n sayısına göre, n'e kadar olan sayıların toplamını bulan program.
(5 verilirse ilk 5 terimi bulucak.bu 5 terimin toplamı yapılıcak)
using System;
class huzur
{
static void Main()
{
int n, a1, a2;
Console.WriteLine("n'inci elemanı giriniz:");
n = Convert.ToInt32(Console.ReadLine());
a1 = 0; a2 = 1; int i;
for (; a2 < n; )
{
i = a2;
a2 = a1 + a2;
a1 = i;
Console.WriteLine("\n" + a2);
}
}
}
----------------------------------------------------
11)klavyeden girilen terim sayısına göre aşağıdaki serinin elemanlarını yazdıran program.
1 2 3 5 11 26 81 367
int x,i ;
Console.WriteLine("Terimsayısı=>"); x=Convert.ToInt32(Console.ReadLine());
int[] terim = new int[x+1];
terim[1]=1; terim[2]=2; terim[3]=3;
for(i=4;i<=x;i++)
terim=terim[i-1]+terim[i-2]*terim[i-3];
Console.WriteLine(x+".Terim= "+terim[x]);
------------------------------------------------------------------
12)0 ile 999 arasındaki mükemmel sayıları bulan program
15)kendisi dışındaki pozitif bölenlerinin toplamı kendisine eşit olan sayılara mükemmel sayı denir.0 ile 999 arasındaki sayıları bulan program.
int sayi,topl;
for(sayi=1;sayi<=9999;sayi++)
{ topl=0;
for (int i = 1; i <= sayi / 2; i++)
if (sayi % i == 0) topl = topl +i;
if (topl == sayi)
Console.WriteLine(sayi+" Mükemmel Sayı");
}
Çıktı:
6 Mükemmel Sayı
28 Mükemmel Sayı
496 Mükemmel Sayı
8128 Mükemmel Sayı
1-9999 arası 4 tancik varmış.
Ömrünüz teterse belki 5. yi görürsünüz
---------------------------------------------------------------------
13)1-99 arasında hanelerin toplamı tek olan sayıları yazdıran program
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication13
{
class Program
{
static void Main(string[] args)
{
double hane1, hane2, hanetop;
for (int i = 1; i < 100; i++)
{
hane1 = i % 10;
hane2 = (i - hane1) / 10;
hanetop = hane1 + hane2;
if (hanetop % 2 == 1)
{
Console.WriteLine(i);
}
}
Console.ReadLine();
}
}
}
-----------------------------------------------------------------------
14)klavyeden 3 kenarı girilen bir üçgenin eş kenar veya ikiz kenar olup olmadığını kontrol eden bir program
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication13
{
class Program
{
static void Main(string[] args)
{
double a, b, c, uckenmi = 1;
Console.WriteLine("a kenarını giriniz");
a = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("b kenarını giriniz");
b = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("c kenarını giriniz");
c = Convert.ToDouble(Console.ReadLine());
if (a + b < c)
{
Console.WriteLine("üçgen değil");
uckenmi = 0;
}
if (uckenmi == 1)
{
if (a - b > c)
{
Console.WriteLine("üçgen değil");
uckenmi = 0;
}
if (a + c < b)
{
Console.WriteLine("üçgen değil");
uckenmi = 0;
}
}
if (uckenmi == 1)
{
if (a - c > b)
{
Console.WriteLine("üçgen değil");
uckenmi = 0;
}
if (c + b < a)
{
Console.WriteLine("üçgen değil");
uckenmi = 0;
}
if (c - b > a)
{
Console.WriteLine("üçgen değil");
uckenmi = 0;
}
}
if (uckenmi == 1)
{
if (a == b)
{
if (a == c) { Console.WriteLine("eşkenar üçgen"); }
if (a != c)
{
Console.WriteLine("ikiz kenar üçgen a=b");
}
}
if (a == c)
{
if (a != b) { Console.WriteLine("ikiz kenar üçgen a=c"); }
}
if (b == c)
{
if (b != a) { Console.WriteLine("ikiz kenar üçgen b=c"); }
}
if (a != b)
{
if (a != c)
{
if (b != c)
{
Console.WriteLine("çeşit kenar üçgen");
}
}
}
}
Console.ReadLine();
}
}
}
----------------------------------------------------------------------
15)kendisi dışındaki pozitif bölenlerinin toplamı kendisine eşit olan sayılara mükemmel sayı denir.0 ile 999 arasındaki sayıları bulan program.
(bakınız 12.soru)
-----------------------------------------------------------------
16)herhangi bir zaman aralığında akrep ve yelkovan arası açıyı hesaplayan program
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
float aci, a, saat, dk;
Console.Write("saatigiriniz:");
saat = Convert.ToInt32(Console.ReadLine());
Console.Write("dkigiriniz:");
dk = Convert.ToInt32(Console.ReadLine());
aci = ((saat * 30) + (30 * (dk / 60))) - (dk * 6);
Console.WriteLine(Math.Abs(aci));
}
}
}
--------------------------------------------------------------------
17)felluçi serisi aşağıdaki gibidir.
1 1 2 3 5 8 13 21 ...
buna göre klavyeden girilen n sayısına kadar olan sayıları bulup ekrana yazdıran program.
using System;
class huzur
{
static void Main()
{
int n, a1, a2;
Console.WriteLine("n'inci elemanı giriniz:");
n = Convert.ToInt32(Console.ReadLine());
a1 = 0; a2 = 1; int i;
for (; a2 < n; )
{
i = a2;
a2 = a1 + a2;
a1 = i;
Console.WriteLine("\n" + a2);
}
}
}
eof-
Not: alıntı değlidir.