Ĺadny brzuch
Robie sobie zadania przygotowawcze do spr z infy... jedno z nich polega na tłumaczeniu wpisanej frazy na jezyk takiego chochlika. Po paru minutach rozkminiania wpadlem na pomysl jak je zrobic i zrobilem je. Program dobrze działał(tak mi sie wydawalo). Wprowadziłem do zmiennej tekst ze spacjami. I co się okazało? Program działa dobrze tylko do miejsca przed spacją. No to zabrałem się do kminienia co jest nie tak i napisałem sobie taki program:
int main() { string n; cin>>n; cout<<n system("pause"); }
Odpalam go i wpisuje sobie jakis tekst ze spacją np. "ala ma kota". Teoretycznie to samo powinno sie wyświetlic. Ale wyświetla się tylko slowo "ala". Dlaczego?
Użytkownik Kamil Wajda edytował ten post 01 listopad 2007, 15:48
Poczytaj o getline()
Ok jeden problem rozwiązany, thx. Ale pojawił się drugi. Tresc zadania wygląda tak:
W Stumilowym Lesie zalągł się skrzat. Małe i wredne to było, jak nie przymierzając, pewien poseł w naszym parlamencie. Nawet spokojnie nie było jak się mleka napić, aby nie ryzykować spożycia mocznika paskudnego nieludzia... Krzyś wraz z Puchatkiem i resztą ferajny postanowili sie z nim rozmówić, aby opuścił na zawsze miejsce ich spotkań i zabaw. Ale był pewien problem: skrzat mówił nieco odmiennym językiem od normalnym lokatorów Lasu. Najpierw mówił wszelkie samogłoski, a dopiero później spółgłoski. Dlatego też np. popularne zagajenie "Pogięło cię?" brzmiało w wydaniu skrzata tak: "Oięoię pgłc?" Napisz program, który umożliwi tłumaczenie mowy mieszkańców Stumilowego Lasu na mowę skrzata.
Mój program do tego wygląda tak:
#include using namespace std; void tlumacz(string n) { string b=""; string c=""; int a=n.size(); char samogloski[] = {'A', 'a', 'Ą', 'ą', 'E', 'e', 'Ę', 'ę', 'I', 'i', 'O', 'o', 'Ó', 'ó', 'U', 'u', 'Y', 'y'}; a=n.size(); for(int i=0; i { for(int j=0; j { if(n[i]==samogloski[j]) { b=b+n[i]; n[i]=' '; } } } a=n.size(); for(int k=0; k if(n[k]==' ') n.erase(k, 1); cout<[b]<<' '<< } int main() { string n; getline(cin, n); tlumacz(n); system("pause"); }[/b]
Niby wszystko jest dobrze... Ale spróbójcie sobie wpisac tekst zawierający ó,ę, np. "Kót ma alę". Wynik zamiast "óaaę ktml" będzie "aa Kótm lę". A przecież ę, ó są w tablicy, to dlaczego program ich nie uzwględnia? A poza tym skąd biorą się dodatkowe spacje, skoro ja je w kodzie usuwam?
blad z polskimi literami moze miec zwiazek z kodowaniem polskich znakow wlasnie, ja bym uzyl wide stringow z unicode - pozamieniac odpowiedniki na
wstring, wchar_t, wcin i wcout,a przed kazda stala znakowa wpisuj L np
string a = L"jakis tam tekst w unicode w ktorym ogonki dzialaja dobrze";
i rozumiem ze tu:
for(int i=0; i
{
for(int j=0; j
i
#include
ucielo kod?
Użytkownik Deadeye edytował ten post 02 listopad 2007, 01:00
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
int main() { string n; cin>>n; cout<<n system("pause"); }
Odpalam go i wpisuje sobie jakis tekst ze spacją np. "ala ma kota". Teoretycznie to samo powinno sie wyświetlic. Ale wyświetla się tylko slowo "ala". Dlaczego?
Użytkownik Kamil Wajda edytował ten post 01 listopad 2007, 15:48
Poczytaj o getline()
Ok jeden problem rozwiązany, thx. Ale pojawił się drugi. Tresc zadania wygląda tak:
W Stumilowym Lesie zalągł się skrzat. Małe i wredne to było, jak nie przymierzając, pewien poseł w naszym parlamencie. Nawet spokojnie nie było jak się mleka napić, aby nie ryzykować spożycia mocznika paskudnego nieludzia... Krzyś wraz z Puchatkiem i resztą ferajny postanowili sie z nim rozmówić, aby opuścił na zawsze miejsce ich spotkań i zabaw. Ale był pewien problem: skrzat mówił nieco odmiennym językiem od normalnym lokatorów Lasu. Najpierw mówił wszelkie samogłoski, a dopiero później spółgłoski. Dlatego też np. popularne zagajenie "Pogięło cię?" brzmiało w wydaniu skrzata tak: "Oięoię pgłc?" Napisz program, który umożliwi tłumaczenie mowy mieszkańców Stumilowego Lasu na mowę skrzata.
Mój program do tego wygląda tak:
#include using namespace std; void tlumacz(string n) { string b=""; string c=""; int a=n.size(); char samogloski[] = {'A', 'a', 'Ą', 'ą', 'E', 'e', 'Ę', 'ę', 'I', 'i', 'O', 'o', 'Ó', 'ó', 'U', 'u', 'Y', 'y'}; a=n.size(); for(int i=0; i { for(int j=0; j { if(n[i]==samogloski[j]) { b=b+n[i]; n[i]=' '; } } } a=n.size(); for(int k=0; k if(n[k]==' ') n.erase(k, 1); cout<[b]<<' '<< } int main() { string n; getline(cin, n); tlumacz(n); system("pause"); }[/b]
Niby wszystko jest dobrze... Ale spróbójcie sobie wpisac tekst zawierający ó,ę, np. "Kót ma alę". Wynik zamiast "óaaę ktml" będzie "aa Kótm lę". A przecież ę, ó są w tablicy, to dlaczego program ich nie uzwględnia? A poza tym skąd biorą się dodatkowe spacje, skoro ja je w kodzie usuwam?
blad z polskimi literami moze miec zwiazek z kodowaniem polskich znakow wlasnie, ja bym uzyl wide stringow z unicode - pozamieniac odpowiedniki na
wstring, wchar_t, wcin i wcout,a przed kazda stala znakowa wpisuj L np
string a = L"jakis tam tekst w unicode w ktorym ogonki dzialaja dobrze";
i rozumiem ze tu:
for(int i=0; i
{
for(int j=0; j
i
#include
ucielo kod?
Użytkownik Deadeye edytował ten post 02 listopad 2007, 01:00