Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[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
Autor Wiadomość
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?
C/C++
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
void PolskieZnaki();
string cin_good();
string cin_fail();

int main()
{
    PolskieZnaki();
    float a, b, c;
    ///Wczytywanie 1 liczby
    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.
P-101626
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źć :/
P-101644
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)
C/C++
int main()
{
    PolskieZnaki();
    float a;
    ///Wczytywanie 1 liczby
    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...
C/C++
int main()
{
    PolskieZnaki();
    float a;
    ///Wczytywanie 1 liczby
    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.
P-101647
« 1 »
  Strona 1 z 1