rendered paste body//TÜRKÇE METNİ HECELEME PROGRAMI
//Bu program Hüseyin ÇAKANLI tarfından
//11.02.2012 tarihinde yazıldı.
//Visual C# ile test edilmiştir.
using System;
namespace ConsoleApplication1
{
class Program1
{
static char[] sesli = { 'A', 'a', 'E', 'e', 'İ', 'i', 'I', 'ı', 'Ü', 'ü', 'U', 'u', 'Ö', 'ö', 'O', 'o' };
static char[] sessiz = { 'B', 'b', 'C', 'c', 'Ç', 'ç', 'D', 'd', 'F', 'f', 'G', 'g', 'Ğ', 'ğ', 'H', 'h', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'P', 'p', 'R', 'r', 'S', 's', 'Ş', 'ş', 'T', 't', 'V', 'v', 'Y', 'y', 'Z', 'z' };
static char[] sembol = { ',', '"', '!', '^', '.', ':', ';', '?', '-', '_', '(', ')', '[', ']', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
static bool sembolmu(char harf)
{
foreach (char hrf in sembol)
{
if (hrf == harf) { return true; break; }
}
return false;
}
static bool seslimi(char harf)
{
foreach (char hrf in sesli)
{
if (hrf == harf) { return true; break; }
}
return false;
}
static bool sessizmi(char harf)
{
foreach (char hrf in sessiz)
{
if (hrf == harf) { return true; break; }
}
return false;
}
static void Main(string[] args)
{
string ifade, sonuc;
int i ;
//HECELEME ALGORİTMASI
while(true)
{
Console.Clear();
Console.WriteLine("Hecelenecek Cümleyi Giriniz :");
Console.WriteLine();
ifade = Console.ReadLine();
sonuc = "";
do
{
i = 0; ifade = ifade.Trim();
//İlk harf sembol
if (sembolmu(ifade[i])) { ifade = ifade.Substring(i + 1); continue; }
//kalan 2 harfli son hecemi
if (ifade.Length==2) { sonuc = sonuc + ifade[i] + ifade[i + 1]; break; }
//kalan 2 harfli son hecemi, sonda nokta olan.
if (ifade.Length == 3 && sembolmu(ifade[i + 2])) {sonuc = sonuc + ifade[i] + ifade[i + 1]; break;}
//kalan 3 harfli son hecemi
if (ifade.Length == 3) { sonuc = sonuc + ifade[i] + ifade[i + 1] + ifade[i + 2]; break; }
//kalan 3 harfli son hecemi, sonda nokta olan.
if (ifade.Length == 4 && sembolmu(ifade[i+3])) { sonuc = sonuc + ifade[i] + ifade[i + 1] + ifade[i + 2];break;}
//ilk harf sesli ise
if (seslimi(ifade[i]))
{
//ikinci sessiz üçüncü sesli ise sadece ilk harf hecedir
if (sessizmi(ifade[i + 1]) && seslimi(ifade[i + 2])) { sonuc = sonuc + ifade[i] + "-"; ifade = ifade.Substring(i + 1); continue; }
//ikinci boşluk ise sadece ilk harf hecedir
if ((ifade[i + 1] == ' ') || (sembolmu(ifade[i + 1]))) { sonuc = sonuc + ifade[i] + "-"; ifade = ifade.Substring(i + 1); continue; }
//ikinci sessiz üçüncü sessiz dördüncü sesli ise 2 harf hecedir
if (sessizmi(ifade[i + 1]) && sessizmi(ifade[i + 2]) && seslimi(ifade[i + 3]))
{
sonuc = sonuc + ifade[i] + ifade[i + 1] + "-"; ifade = ifade.Substring(i + 2); continue;
}
//ikinci sessiz üçüncü boşluk ise 2 harf hecedir
if ((sessizmi(ifade[i + 1]) && ifade[i + 2] == ' ') || sembolmu(ifade[i + 2]))
{
sonuc = sonuc + ifade[i] + ifade[i + 1] + "-"; ifade = ifade.Substring(i + 2); continue;
}
//ikinci sessiz üçüncü sessiz dördüncü sessiz ise 3 harf hecedir
if (sessizmi(ifade[i + 1]) && sessizmi(ifade[i + 2]) && sessizmi(ifade[i + 3]))
{
sonuc = sonuc + ifade[i] + ifade[i + 1] + ifade[i + 2] + "-";
ifade = ifade.Substring(i + 3); continue;
}
//ikinci sessiz üçüncü sessiz dördüncü boşluk ise 3 harf hecedir
if ((sessizmi(ifade[i + 1]) && sessizmi(ifade[i + 2]) && ifade[i + 3] == ' ') || (sembolmu(ifade[i + 3])))
{
sonuc = sonuc + ifade[i] + ifade[i + 1] + ifade[i + 2] + "-";
ifade = ifade.Substring(i + 3); continue;
}
}
//ilk harf sessiz ise
if (sessizmi(ifade[i]))
{
//ikinci sessiz üçüncü sembol
if ((sessizmi(ifade[i + 1])) && ((sembolmu(ifade[i + 2]) || ifade[i+2]==' ')))
{
sonuc = sonuc + ifade[i] + ifade[i + 1] + "-"; ifade = ifade.Substring(i + 3); continue;
}
//ikinci sesli üçüncü sesli ise 2 harf hecedir
if (seslimi(ifade[i + 1]) && seslimi(ifade[i + 2]))
{
sonuc = sonuc + ifade[i] + ifade[i + 1] + "-"; ifade = ifade.Substring(i + 3); continue;
}
//ikinci sesli üçüncü sessiz dördüncü sesli ise 2 harf hecedir
if (seslimi(ifade[i + 1]) && sessizmi(ifade[i + 2]) && seslimi(ifade[i + 3]))
{
sonuc = sonuc + ifade[i] + ifade[i + 1] + "-"; ifade = ifade.Substring(i + 2); continue;
}
//ikinci sesli üçüncü boşluk ise 2 harf hecedir
if ((seslimi(ifade[i + 1]) && ifade[i + 2] == ' ') || sembolmu(ifade[i + 2]))
{
sonuc = sonuc + ifade[i] + ifade[i + 1] + "-"; ifade = ifade.Substring(i + 2); continue;
}
if (i + 3 < ifade.Length)
{
//ikinci sesli üçüncü sessiz dördüncü sessiz beşinci sessiz ise 4 harf hecedir
if (seslimi(ifade[i + 1]) && sessizmi(ifade[i + 2]) && sessizmi(ifade[i + 3]) && sessizmi(ifade[i + 4]))
{
sonuc = sonuc + ifade[i] + ifade[i + 1] + ifade[i + 2] + ifade[i + 3] + "-";
ifade = ifade.Substring(i + 4); continue;
}
}
//ikinci sesli üçüncü sessiz dördüncü boşluk ise 3 harf hecedir
if ((seslimi(ifade[i + 1]) && sessizmi(ifade[i + 2]) && ifade[i + 3] == ' ') || (sembolmu(ifade[i + 3])))
{
sonuc = sonuc + ifade[i] + ifade[i + 1] + ifade[i + 2] + "-";
ifade = ifade.Substring(i + 3); continue;
}
if (i + 4 < ifade.Length)
{
//ikinci sesli üçüncü sessiz dördüncü sessiz beşinci boşluk ise 4 harf hecedir
if ((seslimi(ifade[i + 1]) && sessizmi(ifade[i + 2]) && sessizmi(ifade[i + 3]) && ifade[i + 4] == ' ') || (sembolmu(ifade[i + 4])))
{
sonuc = sonuc + ifade[i] + ifade[i + 1] + ifade[i + 2] + ifade[i + 3] + "-";
ifade = ifade.Substring(i + 3); continue;
}
}
//ikinci sesli üçüncü sessiz dördüncü sessiz beşinci sesli ise 3 harf hecedir
if (seslimi(ifade[i + 1]) && sessizmi(ifade[i + 2]) && sessizmi(ifade[i + 3]))
{
sonuc = sonuc + ifade[i] + ifade[i + 1] + ifade[i + 2] + "-";
ifade = ifade.Substring(i + 3); continue;
}
}
i = i + 1;
} while (ifade.Length>0);
Console.WriteLine(sonuc);
Console.WriteLine();
Console.WriteLine("Devam etmek için bir entere basınız");
Console.ReadLine();
}
}
}
}