//Készítette:       Gregorics Tibor
//Dátum:            2009.01.24.
//Feladat:          Ékezetes szöveg táviratú stílusúvá alakítása

#include <fstream>
#include <iostream>
#include <sstream>

using namespace std;

string konverzio(char ch);

//Feladat: 	        Alakítsuk át egy fájlban elhelyezett szöveg ékezetes magánhangzóit távirati stílusúvá, és
//                  az eredményt helyezzük el egy fájlban.
//Bemenő adatok:    ifstream x  - átalakítandó szöveges fájl
//Kimenő adatok:    ofstream y  - átalakított szöveges fájl
//Tevékenység:	    A fájlok sikeres nyitása illetve létrehozása után egyenként másolja át
//                  az input fájl karaktereit az output fájlba, de az ékezetes karaktereket
//                  a megfelelő formára alakítva.
int main()
{
    ifstream x("inp.txt");
    if ( x.fail() ){
        cout<<"Nincs input file"<<endl;
        char ch; cin>>ch;
        exit(1);
    }

    ofstream y("out.txt");
    if ( y.fail() ){
        cout<<"Nem lehet letrehozni az output file-t"<<endl;
        char ch; cin>>ch;
        exit(1);
    }

    char dx;
    for(x.get(dx); !x.fail(); x.get(dx)){
        y << konverzio(dx);
    }

  return 0;
}

//Feladat: 	        Megadja egy betűnek a távirati megfelelőjét.
//Bemenő adatok:    ch  - átalakítandó karakter
//Kimenő adatok:    string (visszatérési érték) - átalakított alak
//Tevékenység:	    Egy outputstringstream-be tölti be az aktuális karakter távirati megfelelőjét.
string konverzio(char ch)
{
    ostringstream str;
    switch (ch) {
        case 'á' : str <<  "aa"; break;
        case 'é' : str <<  "ee"; break;
        case 'í' : str <<  'i';  break;
        case 'ó' : str <<  'o';  break;
        case 'ö' :
        case 'ő' : str <<  "oe"; break;
        case 'ú' : str <<  'u';  break;
        case 'ü' :
        case 'ű' : str <<  "ue"; break;
        case 'Á' : str <<  "Aa"; break;
        case 'É' : str <<  "Ee"; break;
        case 'Í' : str <<  'I';  break;
        case 'Ó' : str <<  'O';  break;
        case 'Ö' :
        case 'Ő' : str <<  "Oe"; break;
        case 'Ú' : str <<  'U';  break;
        case 'Ü' :
        case 'Ű' : str <<  "Ue"; break;
        default  : str << ch;
    }
    return str.str();
}
