Chciałem napisać program, który zmieni całe zdanie na emotki z discorda w kształcie odpowiadającym literze. Czyli a = :regional_indicator_a:, b = :regional_indicator_b:,.. itd. troche mnie przerosło więc zacząłem od wyrazu, zamiast zdań. Ale napotkałem problem odnośnie długości nazwy emotek w stringach w tablicy w drugim wymiarze, bo pierwszy wymiar działa.
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
string znaki[2][52]={{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q','R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', },
{':regional_indicator_a:', ':regional_indicator_b:', ':regional_indicator_c:', ':regional_indicator_d:', ':regional_indicator_e:', ':regional_indicator_f:', ':regional_indicator_g:', ':regional_indicator_h:', ':regional_indicator_i:', ':regional_indicator_j:', ':regional_indicator_k:', ':regional_indicator_l:',':regional_indicator_m:',
':regional_indicator_n:', ':regional_indicator_o:', ':regional_indicator_p:', ':regional_indicator_q:',':regional_indicator_r:', ':regional_indicator_s:', ':regional_indicator_t:', ':regional_indicator_u:', ':regional_indicator_v:', ':regional_indicator_w:', ':regional_indicator_x:', ':regional_indicator_y:', ':regional_indicator_z:',
':regional_indicator_a:', ':regional_indicator_b:', ':regional_indicator_c:', ':regional_indicator_d:', ':regional_indicator_e:', ':regional_indicator_f:', ':regional_indicator_g:', ':regional_indicator_h:', ':regional_indicator_i:', ':regional_indicator_j:', ':regional_indicator_k:', ':regional_indicator_l:',':regional_indicator_m:',
':regional_indicator_n:', ':regional_indicator_o:', ':regional_indicator_p:', ':regional_indicator_q:',':regional_indicator_r:', ':regional_indicator_s:', ':regional_indicator_t:', ':regional_indicator_u:', ':regional_indicator_v:', ':regional_indicator_w:', ':regional_indicator_x:', ':regional_indicator_y:', ':regional_indicator_z:'}};
string emotikowanie(string wyraz)
{
string wyraz2 = wyraz;
for(int i=0;i<wyraz.length();i++)
{
for(int n=0;n<52;n++)
{
if(wyraz[i]==znaki[0][n])
{
wyraz2[i] = znaki[1][n];
break;
}
}
}
return wyraz2;
}
int main()
{
string wyraz;
cout << "Podaj wyraz: ";
cin>>wyraz;
cout << emotikowanie(wyraz) << endl;
return 0;
}
W tablicy są oczywiście powielone znaki aby zamieniało duże, jak i małe litery. Nie chcę żeby któreś z nich czuły się dyskryminowane przez kompilator ;)
Po uruchomieniu sypie błędami z 2 wymiaru :D
Aby ominąć rozsypywanie się zastąpiłem typ tablicy na long, dzięki temu można sprawdzić czy działa cała reszta kodu, ale ze znikomym efektem zamiany liter :/