Soru yukarıda anlatıldığı şekilde. Ek olarak soruda bir not var. Not şu: "Ascii kodlarını düşünün. Dışarıdan 128 farklı karakter girilebilir. Bunların hepsini nasıl saklayabilirsiniz?"
Yardımcı olursanız mutlu olurum.
Ascii 128 karakter içerir. 0 ile başlayan 127 ile biten bir değişkene ihtiyacınız var. Bunu karşılayan en küçük veri tipi 1 baytlık "char" veri tipidir. -128 ile 127 arasında değerleri alır. "unsigned char" veri tipi de işinizi görebilir. 0 ile 255 arasındaki değerleri alır.
Bu kodu inceleyin, istediğiniz bilgi bu kodda mevcut. Türkçede 29 harf olduğu için 26'yı 29 yapıp Türkçe karakterleri eklemeniz gerekiyor.
Kod:
int main()
{
char string[100];
int c = 0, count[26] = {0};
printf("Enter a string\n");
gets(string);
while (string[c] != '\0')
{
/** Considering characters from 'a' to 'z' only
and ignoring others */
if (string[c] >= 'a' && string[c] <= 'z')
count[string[c]-'a']++;
c++;
}
for (c = 0; c < 26; c++)
{
/** Printing only those characters
whose count is at least 1 */
if (count[c] != 0)
printf("%c occurs %d times in the entered string.\n",c+'a',count[c]);
}
return 0;
}
Arkadaşlar internette sayısız kaynak var bununla alakalı. Türkçe bile aratsanız çıkıyor aslında.
Bir bir satırın ne işe yaradığını sorgulayarak ilerleyebilirsiniz, diğer türlü verilen ödevin bir faydası olmaz sizlere.
[CODE lang="csharp" title="Metin içinde aratma"]class Program
{
static void Main(string[] args)
{
String metin = "www.yazilimkodlama.com";
metin = metin.ToLower();
String karakterler = "0123456789abcdefghijklmnopqrstuvwxyz.?,;";
int[] count = new int[karakterler.Length];
for (int i = 0; i < metin.Length; i++)
{
int index = karakterler.IndexOf(metin);
if (index < 0)
continue;
else
{
count[index]++;
}
}
for (int i = 0; i < count.Length; i++)
{
if (count < 1)
continue;
else
{
Console.WriteLine(karakterler + " " +count);
}
}
Console.ReadKey();
}
}[/CODE]