İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C# Diziler Yardım

Proctives05.08.20151 cevap2.755 görüntüleme
2013'den beri19 mesaj
#1
Merhaba arkadaşlar. C# Console uygulamasında diziler ile ilgili bir sorunum var. Yapmam gereken şu; kulanıcı tarafından kaç adet sayı girileceği sorulacak ve yine kullanıcının belirlediği sayıya göre en büyük sayıları ekrana yazdıracak. Mesela; Kullanıcı ilk olarak 9 girdi,9 adet sayı giriyoruz ve kullanıcı ikinci olarak 5 girdi. Yani 9 sayı arasından en büyük beş sayıyı ekrana yazdıracağım. Dizi kullanmadan döngü ile yapılmış bir kod var ama dizileri bilmediğim için yapamadım. Yardımcı olacak olursa çok memnun olurum.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication7
{
class Program
{

static int buyukDonder(int[] sayilar)
{
int tmp = 0;
int sifirlanacakIndex = 0;
for (int i = 0; i < sayilar.Length; i++)
{
if (tmp < sayilar)
{
tmp = sayilar;
sifirlanacakIndex = i;
}

}
sayilar[sifirlanacakIndex] = 0;
return tmp;
}

static void Main(string[] args)
{
int[] sayilar = new int[10];
Console.Write("------------------------------\n");
int birinciBuyuk = 0, ikinciBuyuk = 0;
for (int i = 0; i < 10; i++)
{
Console.Write("Lütfen {0}. sayiyi giriniz: ", i + 1);
sayilar = Convert.ToInt32(Console.ReadLine());

}
birinciBuyuk = buyukDonder(sayilar);
ikinciBuyuk = buyukDonder(sayilar);

Console.WriteLine("\n" + " En büyük sayı: {0} \n En büyük ikinci sayı: {1}", birinciBuyuk, ikinciBuyuk);
}
}
}
Cevaplar
2012'den beri173 mesaj
#2
Selamlar,

Aşağıdaki şekilde yapabilirsin.
Tüm değerleri olması gerektiği gibi girersen program düzgün şekilde çalışmaktadır.
Yani sayısal yerine karakter değeri girersen program kırılır. İlgili kontrolleri sen yaparsın.
Burada kullanıcıdan kaç adet sayı girileceği sonrasında girilen sayılardan en büyük kaç tanesinin listeleneceği örneklenmiştir.
Gene girilen sayıdan daha fazla sayı görmek istersen program hata vermez fakat mantıksal olarak uyarı vermek lazım. Onuda sana bırakıyorum.

            var buyukSirala = sayilar.OrderByDescending(x => x)
                                     .Take(enBuyuk);


Yukarıdaki kod büyükten küçüğe sıralama yapıyor. Aynı zamanda kaç adet kayıt döndüreceğini belirtiyor.
Linq metodlarını anlamak için aşağıdaki makaleleri okuyabilirsin.

OrderByDescending

Take


    class Program
    {
        static void Main(string[] args)
        {
            int[] sayilar = null;
            int sayiMiktari = 0;
            int enBuyuk = 0;

            Console.WriteLine("Girilecek sayı adeti ?");
            sayiMiktari = Convert.ToInt32(Console.ReadLine());
            sayilar = new int[sayiMiktari];

            Console.WriteLine("{0} adet sayı giriniz.", sayiMiktari);

            for (int i = 0; i < sayiMiktari; i++)
            {
                sayilar[i] = Convert.ToInt32(Console.ReadLine());
            }

            Console.WriteLine("En büyük kaç adet sayı listelensin ?");
            enBuyuk = Convert.ToInt32(Console.ReadLine());

            var buyukSirala = sayilar.OrderByDescending(x => x)
                                     .Take(enBuyuk);

            Console.WriteLine("En büyük {0} sayi", enBuyuk);

            foreach (var sayi in buyukSirala)
            {
                Console.WriteLine(sayi);
            }
            
            Console.ReadLine();
        }
    }

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.