Ogólnie pracuję nad swoimi zdolnościami językowymi, a konkretniej to nad wymową z angielskiego. I jedno z ćwiczeń (poza normalną rozmową z kimś) polega na tym, że słucham audiobooka jakiejś książki/czegokolwiek zatrzymuję lektora po zdaniu i powtarzam zanim patrząc się dodatkowo na tekst (nagrywając się na dyktafon). i tak do końca rozdziału. Po czasie stwierdziłem, że żeby nauka była bardziej świadoma dla mnie i efektywniejsza, zamiast mieć przed sobą normalny tekst, warto byłoby mieć jego transkrypcje fonetyczną w alfabecie fonetycznym IPA, który znam i jest mi łatwiej dzięki niemu poprawnie wymawiać dany wyraz.
Jednak takie manualne wpisywanie wyrazu po wyrazie i przepisywanie tego do notatnika lub na kartkę przy wykorzystaniu np. słownika diki byłoby bardzo czasochłonne. Dlatego stwierdziłem, że warto byłoby napisać do tego program. Teraz problemy/wątpliwości, które napotkałem (ogólnie to jedyny język, który znam w miarę dobrze to C++, więc mówimy właśnie o nim):
-
Główny problem to to, że w ASCII nie ma takich znaków i jak np. skopiuję sobie ə to wyświetli się ? , z tego powodu chciałem zastąpić poszczególne znaki z IPA po prostu jakimiś szczególnymi/charakterystycznymi/podobnymi znakami ASCII np. dla wspomnianego ə mógłbym wykorzystać znak ASCII 0137 -> ë , co byłoby dla mnie dość intuicyjne i nie przeszkadzałoby mi to, ale gdy wpiszę do swojego programu, żeby wyświetlił mi go to zamiast tego w konsoli dostaję ->
, czyli jakiś zupełnie inny znak, choć nie wiem czemu. Używam "Dev C++". Wiecie w takim razie jak mógłbym uzyskać te znaki IPA lub z jakiego powodu znak ASCII o numerze 137 jest inaczej wyświetlany w konsoli? Ewentualnie program mógłby nie wyświetlać tego w konsoli tylko zapisywać do pliku i zaraz zobaczę, czy jak zapisze to do pliku to też będą problemy z innym wyświetlaniem. -
Drugi problem, a właściwie pytanie, bo w najprostszej wersji program ma po prostu czekać na podanie wyrazu po angielsku w konsoli, następnie odszukiwać w bazie słów ten wyraz, czyścić konsolę i wyświetlać pisownię tego wyrazu w alfabecie fonetycznym, czyli tak:
#include <iostream>
using namespace std;
int main() {
string tekst;
cin >> tekst;
system("cls");
if (tekst=="previous")
{
cout<<"pri:viəs";
}
else if(tekst==...)
{
cout<<"...";
}
// itd. dla innych wyrazów
return 0;
}
i powiedzmy, że no będę po prostu rozszerzał samemu tą bazę poprzez manualne wklepywanie (co oczywiście i tak jest nieuniknione, ale dzięki temu pewnie trochę zapamiętam) tj. przepisywanie z diki, wpisywanie kolejnego else if'a i kompilację i powstanie takich if/else if setki/tysiące to raczej działanie tego programu nie będzie zbyt szybkie? A więc macie pomysł jak zrealizować to w inny sposób?
PS: A docelowo program ma działać tak, że ja kopiuję tekst z ebook'a powiedzmy, że jest to aplikacja desktopowa, więc klikam w button'a konwertuj i po prostu program bierze sobie kolejne wyrazy z okienka z tym tekstem tj. czyta kolejne litery gdy jest spacja lub . kopiuje to do bufora, żeby utworzyć wyraz, przeszukuje tą bazę i zamienia na IPA tak długo aż zamieni cały tekst i wyświetla go w innym oknie.
Ogólnie sprawa wygląda teraz tak, jak pisałem zamieniłem wyświetlanie w konsoli na zapisywanie do pliku, a więc taki kod:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
std::string tekst;
cin >> tekst;
system("cls");
fstream plik( "plik.txt", ios::out );
if( plik.good() == true )
{
if(tekst=="previous")
{
plik<<"previous ə ë";
}
plik.close();
}
return 0;
}
I w pliku wynikowym, a właściwie już w samym edytorze zamiast ə jest ?, a ë wyświetla się prawidłowo w pliku jako ë. I jak skopiuję ə bezpośrednio do pliku to nie ma problemu z jego wyświetlaniem, a więc istniałaby możliwość żeby w pliku wynikowym wyświetlały się znaki alfabetu IPA, ale nie wiem jak wprowadzić je do edytora Dev C++, bo z każdą próbą skopiowania np. tego ə pojawia się znak zapytania w wyniku czego w pliku też jest znak zapytania.

