C# da ortanca bulma yardım !!!

donanimci07

Öğrenci
Katılım
7 Aralık 2012
Mesajlar
7
Reaksiyon puanı
0
Puanları
0
Merhaba arkadaşlar bana C# da klavyeden girilen 10 sayının ortancasını bulan programı yazabilecek varmı cok denedim ama bir türlü yapamadım yardım edin lütfenn....(for döngüsü)
 

algea

Doçent
Katılım
15 Temmuz 2011
Mesajlar
505
Reaksiyon puanı
22
Puanları
18
Kod:
float m;
int[] numbers = new int[10] { 5, 7, 3, 8, 10, 1, 2, 4, 6, 9 };
for (int i=0;i<10;i++){
   Console.WriteLine("Sayı giriniz:");
  if (!int.TryParse(Console.ReadLine(), out numbers[i])) {break;}
}
Array.Sort(numbers);
m = (float)(numbers[10 / 2] + numbers[10 / 2 + 1]) / 2;
 

erdiiinc

Öğrenci
Katılım
7 Ağustos 2012
Mesajlar
16
Reaksiyon puanı
0
Puanları
0
Dostum çift sayı söylediğinde ortanca kavramı değişebilir. Yani 10 tane sayının ortancası demek küçükten büyüğe sıraladıgında 5. mi 6. mı olur ? ama sen 9 sayıdan ortancası desen sayıları kücükten büyüğe ya da büyükten küçüğe sıralayıp tam ortadakini alabilirsin yani 5. yi.
 

donanimci07

Öğrenci
Katılım
7 Aralık 2012
Mesajlar
7
Reaksiyon puanı
0
Puanları
0
Dostum çift sayı söylediğinde ortanca kavramı değişebilir. Yani 10 tane sayının ortancası demek küçükten büyüğe sıraladıgında 5. mi 6. mı olur ? ama sen 9 sayıdan ortancası desen sayıları kücükten büyüğe ya da büyükten küçüğe sıralayıp tam ortadakini alabilirsin yani 5. yi.

Benim amacım ortadaki sayıy bulmak deil zaten "klavyeden girilen 10 'sayıdan' ortancasını bulmak" yani girilen 'sayıların' ortancasını bulmak...

Ortanca bulmak için,
http://www.tualimforum.com/genel-ku...an-hesaplama-yontemleri-medyan-hesaplama.html
Kod:
 float m;[/FONT]
[FONT=Verdana] int[] numbers=new int[10]{5,7,3,8,10,1,2,4,6,9};[/FONT]
[FONT=Verdana] Array.Sort(numbers);[/FONT]
[FONT=Verdana] m = (float)(numbers[10 / 2] + numbers[10 / 2 + 1])/2;


Bu kod da sadece i'nin ortasındaki yani 5. sırasındakı sayıyı buluyor yanılmıyosam?
 

yunasyus

Profesör
Katılım
12 Mart 2009
Mesajlar
1,041
Reaksiyon puanı
6
Puanları
218
ortanca dediğin sayıların ortalaması ise toplayıp 10 a bölersin ??
 

arsenik

Müdavim
Müdavim
Katılım
8 Ağustos 2009
Mesajlar
11,355
Reaksiyon puanı
242
Puanları
243
Ortanca ortalama değil medyan diye geçer. Sayıların küçüktün büyüğe sıralanmış halinde ortadaki terim ortanca değer adını alır. Eğer (çift)10 sayı varsa ortanca değer serinin küçükten büyüğe sıralandıktan sonraki 5. ve 6. değerlerinin ortalaması olarak alınır.

Kod:
float m;
int[] numbers = new int[10] { 5, 7, 3, 8, 10, 1, 2, 4, 6, 9 };
for (int i=0;i<10;i++){
   Console.WriteLine("Sayı giriniz:");
  if (!int.TryParse(Console.ReadLine(), out numbers[i])) {break;}
}
Array.Sort(numbers);
m = (float)(numbers[10 / 2] + numbers[[B]10 / 2 + 1[/B]]) / 2;

numbers[10 / 2 + 1]

Burayı 6 olarak mı alacak yoksa 10/3 olarak mı? 6 olarak almazsa bozuk çıkar.
 

Hello Kitty.

Müdavim
Müdavim
Katılım
14 Ağustos 2008
Mesajlar
12,240
Reaksiyon puanı
104
Puanları
3,243
Konum
kuytu köşe
[MENTION=312916]donanimci07[/MENTION] ilk önce klavyeden gireceğin sayıları küçükten büyüğe sıralayacaksın. Daha sonra kaç adet sayı girdin ona bakacaksın ya da kaç adet sayı girleceğini başta belirleyeceksin.

