[Poziom 1, lekcja 9] Moja wersja zadania :P @Edit - dziwny błąd przy użyciu polskich znaków
Ostatnio zmodyfikowano 2014-01-08 22:03
Kopczak1995 Temat założony przez niniejszego użytkownika |
[Poziom 1, lekcja 9] Moja wersja zadania :P @Edit - dziwny błąd przy użyciu polskich znaków » 2014-01-08 19:51:33 Witam. Robiłem zadanie z wyżej wymienionej części kursu ale uznałem, że trochę pokombinuję i dodam nieco do treści zadania aby było trudniej :P Mianowicie postanowiłem zamiast wyświetlać trywialne 0 lub 1 - zrobić wyświetlanie tekstu w postaci "TAK" i "NIE". Czyli kod wynikowy miał być przykładowo o taki: Liczba 1 to: a Czy udalo sie wczytac? - NIE Czy użytkownik coś źle wpisał? - TAK
Ku memu zdziwieniu nie chce mi się wyświetlać druga część odpowiedzi. Wyświetla się do tego momentu: Liczba 1 to: a Czy udalo sie wczytac? - NIE Czy użytkownik coś źle wpisał? -
Oto kod programiku. Co skopałem? #include <iostream> #include <cstdlib> #include <string> using namespace std; void PolskieZnaki(); string cin_good(); string cin_fail();
int main() { PolskieZnaki(); float a, b, c; cout << "Liczba 1 to: "; cin >> a; cout << "Czy udalo sie wczytac? - " << cin_good() << "." << endl; cout << "Czy użytkownik coś źle wpisał? - " << cin_fail() << endl << endl; cin.clear(); cin.sync(); return 0; } string cin_good() { bool wynik = cin.good(); if( wynik == true ) { string tekst = "TAK"; return tekst; } else if( wynik == false ) { string tekst = "NIE"; return tekst; } };
string cin_fail() { bool wynik = cin.fail(); if( wynik == true ) { string tekst = "TAK"; return tekst; } else if( wynik == false ) { string tekst = "NIE"; return tekst; } }; void PolskieZnaki() { system( "chcp 65001" ); system( "cls" ); }
@Edit2 Tylko nieco zmieniłem kod wynikowy, bo nie tak miałem w kodzie źródłowym. |
|
Kopczak1995 Temat założony przez niniejszego użytkownika |
» 2014-01-08 21:27:28 Żadnych propozycji? Jestem otwarty na każdy hejt o ile dzięki temu uda mi się doprowadzić program do stanu używalności. Nie proszę o wiele - wystarczy naprowadzenie mnie na źródło błędu, cokolwiek, bo sam nigdzie tego nie mogę znaleźć :/ |
|
Kopczak1995 Temat założony przez niniejszego użytkownika |
??? » 2014-01-08 22:03:36 Odkryłem przed chwilą dziwną zależność, której zupełnie nie ogarniam... Modyfikowałem kod jak głupi i doszedłem do tego, że program jest logicznie poprawny, a błąd pojawia się gdy przed funkcją mam jakieś polskie znaki... Zupełnie tego nie rozumiem. Coś takiego działa: (nie chciałem całości już wklejać i dałem jedynie maina) int main() { PolskieZnaki(); float a; cout << "Liczba 1 to: "; cin >> a; cout << "Czy udalo sie wczytac? - " << cin_good() << std::endl; cout << "Czy uzytkownik cos zle wpisal? - " << cin_fail() << std::endl; cin.clear(); cin.sync(); return 0; }
A to już wyświetla niepoprawnie... int main() { PolskieZnaki(); float a; cout << "Liczba 1 to: "; cin >> a; cout << "Czy udało się wczytać? - " << cin_good() << std::endl; cout << "Czy użytkownik coś źle wpisał? - " << cin_fail() << std::endl; cin.clear(); cin.sync(); return 0; }
Czy ktoś jest mi w stanie wytłumaczyć to zjawisko? Jeśli to istotne to dodam, że dokument jest zapisany w UTF-8 i zwyczajnie wymusiłem zmianę na tą stronę kodową w konsoli. |
|
« 1 » |