C# Kullanıcının girdiği harfin kelimede nerede olduğunu söyleyen yazılım

Tahhatass

Hectopat
Katılım
29 Haziran 2021
Mesajlar
165
Daha fazla  
Cinsiyet
Erkek
Mesela kelime diye bir değişkenimiz var. Kelime değişkeni kelimeye eşit.

string kelime="kelime";

Mesela kullanıcı e harfini girdi diyelim. Ekrana 1, 5 yazmasını istiyorum. Yani e harfinin kelime değişkeninde nerede olduğunu öğrenmek istiyorum. Yardımcı olur musunuz?
 
İndexof olması lazım.

 
Bu tarz bir şey mi?

C#:
using System;

class Program
{
    static void Main()
    {
        Console.Write("Kelimeyi girin: ");
        string kelime = Console.ReadLine();

        Console.Write("Aranacak harfi girin: ");
        char aranacakHarf = Console.ReadKey().KeyChar;

        int harfSayisi = HarfSayisiBul(kelime, aranacakHarf);

        Console.WriteLine($"\n'{aranacakHarf}' harfi kelimenin içinde {harfSayisi} kez geçiyor.");
    }

    static int HarfSayisiBul(string kelime, char aranacakHarf)
    {
        int sayac = 0;

        foreach (char harf in kelime)
        {
            if (harf == aranacakHarf)
            {
                sayac++;
            }
        }

        return sayac;
    }
}
 
Bu tarz bir şey mi?

C#:
using System;

class Program
{
    static void Main()
    {
        Console.Write("Kelimeyi girin: ");
        string kelime = Console.ReadLine();

        Console.Write("Aranacak harfi girin: ");
        char aranacakHarf = Console.ReadKey().KeyChar;

        int harfSayisi = HarfSayisiBul(kelime, aranacakHarf);

        Console.WriteLine($"\n'{aranacakHarf}' harfi kelimenin içinde {harfSayisi} kez geçiyor.");
    }

    static int HarfSayisiBul(string kelime, char aranacakHarf)
    {
        int sayac = 0;

        foreach (char harf in kelime)
        {
            if (harf == aranacakHarf)
            {
                sayac++;
            }
        }

        return sayac;
    }
}
Console.WriteLine($"\n'{aranacakHarf}' harfi kelimenin içinde {harfSayisi} kez geçiyor.");
Yukarıdaki satırı herkes böyle yazıyor ama bende hata var. Nasıl düzeltebilirim.

Bu tarz bir şey mi?

C#:
using System;

class Program
{
    static void Main()
    {
        Console.Write("Kelimeyi girin: ");
        string kelime = Console.ReadLine();

        Console.Write("Aranacak harfi girin: ");
        char aranacakHarf = Console.ReadKey().KeyChar;

        int harfSayisi = HarfSayisiBul(kelime, aranacakHarf);

        Console.WriteLine($"\n'{aranacakHarf}' harfi kelimenin içinde {harfSayisi} kez geçiyor.");
    }

    static int HarfSayisiBul(string kelime, char aranacakHarf)
    {
        int sayac = 0;

        foreach (char harf in kelime)
        {
            if (harf == aranacakHarf)
            {
                sayac++;
            }
        }

        return sayac;
    }
}
Böyle bende yaptım. Anlatmak istediğim şey mesela kelimemiz meyve. Bende harf olarak e harfini seçtim. E harfi meyve kelimesinin 1 ve 4 indexinde. Ekrana 1 ve 4 yazmasını istiyorum.
 
Su isini gorur.

C#:
using System;

class Program
{
    static void Main()
    {
        // kullanicidan istedigi kelimeyi al
        Console.Write("Enter a word: ");
        string userWord = Console.ReadLine();

        // alinan kelime icin yine kullanicidan indexini bulmasini istedigi harfi iste
        Console.Write("Enter a character: ");
        char userInput = Console.ReadKey().KeyChar;
        Console.WriteLine(); // yan satira gec

        // harfin oldugu indexleri bul
        int index = -1;
        bool found = false;
        while ((index = userWord.IndexOf(userInput, index + 1)) != -1)
        {
            Console.WriteLine($"Character '{userInput}' found at index {index}");
            found = true;
        }

        // harf yoksa
        if (!found)
        {
            Console.WriteLine($"Character '{userInput}' not found in the word.");
        }
    }
}
 
Teşekkür ederim. Bende sabahtan
Su isini gorur.

C#:
using System;

class Program
{
    static void Main()
    {
        // kullanicidan istedigi kelimeyi al
        Console.Write("Enter a word: ");
        string userWord = Console.ReadLine();

        // alinan kelime icin yine kullanicidan indexini bulmasini istedigi harfi iste
        Console.Write("Enter a character: ");
        char userInput = Console.ReadKey().KeyChar;
        Console.WriteLine(); // yan satira gec

        // harfin oldugu indexleri bul
        int index = -1;
        bool found = false;
        while ((index = userWord.IndexOf(userInput, index + 1)) != -1)
        {
            Console.WriteLine($"Character '{userInput}' found at index {index}");
            found = true;
        }

        // harf yoksa
        if (!found)
        {
            Console.WriteLine($"Character '{userInput}' not found in the word.");
        }
    }
}
Teşekkür ederim. Ben de sabahtan beri for döngüsünü kullanıp yapmaya çalışıyorum. Kod biraz karışık ama çözeceğim inşallah
 
Console.WriteLine($"\n'{aranacakHarf}' harfi kelimenin içinde {harfSayisi} kez geçiyor.");
Yukarıdaki satırı herkes böyle yazıyor ama bende hata var. Nasıl düzeltebilirim.


Böyle bende yaptım. Anlatmak istediğim şey mesela kelimemiz meyve. Bende harf olarak e harfini seçtim. E harfi meyve kelimesinin 1 ve 4 indexinde. Ekrana 1 ve 4 yazmasını istiyorum.
Full iterasyon yapıyorsun. Karışık bir şey yok.
O( n ) çok kötü değil.

Yapacağın işlem kısaca şu;

Harfi aldın. Hangi harfi arayacağını biliyorsun. Kelimeyi de aldın. Başlıyorsun ilk karakterden itibaren kontrol etmeye. Karakter eşleşiyor mu? Evet. O zaman karakterin pozisyonunu, indexini, listeye ekle. Devam et. Bir sonraki karakter, eşleşiyor mu? Hayır. O zaman devam et. Bir sonraki eşleşiyor mu? Evet, o zaman listeye indexi ekle. Zor ve karışık olmakla yakından alakası yok.
C#:
    List<int> indexes_of_char_s(string text, char ch) {
        List<int> result = new List<int>();
        int len = text.Length;
        for(int i = 0; i < len; i++) {
            if(text[i] == ch) {

                result.Add(i);
            }
        }
        return result;
    }
 

Technopat Haberler

Yeni konular

Geri
Yukarı