Archive for the ‘C#’ Category

C# Smith Number

Posted: January 14, 2016 in Algorithms, C#
Tags: ,

smith a

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int number, x, i = 2, sum = 0, sum1 = 0, y;
Console.WriteLine(“Enter number=”);
number = Convert.ToInt32(Console.ReadLine());
x = number;
while (number > 10)
{

sum = sum + number % 10;
number = number / 10;
}

sum = sum + number;
while (x > 1)
{
if ((x % i) == 0)
{
if (i == 2 || i == 3 || i == 5 || i == 7)
{
sum1 = sum1 + i;
x = x / i;
}
else
{
y = i;
while (y > 10)
{
sum1 = sum1 + y % 10;
y = y / 10;

}

sum1 = sum1 + y;
x = x / i;

}
}

else
i++;
}
if (sum == sum1)
Console.Write(“Smith number”);
else
Console.WriteLine(“Not smith number”);
Console.ReadLine();

}
}
}

 

smith numbers

 

 

 

 

 

Advertisements

Her biri farklı dedikodu bilen x sayıda insanın olduğunu düşünün.Bu insanlar ,telefonla haberleşerek bildikleri dedikoduları

birbirleriyle paylaşmaktadırlar.Herkesin tüm dedikoduları bilmesi için en az kaç telefon görüşmesi yapılmalıdır?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication17
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(“Enter the number of persons:”);
int x = int.Parse(Console.ReadLine());
int b=0;
if (x == 0)
{
b = 0;

}

else if (x == 2)
{
b = 1;

}

else if (x == 3)
{

b = 2;

}

else if(x>=4)

{

b=2*x-4;

}

Console.WriteLine(“phone call needs to be done = {0}”, b);
Console.ReadKey();

}
}
}

————————————————————————————-

34

P.Tannenbaum , kenarları a,b,c ve açıları 120 dereceden küçük olarak verilen bir üçgenin köşelerini birleştiren en kısa uzunluğu
aşağıdaki algoritmayla hesaplanacağını bulmuştur.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication17
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(“Lütfen a kenarını giriniz=”);
int x = int.Parse(Console.ReadLine());
Console.WriteLine(“Lütfen b kenarını giriniz=”);
int y = int.Parse(Console.ReadLine());
Console.WriteLine(“Lütfen c kenarını giriniz=”);
int z = int.Parse(Console.ReadLine());
double n = (x * x + y * y + z * z)/2;
double m = 2 * x * x * y * y + 2 * x * x * z * z + 2 * y * y * z * z – (x * x * x * x + y * y * y * y + z * z * z * z);
double k = Math.Sqrt(3)/2*Math.Sqrt(m);
double t = Math.Sqrt(n + k);

double deger = Math.Sqrt(t);
Console.WriteLine(“En kısa uzunluk = {0}”, deger);
Console.ReadKey();

}
}
}

—————————————————————————————————————————-

33

m*n boyutlu ızgara üzerinde kaç tane muhtemelen kare ve dikdörtgen çizilebilir.Bunu hesaplayan programın yazdık.

Örnek olarak 2*2 boyutlu bir kareyi alalım. Kare aynı zamanda bir dikdörtgendir bunu da unutmamakta fayda var.

2*2 bir matris gibi de düşünülebilir.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication24
{
public partial class Form1 : Form
{

public Form1()
{

InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

string x = textBox1.Text;
string y = textBox2.Text;

int m = Convert.ToInt32(x);
int n = Convert.ToInt32(y);

int total_square = ((3*n-m+1)*(m+1)*m)/6;
MessageBox.Show( total_square.ToString());

}

private void button2_Click(object sender, EventArgs e)
{
string x = textBox1.Text;
string y = textBox2.Text;

int m = Convert.ToInt32(x);
int n = Convert.ToInt32(y);
int total_rectangle = (n * (n + 1) * m * (m + 1)) / 4;
MessageBox.Show(total_rectangle.ToString());
}
}
}

23

24

25

