Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <stdio.h>
- #include <fstream>
- #include <cctype>
- #include <Windows.h>
- //#include <locale>
- using namespace std;
- char LatToCyr(char r);
- char CyrToLat(char r);
- int main()
- {
- //setlocale(LC_CTYPE, "rus");
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- short int chk = 0;
- short int answ = 0;
- cout << "[ T R A N S L I T ] v1.1\n\n" << "This program can code/decode your Cyrillic text to/from the Latin\n\n";
- do {
- if (chk == 1) cout << "\nBad answer, select one correct please!\n\n";
- chk = 0;
- cout << "Select option:\n\n[1] Code Cyrillic text to the Latin"
- << "\n[2] Decode Cyrillic text from the Latin\n\nYour answer: ";
- cin >> answ;
- if (answ != 1 && answ != 2) chk = 1;
- } while (chk == 1);
- switch (answ) {
- case 1:
- {
- short int answ_c1 = 0;
- do {
- cout << "\nDo you want to:\n\n[1] Open file with Cyrillic text\n\n[2] Enter it yourself\n\nYour answer: ";
- cin >> answ_c1;
- } while (answ_c1 != 1 && answ_c1 != 2);
- if (answ_c1 == 1){
- char file_name[30];
- cout << "\nEnter file name or directory\n(if file and program located in different places): ";
- cin >> file_name;
- ifstream from(file_name, ios::in || ios::binary);
- if (!from)
- {
- cout << "\nNo such file or directory\n";
- system("pause");
- return 1;
- }
- else{
- short int answ_c1_o = 0;
- do {
- cout << "\nSelect option:\n\n[1] Output on the screen\n[2] Output to the file\n\nYour answer: ";
- cin >> answ_c1_o;
- } while (answ_c1_o != 1 && answ_c1_o != 2);
- switch (answ_c1_o){
- case 1:{
- char buf;
- cout << "\nDecoded cyrillic text:\n";
- while (from.get(buf))
- cout << CyrToLat(buf);
- }
- case 2:{
- char file_name[30];
- cout << "\nEnter file name(name.txt e.g.) for save in program directory\nor full path(D:/name.txt e.g.): ";
- cin >> file_name;
- ofstream to(file_name);
- if (!to){
- cout << "Error of writing";
- return 1;
- }
- else{
- char buf;
- to << "Decoded cyrillic text:\n";
- while (from.get(buf))
- to << CyrToLat(buf);
- }
- }
- }
- }
- }
- if (answ_c1 == 2){
- char input[501];
- char *ptr = input;
- cout << "\nCyrillic text: ";
- fflush(stdin);
- gets_s(input, 500);
- cout << "\n\nDecoded latin text:\n";
- while (*ptr){
- cout << CyrToLat(*ptr);
- ptr++;
- }
- }
- break;
- }
- case 2:
- {
- short int answ_c2 = 0;
- do {
- cout << "\nDo you want to:\n\n[1] Open file with Latin translit\n\n[2] Enter it yourself\n\nYour answer: ";
- cin >> answ_c2;
- } while (answ_c2 != 1 && answ_c2 != 2);
- if (answ_c2 == 1){
- char file_name[30];
- cout << "\nEnter file name or directory\n(if file and program located in different places): ";
- cin >> file_name;
- ifstream from(file_name, ios::in || ios::binary);
- if (!from)
- {
- cout << "\nNo such file or directory\n";
- system("pause");
- return 1;
- }
- else{
- char buf;
- cout << "\nDecoded cyrillic text:\n";
- while (from.get(buf))
- cout << LatToCyr(tolower(buf));
- }
- }
- if (answ_c2 == 2){
- char input[501];
- char *ptr = input;
- cout << "\nLatin text: ";
- fflush(stdin);
- gets_s(input, 500);
- cout << "\n\nDecoded cyrillic text:\n";
- while (*ptr){
- cout << LatToCyr(tolower(*ptr));
- ptr++;
- }
- }
- break;
- }
- }
- cout << endl << endl;
- system("pause");
- return 0;
- }
- char LatToCyr(char r)
- {
- char exclusion[2] = "'";
- switch (r)
- {
- case 'q':
- return 'й';
- break;
- case 'w':
- return 'ц';
- break;
- case 'e':
- return 'у';
- break;
- case 'r':
- return 'к';
- break;
- case 't':
- return 'е';
- break;
- case 'y':
- return 'н';
- break;
- case 'u':
- return 'г';
- break;
- case 'i':
- return 'ш';
- break;
- case 'o':
- return 'щ';
- break;
- case 'p':
- return 'з';
- break;
- case 'a':
- return 'ф';
- break;
- case 's':
- return 'ы';
- break;
- case 'd':
- return 'в';
- break;
- case 'f':
- return 'а';
- break;
- case 'g':
- return 'п';
- break;
- case 'h':
- return 'р';
- break;
- case 'j':
- return 'о';
- break;
- case 'k':
- return 'л';
- break;
- case 'l':
- return 'д';
- break;
- case 'z':
- return 'я';
- break;
- case 'x':
- return 'ч';
- break;
- case 'c':
- return 'с';
- break;
- case 'v':
- return 'м';
- break;
- case 'b':
- return 'и';
- break;
- case 'n':
- return 'т';
- break;
- case 'm':
- return 'ь';
- break;
- case ',':
- return 'б';
- break;
- case '.':
- return 'ю';
- break;
- case '/':
- return '.';
- break;
- case ' ':
- return ' ';
- break;
- case '[':
- return 'х';
- break;
- case ']':
- return 'ъ';
- break;
- case ';':
- return 'ж';
- break;
- case '`':
- return 'ё';
- break;
- case '?':
- return ',';
- break;
- case '&':
- return '?';
- break;
- }
- if (r == exclusion[0]) return 'э';
- else
- return r;
- }
- char CyrToLat(char r)
- {
- char exclusion[2] = "'";
- switch (r)
- {
- case 'й':
- return 'q';
- break;
- case 'ц':
- return 'w';
- break;
- case 'у':
- return 'e';
- break;
- case 'к':
- return 'r';
- break;
- case 'е':
- return 't';
- break;
- case 'н':
- return 'y';
- break;
- case 'г':
- return 'u';
- break;
- case 'ш':
- return 'i';
- break;
- case 'щ':
- return 'o';
- break;
- case 'з':
- return 'p';
- break;
- case 'ф':
- return 'a';
- break;
- case 'ы':
- return 's';
- break;
- case 'в':
- return 'd';
- break;
- case 'а':
- return 'f';
- break;
- case 'п':
- return 'g';
- break;
- case 'р':
- return 'h';
- break;
- case 'о':
- return 'j';
- break;
- case 'л':
- return 'k';
- break;
- case 'д':
- return 'l';
- break;
- case 'я':
- return 'z';
- break;
- case 'ч':
- return 'x';
- break;
- case 'с':
- return 'c';
- break;
- case 'м':
- return 'v';
- break;
- case 'и':
- return 'b';
- break;
- case 'т':
- return 'n';
- break;
- case 'ь':
- return 'm';
- break;
- case 'б':
- return ',';
- break;
- case 'ю':
- return '.';
- break;
- case 'ж':
- return ';';
- break;
- case 'х':
- return '[';
- break;
- case 'ъ':
- return ']';
- break;
- case 'ё':
- return '`';
- break;
- }
- if (r == 'э') return exclusion[0];
- else
- return r;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement