#include <iostream>
#include <stdio.h>
#include <termios.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include <locale>
using namespace std;
int getch(void)// зчитування з клавіатури одного символа
{
struct termios oldt, newt;
int ch;
tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
ch = getchar();
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
return ch;
}
bool kbhit()//функція котра дає сигнал true пoки нажата клавіша
{
termios term;
tcgetattr(0, &term);
termios term2 = term;
term2.c_lflag &= ~ICANON;
tcsetattr(0, TCSANOW, &term2);
int byteswaiting;
ioctl(0, FIONREAD, &byteswaiting);
tcsetattr(0, TCSANOW, &term);
return byteswaiting > 0;
}
void clear (void)//очистка консолі
{
cout << "\033[0d\033[2J";
}
string stInputLine="\0";//рядок вводу
string stOutputLine="\0";//рядок виводу
char fstInput()//Функція вводу
{
setlocale(LC_ALL, "Ukrainian");//Українська локалізація
char stInputLineElement='\0';//змінна котрій почерзі присвоюється символ введений з клави
while(true)//поки істина
{
if(kbhit())//якщо натинута будь яка клавіша...
{
stInputLineElement=getch();//...присвоїти змінній введений з клавіатури символ
stInputLine+=stInputLineElement;//і добавити вміст змінної до ря дка вводу
break;
}
else
{
break;
}
}
return stInputLineElement;// повертаємо main введений символ
}
class TranliterationClass
{
public:
void Tranliteration(char stInputSymbol)//
{
setlocale(LC_ALL, "Ukrainian");//Українська локаль
string sTinpSymbol="\0";//проміжний символ для переводу char d string обнуляється зкаждим циклом;
sTinpSymbol+=stInputSymbol;//присвоїти аргумент до змінної
//масив укр символів
string chSymbolMass[90] {"кс"," ","\n","'","А","а","Б","б","В","в","Г","г","Ґ","ґ","Д","д","Е","е","Є","є","Ж","ж","З","з","И","и","І","і","Ї","ї","Й","й","К","к","Л","л","М","м","Н","н","О","о","П","п","Р","р","С","с","Т","т","У","у","Ф","ф","Х","х","Ц","ц","Ч","ч","Ш","ш","Щ","щ","ь","Ю","ю","Я","я",".",",",";",":","-","_","=","+","(",")","1","2","3","4","5","6","7","8","9","0"};
//масив трансліт символів
string chTranslitMass[90]{"x"," ","\n","'","A","a","B","b","V","v","G","g","G`","g`","D","d","E","e","Ye","ye","Zh","zh","Z","z","Y","y","I","i","Yi","yi","J","j","K","k","L","l","M","m","N","n","O","o","P","p","R","r","S","s","T","t","U","u","F","f","H","h","C","c","Ch","ch","Sh","sh","Shch","shch","`","Yu","yu","Ya","ya",".",",",";",":","-","_","=","+","(",")","1","2","3","4","5","6","7","8","9","0"};
for(int i=0;i<89;i++)//цикл провірки
{
if(sTinpSymbol==chSymbolMass[i])//якщо введений символ відповідає символу в "і" масиві укр символів(цей код не працює)
{
stOutputLine+=chTranslitMass[i];//...то до рядка виводу додати символ "і" з трансліт масиву
}
if(sTinpSymbol==chTranslitMass[i])//якщо введений символ відповідає символу в "і" масиві трансліт символів(а цей код працює)
{
stOutputLine+=chSymbolMass[i];//...то до рядка виводу додати символ "і" з трансліт масиву
}
}
cout<<stOutputLine<<endl;//вивести на екран рядок виводу
}
};
int main( int nNumberOfArgs , char* pszArgs[ ] )
{
for(;;)//безкінеечний цикл
{
clock_t start, stop;
unsigned long t;//Таймер для стабілізації виводу (щоб немигали літери)
start = clock();
for(t=0;t<100000L;t++)
stop =clock();
clear();//Очистка екрану
TranliterationClass tc;
cout<<"Введіть текст кирилецею"<<endl;
char stInputLineElement=fstInput();//змінна котрій функція повертає значення ко жного введеного знаку
tc.Tranliteration(stInputLineElement);//виклик функції котрій належить транслітерація знаків
//з передачею введеного знака в якості аргумента
cout<<":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"<<endl;// понти для "приезжих"
cout<<stInputLine<<endl;//вивід рядка вводу
}
return 0;
}