Dinamik programlama olan bu algoritma , iki string ifadenin karşılıklı dönüşümlerini yapmak için gerekli işlem sayısının belirlenmesi.Bu algoritma ses tanımada,DNA analizinde,bir eserin çalıntı olup olmadığını algılanmasında kullanılabilir.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication10
{
static class LevenshteinDistance
{

public static int Compute(string s, string t)
{
int x = s.Length;
int y = t.Length;
int[,] d = new int[x + 1, y+ 1];

if (x == 0)
{
return y;
}

if (y== 0)
{
return x;
}

for (int i = 0; i <= x; d[i, 0] = i++)
{
}

for (int j = 0; j <= y; d[0, j] = j++)
{
}

for (int i = 1; i <= x; i++)
{

for (int j = 1; j <= y; j++)
{

int cost = (t[j – 1] == s[i – 1]) ? 0 : 1;

d[i, j] = Math.Min(
Math.Min(d[i – 1, j] + 1, d[i, j – 1] + 1),
d[i – 1, j – 1] + cost);
}
}

return d[x, y];
}
}

class Program
{
static void Main(string[] args)
{

Console.WriteLine("Compute the distance between two strings:");
Console.WriteLine("——————————————");
Console.WriteLine("aysu and aynur");
Console.WriteLine(LevenshteinDistance.Compute("aysu", "aynur"));

Console.WriteLine("——————————————");
Console.WriteLine("eker and eken");
Console.WriteLine(LevenshteinDistance.Compute("eker", "eken"));
Console.ReadLine();
}
}
}

Ekran çıktısı :

19

Efsaneye göre Jewish-Roman savaşında 41 Jewish askeri Romalılarca bir mağaraya sıkıştırılır.Esir olmak istemeyen askerler intihar etmeyi düşünür ve bir karar alırlar.Bir çember oluşturacaklar her 3.kişinin intihar edeceğine karar veriyorlar.Son kalan kendini öldürecek.Josephus ise ölmeyi düşünmediğinden son kalanın sırasını hesapladı ve çemberde uygun sıraya geçti.Örnek vermek gerekirse bizim

4,5,6,7,8,9,10,11,12,13 elemanlı bir dizimiz olsun. Ve iki oyuncumuz olsun. biz eleman sayımızdan küçük(10 elemanımız var suan) bir x değeri belirleyelim. Daha sonra 2 oyuncumuz olduğu için diziyi 2 eşit parçaya bölelim.

1. oyuncu 2.oyuncu

4,5,6,7,8 9,10,11,12,13

x değerimiz 3 olsun. Şimdi gelelim bu 3 değerine ,3.elemanları silelim ve sonunda elemanı kalan oyunu kazansın.

1.eleman =4
2.eleman= 5
3.eleman =6 sildik

daha sonra

1.eleman =7
2.eleman =8
3.eleman =9 sildik

.
.
.

1. oyuncu 2.oyuncu

4,5,6,7,8 9,10,11,12,13

4,5,*,7,8 *,10,11, *,13

4,5,7,8 10,11,13

1.eleman=13
2.eleman=4
3.eleman=5 sildik

4,7,8 11,13

7,8 13

7 13

7 kazandı.

1.oyuncu kazandı.

Eğer biz bunu programda yapmaya çalıştığımızda indeks numarasını buluruz.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
int a, b;
b = 3;
a = 10;

Console.WriteLine(Josephus(b, a));
Console.ReadLine();
}

public static int Josephus(int m,int n)
{
int x,y=0;
for(x=2; x<=n; x++)
y=(y+m)%x;

return y+1;

}

15

4.elemanımız -> 7 .

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;

namespace WindowsFormsApplication20
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{

string file_path = string.Empty;
Bitmap bayram = null;

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
file_path = openFileDialog1.FileName;

bayram = new Bitmap(file_path);

pictureBox1.Image = bayram;
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}

for (int y = 0; y < bayram.Height; y++)
{
for (int x = 0; x < bayram.Width; x++)
{
Color old = bayram.GetPixel(x, y);
int average = (old.R + old.G + old.B) / 3;
Color new1 = Color.FromArgb(old.A, average, average, average);
bayram.SetPixel(x, y, new1);
}
}
pictureBox1.Image = bayram;

}
}
}

———————————————————————————————————————–

Orjinal görüntü:

images (1)

Daha sonraki görüntü:

14