Girdiğin sayıların adeti tek ise;

n+1/2 formülü ile hesaplayacksın. Yani 11 sayı girdiysen 11+1/2 = 6 6. sayı senin ortancan.

Girdiğin sayıların adeti çift ise;

(n/2) + (n/2+1) formülü ile hesaplayacksın. Yani 12 sayı girdin. 12/2 = 6 , 12/2 +1 = 7 6. sayı 10 olsun 7. sayı 12 olsun. Bunların toplamının yarısı (10 + 12)/2 = 11 senin ortanca sayındır.

Bu kurala göre yapabilirsin.
 

algea

Doçent
Katılım
15 Temmuz 2011
Mesajlar
505
Reaksiyon puanı
22
Puanları
18
Ortanca ortalama değil medyan diye geçer. Sayıların küçüktün büyüğe sıralanmış halinde ortadaki terim ortanca değer adını alır. Eğer (çift)10 sayı varsa ortanca değer serinin küçükten büyüğe sıralandıktan sonraki 5. ve 6. değerlerinin ortalaması olarak alınır.


Burayı 6 olarak mı alacak yoksa 10/3 olarak mı? 6 olarak almazsa bozuk çıkar.
(10/2)+1 yada 10/2+1. Bölmenin toplama işaretine göre üstünlüğü olduğuna göre sonuç değişmeyecektir.
 

sino

Öğrenci
Katılım
24 Ocak 2013
Mesajlar
34
Reaksiyon puanı
0
Puanları
0
Abi siz hala tutturmusunuz ortanca sayı diye. Adam klavyeden girilen 10 sayının ortancasını bulup yazdırsın diyor.
Sen burda hangi sayıları girdirticeksin ona göre kolay yada zor mantık yürütelim yani onu söyle bence.
Öyle sayının ortalaması ortancayı da vermez. Ama sen 5-6-7 diye 15 kadar giren 10 sayı girdim ortancası ne diye soruyorsan Enb = En büyük sayı olsun diyelim , Enb/2 yeterli olucaktır senin için. Ama düzensiz sıra ile giricem dersen daha ayrı bir yol deneriz.
 

Hello Kitty.

Müdavim
Müdavim
Katılım
14 Ağustos 2008
Mesajlar
12,240
Reaksiyon puanı
104
Puanları
3,243
Konum
kuytu köşe
Abi siz hala tutturmusunuz ortanca sayı diye. Adam klavyeden girilen 10 sayının ortancasını bulup yazdırsın diyor.
Sen burda hangi sayıları girdirticeksin ona göre kolay yada zor mantık yürütelim yani onu söyle bence.
Öyle sayının ortalaması ortancayı da vermez. Ama sen 5-6-7 diye 15 kadar giren 10 sayı girdim ortancası ne diye soruyorsan Enb = En büyük sayı olsun diyelim , Enb/2 yeterli olucaktır senin için. Ama düzensiz sıra ile giricem dersen daha ayrı bir yol deneriz.

Bir kerede şu konunun açılma tarihine baksan ne güzel olurdu. 2010 tarihli konulara bile mesaj yazıyorsun. + Ortanca sayı (mod) bulmanın matematiksel kuralı varken niye deneme yanılma yöntemi ile soruyu çözmeye çalışıyoruz ki :)
 

sino

Öğrenci
Katılım
24 Ocak 2013
Mesajlar
34
Reaksiyon puanı
0
Puanları
0
Bir kerede şu konunun açılma tarihine baksan ne güzel olurdu. 2010 tarihli konulara bile mesaj yazıyorsun. + Ortanca sayı (mod) bulmanın matematiksel kuralı varken niye deneme yanılma yöntemi ile soruyu çözmeye çalışıyoruz ki :)
Cevaplar 2013 ama dostum. Deneme yanılma yöntemi kullanmıyorum ki Aradığın sayı terim sayısı. Yani orta sayı. Oda ilkTerim+sonTerim/artisMiktari olur. Lakin klavyeden girilen diyor. Kullanıcının ne giriceğini bilemezsin ki ;) Ama düz mantıkla soruyu [MENTION=159144]algea[/MENTION]'nın yaptığı gibi yapılabilir.
 

algea

