C# Programa dili ile harf rakam sayma

lulu lulu

Femtopat
Katılım
14 Mart 2021
Mesajlar
3
Rastgele karakterler gireceğiz, bunlar arasından sadece rakam ve harflerin kac defa kullanıldıgını söyleyen programı dizilerle C# dili ile yazmam gerekiyor. Yardımcı olur musunuz?

Örnek:
Karakterler girin: AXyyXyZy+9-+b; b!+a++9++1991
A karakterinden 1 tane var.
X karakterinden 2 tane var.
Z karakterinden 1 tane var.
A karakterinden 1 tane var.
B karakterinden 2 tane var.
Y karakterinden 4 tane var.
1 karakterinden 2 tane var.
9 karakterinden 4 tane var.
 
Rastgele karakterler gireceğiz, bunlar arasından sadece rakam ve harflerin kac defa kullanıldıgını söyleyen programı dizilerle C# dili ile yazmam gerekiyor. Yardımcı olur musunuz?

Örnek:
Karakterler girin: AXyyXyZy+9-+b; b!+a++9++1991
A karakterinden 1 tane var.
X karakterinden 2 tane var.
Z karakterinden 1 tane var.
A karakterinden 1 tane var.
B karakterinden 2 tane var.
Y karakterinden 4 tane var.
1 karakterinden 2 tane var.
9 karakterinden 4 tane var.
Kendiniz deneme yaptıysanız kodu atar mısınız?
 
Boş bir integer değeri oluşturacaksınız, for döngüsünün içinde if statement oluşturup ASCII tablosundan istediğiniz karakterlerin değer aralıklarını gireceksiniz, eğer ife girerse integer değerini 1 artıracaksınız.
 
Rastgele karakterler gireceğiz, bunlar arasından sadece rakam ve harflerin kac defa kullanıldıgını söyleyen programı dizilerle C# dili ile yazmam gerekiyor. Yardımcı olur musunuz?

Örnek:
Karakterler girin: Axyyxyzy+9-+b; b!+a++9++1991
A karakterinden 1 tane var.
X karakterinden 2 tane var.
Z karakterinden 1 tane var.
A karakterinden 1 tane var.
B karakterinden 2 tane var.
Y karakterinden 4 tane var.
1 karakterinden 2 tane var.
9 karakterinden 4 tane var.

Bu işini görür senin.

C#:
static void Main(string[] args)
{
int sayac = 0;
Random rnd = new Random();
int[] dizi = new int[20];

Console.WriteLine("Oluşturulan Dizi");
Console.WriteLine("==============================================================");
for (int i = 0; i< dizi.Length; i++)
{
dizi[i] = rnd.Next(15, 25);
Console.Write(dizi[i].ToString() + " ");
}
Console.WriteLine();
Console.WriteLine("==============================================================");

for(int i=10; i<=25;i++)
{
sayac = 0;
for(int j=0;j<dizi.Length;j++)
{
if(i== dizi[j])
{
sayac++;
}
}
if(sayac!=0)
Console.WriteLine(i + " Sayısından " + sayac + " tane ");
}
Console.ReadKey();
}

Ben yapardım ama şu an zamanım yok maalesef.
Kaynak: C# Dizi İçinde Hangi Sayıdan Kaç Adet Olduğunu Bulma
 

Basit bir Dictionary(Map, HashMap) sorusu.

Hatta Java içerisinde değişken tanımlamaları hariç 2 satırda yapılabilir.
Java:
HashMap<Character, Integer> dict = new HashMap<>();
char[] chars = "AXyyXyZy+9-+b; b!+a++9++1991".toCharArray();
for (char letter : chars) dict.put(letter, dict.containsKey(letter) ? dict.get(letter) + 1 : 1);
for (Character i : dict.keySet()) System.out.printf(Character.isLetterOrDigit(i) ? "key: '%s' value: %s\n" : "", i, dict.get(i));

Çirkin ama 2 satır ¯\_(ツ)_/¯
 
Son düzenleme:
Javada bu şekilde yaptım, farklı bir fikir. C# ile çok benzer olduklarından anlaşılır olacağını düşünüyorum, yine de soracağınız bir yer olursa alıntılayabilirsiniz.

Java:
public class Main {
    public static void main(String[] args) {
        String str = "AXyyXyZy+9-+b; b!+a++9++1991";
        int[] array = new int[122];
        for (int i = 0; i < str.length(); i++) {
            if ((str.charAt(i) >= 48 && str.charAt(i) <= 57) || 
                    (str.charAt(i) >= 65 && str.charAt(i) <= 90) || 
                    (str.charAt(i) >= 97 && str.charAt(i) <= 122)) {
                array[(int) str.charAt(i)]++;
            }
        }
        for (int i = 0; i < array.length; i++) {
            if (array[i] != 0) {
                System.out.println(Character.toString(i) + 
                        " karakterinden " + array[i] + " tane var.");
            }
        }
    }
}

[CODE title="Output"]1 karakterinden 2 tane var.
9 karakterinden 4 tane var.
A karakterinden 1 tane var.
X karakterinden 2 tane var.
Z karakterinden 1 tane var.
a karakterinden 1 tane var.
b karakterinden 2 tane var.
y karakterinden 4 tane var.[/CODE]
 
Javada bu şekilde yaptım, farklı bir fikir. C# ile çok benzer olduklarından anlaşılır olacağını düşünüyorum, yine de soracağınız bir yer olursa alıntılayabilirsiniz.

Java:
public class Main {
    public static void main(String[] args) {
        String str = "AXyyXyZy+9-+b; b!+a++9++1991";
        int[] array = new int[122];
        for (int i = 0; i < str.length(); i++) {
            if ((str.charAt(i) >= 48 && str.charAt(i) <= 57) || (str.charAt(i) >= 65 && str.charAt(i) <= 90) || (str.charAt(i) >= 97 && str.charAt(i) <= 122)) {
                array[(int) str.charAt(i)]++;
            }
        }
        for (int i = 0; i < array.length; i++) {
            if (array[i] != 0) {
                System.out.println(Character.toString(i) + " karakterinden " + array[i] + " tane var.");
            }
        }
    }
}
Tek tek ASCII karşılığını kontrol etmek yerine Character wrapper class içerisinde yer alan isLetterOrDigit()'ı kullanabilirsiniz.
 
Tek tek ASCII karşılığını kontrol etmek yerine Character wrapper class içerisinde yer alan isLetterOrDigit()'ı kullanabilirsiniz.
CodeWars'ta sürekli bu tarz şeyler karşıma çıkıyor, temel mantığını öğrenip en ilkel şekilde yaptıktan sonra bu örnekte olduğu gibi kestirme yolları yavaş yavaş kullanmaya başlamak lazım. 50 satırda yazdığım şeyleri adamlar 2 satırda yapıyor. :D Güzel oldu bu, kullanırım. Çok teşekkür ederim.
 

Yeni konular

Geri
Yukarı