Ömerrrrrr
Hectopat
- Katılım
- 8 Nisan 2020
- Mesajlar
- 2.115
- Makaleler
- 3
- Çözümler
- 18
Daha fazla
- Cinsiyet
- Erkek
Bu kısım çalışmamış ama güncel bir compiler kullanmıyor olabilir arkadaş. O yüzden saçmalamış bence o kısım.Şuna gerek yok eğer güncel compiler kullanılıyorsa.int kackez[10] = {}
; dediğinizde hepsini default yapıyor. Ek olarak yine loop içinde de dönülüp yine assign edilebilir.
Teşekkür ederim. Daha detaylı da açıklayayım belki de başkalarına faydası olur.Anladım, güzel bir çözüm yoluymuş.
Burada sıklığını kontrol etmek istediğimiz sayıların 1 ile 10 arasında tam sayı olması bizim için çok güzel bir avantaj.
1 den x tane, 2 den y tane .... 10 dan z tane diye saymamız gerekiyor. Ama her birisinin sayısı için ayrı bir değişken oluşturmak yerine, bunu sayıları da 10 elemanlı bir array (listeden mantık olarak hiçbir farkı yok. sadece bellekte tutuluşları farklı) ile tutalım.
Sayılarımızın denk geldiği indexleri kontrol edelim. 1'in kaç tane olduğunu dizinin ilk elemanı belirleyecek. Yani 0. index. 2 nin kaçta ne olduğunu 1. index .... n in kaç tane olduğunu n-1. index belirleyecek.
O zaman biz bu oyların hepsini gezersek, ve her gördüğümüz sayı için ilgili indexi 1 arttırırsak dizimizin içinde hangi elemandan kaç tane olduğunu tutabilmiş oluruz. Bunu sağlamak için tüm diziyi gezip, dizinin her bir elemanına geldiğimizde o eleman için değerinin 1 eksiği indexe sahip kısmı güncellemeliyiz.
Dolayısıyla döngünün içi
Kod:
for(int i = 0;i<dizi.Length;i++)
{
kackez[dizi[i] - 1]++;
}
Son düzenleme: