Çözüldü C# "Kullanıcının girdiği 5 isimde kaç adet sesli harf olduğunu bulan kod nasıl yazılır?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

dottore

Centipat
Katılım
2 Haziran 2021
Mesajlar
156
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
string sesli;
string[] metin = new string[5];
sesli = "aeuüoöıi";
int i, x, sayac;
for (i = 0; i < 5; i++)
{


Console.Write("{0}. İsimi giriniz: ", i + 1);
metin = Console.ReadLine();



}
sayac = 0;

for (x = 1; x <= 5; x++)
{
sayac = 0;
for (i = 0; i < metin.Length; i++)
{
if (sesli.Contains(metin))
{
sayac++;
}
}


Console.WriteLine("Girilen {0}. isimde {1} adet sesli harf vardır.", x, sayac);

}


Kullanıcının girdiği 5 isimde kaç adet sesli harf olduğunu bulan kod yazmaya çalışıyorum. Ne yaparsam yapayım sonuç her zaman sıfır çıkıyor. Nerede hata yaptığımı bir türlü bulamadım, yardımcı olabilir misiniz?
 

Dosya Ekleri

  • 1640542148172.png
    1640542148172.png
    179,9 KB · Görüntüleme: 90
Çözüm
Bu şekilde de yazılabilir

C#:
string[] sesli= new string[] {"a","e","ı","i","o", "ö","u","ü"};
string[] metin = new string[3];
for (int i = 0; i < 3; i++)
{
    Console.WriteLine("{0}. ismi giriniz: ", i+1);
    metin[i] = Console.ReadLine();
}

foreach (var item in metin)
{
    int sayac = 0;
    foreach (var item2 in item)
    {
        foreach (var item3 in sesli)
        {
            if (item3.Contains(item2))
            {
                sayac++;
            }
        }
    }
    Console.WriteLine("{0} isminde {1} adet sesli harf bulunmaktadır.", item, sayac);
}
Anladığım kadarıyla 5 kere for çalıştırıyosunuz ama her defasında isimlerin olduğu dizinin uzunluğunu ve i. elemanını çekiyorsunuz. Sizin yapmak istediğiniz aslında dizinin i. elemanının tek tek tüm harfini sesliler yazısında aratmak.

Aslında alttaki ikili for döngüsünde metin[x].Length ve sesli.Contains(metin[x][i]) kullanmanız gerekiyordu.
 
string zaten bir dizi, sadece subscript operatörünü kullan ve diziyi dolaş, karşılaştırma doğruysa sayacı arttır. Takılırsan kodu aşağıya ekledim bakarsın.

C#:
using System;
                   
public class Program
{
    public static void Main()
    {
        int sayac=0;
        string name;
        string sesli = "aeoöuüıi";
        name = Console.ReadLine();
        for(int i=0; i<name.Length; i++)
        {
            for(int j=0; j<8; j++)
                if(name[i]==sesli[j])
                {
                    sayac++;
                }
           
        }
        Console.WriteLine(sayac);
    }
}
 
string zaten bir dizi, sadece subscript operatörünü kullan ve diziyi dolaş, karşılaştırma doğruysa sayacı arttır. Takılırsan kodu aşağıya ekledim bakarsın.

C#:
using System;
                  
public class Program
{
    public static void Main()
    {
        int sayac=0;
        string name;
        string sesli = "aeoöuüıi";
        name = Console.ReadLine();
        for(int i=0; i<name.Length; i++)
        {
            for(int j=0; j<8; j++)
                if(name[i]==sesli[j])
                {
                    sayac++;
                }
          
        }
        Console.WriteLine(sayac);
    }
}
hocam hem verdiğiniz kodu görmedim hem de benim yazmak istediğim kodda kullanıcıdan 5 adet isim girilmesi istenip onun üzerinden sesli harfleri bulmaya çalışılması üzerineydi ve benim de tıkandığım kısım oydu ama tekrar tekrar deneyerek buldum, aşağıya bıraktım yazdığım acemi usulü kodu :)

C#:
string[] metin = new string[5];
int i,x,z, sayac=0;
string []sesli = new string [] {"a","e","ı","i","u","ü","o","ö"};

while (true)
{

    for (i = 0; i < 5; i++)
    {
        Console.Write("{0}. isimi giriniz: ", i + 1);
        metin[i] = Console.ReadLine();
    }





    foreach (var item in metin)
    {

        for (x = 0; x < 8; x++)
        {

            for (z = 0; z < item.Length; z++)
            {

                if (sesli[x].Contains(item[z]))
                {
                    sayac++;
                }

            }

        }

        Console.WriteLine("'{0}' ismindeki sesli harf sayısı: {1}", item.ToUpper(), sayac);
        sayac = 0;

    }

    Console.WriteLine("********************************************************************************");

}

//Girilen 5 isimdeki sesli harfleri bulma
 
İsimleri sen değistirisin istersen. Ya da kullanıcıdan alırsın.
[CODE lang="csharp" title="kod"]
string[] metin = new string[5] { "ahmet","selçuk", "hakan", "faruk", "sedat" };
string sesli = "AEIİOÖUÜaeıioöuü";
for (int i = 0; i < metin.Length; i++)
{
int sayac = 0;
for (int j = 0; j < metin.Length; j++)
{
if (sesli.IndexOf(metin[j]) != -1)
{
sayac++;
}
}
Console.WriteLine(${metin}isminde{sayac}tane sesli harf var.");
}[/CODE]
 
Bu şekilde de yazılabilir

C#:
string[] sesli= new string[] {"a","e","ı","i","o", "ö","u","ü"};
string[] metin = new string[3];
for (int i = 0; i < 3; i++)
{
    Console.WriteLine("{0}. ismi giriniz: ", i+1);
    metin[i] = Console.ReadLine();
}

foreach (var item in metin)
{
    int sayac = 0;
    foreach (var item2 in item)
    {
        foreach (var item3 in sesli)
        {
            if (item3.Contains(item2))
            {
                sayac++;
            }
        }
    }
    Console.WriteLine("{0} isminde {1} adet sesli harf bulunmaktadır.", item, sayac);
}
 
Çözüm

Yeni konular

Geri
Yukarı