Doçent
Katılım
15 Temmuz 2011
Mesajlar
505
Reaksiyon puanı
22
Puanları
18
http://www.tualimforum.com/genel-ku...an-hesaplama-yontemleri-medyan-hesaplama.html da algoritmanın tamamı verilmiş. Algoritmayı oldu olacak tam yazalım akılarda soru kalmasın...
Kod:
            List<double> numbers = new List<double>();
            double n = 0;
            double m = 0;
            string text = "";

            do{
                Console.WriteLine("Sayı giriniz? Çıkış için Q'ya basınız");
                text = Console.ReadLine();
                if (String.Equals(text.ToUpper(), "Q", StringComparison.CurrentCulture)) { break; };
                try
                {
                    n = double.Parse(text);
                    numbers.Add(n);
                }
                catch { Console.WriteLine("Lütfen sayı giriniz!"); }
            } while (true);
            numbers.Sort();
            if (numbers.Count % 2 == 0){
                m = (double)(numbers[(numbers.Count / 2)-1] + numbers[(numbers.Count / 2 + 1)-1])/2;
            }
            else{
                m = (double)numbers[((numbers.Count + 1) / 2)-1];
            }
            Console.WriteLine("Sayılar:");
            for (int i = 0; i < numbers.Count; i++) {
                Console.Write("{0},",numbers[i]);
            }
            Console.WriteLine("Median:{0}", m);
            Console.ReadKey();
 

Hello Kitty.

Müdavim
Müdavim
Katılım
14 Ağustos 2008
Mesajlar
12,240
Reaksiyon puanı
104
Puanları
3,243
Konum
kuytu köşe
Cevaplar 2013 ama dostum. Deneme yanılma yöntemi kullanmıyorum ki Aradığın sayı terim sayısı. Yani orta sayı. Oda ilkTerim+sonTerim/artisMiktari olur. Lakin klavyeden girilen diyor. Kullanıcının ne giriceğini bilemezsin ki ;) Ama düz mantıkla soruyu @algea'nın yaptığı gibi yapılabilir.

Hocam söylediğim bu konu için değil bundan başka olan konular için geçerli. Ortanca sayıya yanlışlıkla mod demişim diğer adı medyan olacak. Bunu bir düzelteyim. Ortanca sayı(medyan) direk ortadaki sayı değildir. Eğer o on sayı sıralı değilse ilk önce küçükten büyüğe sıralaman gerekir. Daha sonra sayı adedi(n) tek ise (n+1)/2 formülüne göre bulunur.
Eğer girilen sayı çift ise

(n/2) + (n/2+1) formülü ile hesaplayacksın. Yani 12 sayı girdin. 12/2 = 6 , 12/2 +1 = 7 6. sayı 10 olsun 7. sayı 12 olsun. Bunların toplamının yarısı (10 + 12)/2 = 11 senin ortanca sayındır.

Yani Arkadaş 10 adet sayıdan bahsediyor. İlk önce sayıları küçükten büyüğe sıralayacak. Daha sonra 10/2 = 5. sayıyı bulacak (x olsun) ve 10/2 + 1 = 6. sayıyı bulacak (y olsun) ve en sonunda bu iki sayının ortalamasını alacak (x+y)/2 = z z'de ortanca sayıdır.
 
S

SDN Okuru

SDN Okuru
Kullanıcı tarafından girilen 5 sayıyı bir diziye atayarak, bunlardan ortancasını döngü ve hazır sıralama komutu kullanmadan gerçekleştiren C# konsol programını yazınız. çok acil yardım gerekli
 

Onrkarkrt

Öğrenci
Katılım
21 Ekim 2015
Mesajlar
1
Reaksiyon puanı
0
Puanları
0
Bunu c# dizi şeklinde olan program hakkında yardımcı olabilir misiniz ?

- - - Mesaj Güncellendi - - -

http://www.tualimforum.com/genel-ku...an-hesaplama-yontemleri-medyan-hesaplama.html da algoritmanın tamamı verilmiş. Algoritmayı oldu olacak tam yazalım akılarda soru kalmasın...
Kod:
            List<double> numbers = new List<double>();
            double n = 0;
            double m = 0;
            string text = "";

            do{
                Console.WriteLine("Sayı giriniz? Çıkış için Q'ya basınız");
                text = Console.ReadLine();
                if (String.Equals(text.ToUpper(), "Q", StringComparison.CurrentCulture)) { break; };
                try
                {
                    n = double.Parse(text);
                    numbers.Add(n);
                }
                catch { Console.WriteLine("Lütfen sayı giriniz!"); }
            } while (true);
            numbers.Sort();
            if (numbers.Count % 2 == 0){
                m = (double)(numbers[(numbers.Count / 2)-1] + numbers[(numbers.Count / 2 + 1)-1])/2;
            }
            else{
                m = (double)numbers[((numbers.Count + 1) / 2)-1];
            }
            Console.WriteLine("Sayılar:");
            for (int i = 0; i < numbers.Count; i++) {
                Console.Write("{0},",numbers[i]);
            }
            Console.WriteLine("Median:{0}", m);
            Console.ReadKey();





Bunu c# dizi şeklinde olan program hakkında yardımcı olabilir misiniz ? ?
 
Üst