[C++Builder]Polskie znaki w konsoli.

Forum dotyczące ogólnie pojętego programowania - algorytmów, struktur danych, narzędzi programistycznych, itp - głównie w kontekście komputerów PC.
ODPOWIEDZ
Awatar użytkownika
zenzee
-
Posty: 75
Rejestracja: 25 lip 2008, 10:41
Lokalizacja: Samoa Zachodnie

[C++Builder]Polskie znaki w konsoli.

Post autor: zenzee » 20 wrz 2009, 0:38

Witam.
Napisałem programik,który ma za zadanie wyświetlić ogonki w mojej konsoli.
Czy ten produkt może być, czy tylko mi się zdaje. :razz:
Pozdrawiam.

Kod: Zaznacz cały

#include<iostream>
#include<string>
using namespace std;
string Konwersja(const char* const Tablica_zrodlowa);

int main()
{
    const char* const Zrodlo = "Łukasz wydeptał ścieżkę wŚród wysokich traw.";
    cout<<Konwersja(Zrodlo);
    cin.get();
    return 0;
}

string Konwersja(const char* const Tablica_zrodlowa)
{
    const int znaki[18]= {165,164,134,143,169,168,136,157,228,227,
    162,224,152,151,171,141,190,189};
    const char* const polskie = "ąĄćĆęĘłŁńŃóÓśŚźŹżŻ";
    int Len1 = strlen(Tablica_zrodlowa);
    int Len2 = (sizeof(znaki)/sizeof(int));
    string Tekst_po_zamianie;
  // ----cała robota----------
    for(int s = 0;s<Len1;++s)
    {
        if(Tablica_zrodlowa[s]>0)Tekst_po_zamianie += Tablica_zrodlowa[s];
    for(int a = 0;a < Len2;++a)
        if(Tablica_zrodlowa[s] == polskie[a])
          Tekst_po_zamianie += znaki[a];
    }
    return Tekst_po_zamianie;
    }
  //---------end----------------  

Awatar użytkownika
bsw
Użytkownik
Posty: 100
Rejestracja: 14 kwie 2008, 13:13
Lokalizacja: Małopolska
Kontakt:

Post autor: bsw » 21 wrz 2009, 13:24

Zamiast wyważać otwarte drzwi wystarczyło użyć funkcji:

CharToOem()
lub
CharToOemBuff()

Polecam lekturę "Win32 Programmer's Reference"
(jeśli masz pełnego builder'a to masz to na dysku)

Awatar użytkownika
zenzee
-
Posty: 75
Rejestracja: 25 lip 2008, 10:41
Lokalizacja: Samoa Zachodnie

Post autor: zenzee » 21 wrz 2009, 20:40

Może setlocale(LC_ALL,""). :mrgreen:
Daruj sobie takie uwagi. :evil:
Nie oto tutaj chodzi. :wink:

Awatar użytkownika
bsw
Użytkownik
Posty: 100
Rejestracja: 14 kwie 2008, 13:13
Lokalizacja: Małopolska
Kontakt:

Post autor: bsw » 22 wrz 2009, 8:31

Oświeć mnie - bo chyba nie rozumiem "o co tutaj chodzi" ?

Awatar użytkownika
zenzee
-
Posty: 75
Rejestracja: 25 lip 2008, 10:41
Lokalizacja: Samoa Zachodnie

Post autor: zenzee » 22 wrz 2009, 16:41

O samą przyjemność tworzenia. :mrgreen:
Napisz może czy wielkość tablicy "znaki " dobrze określiłem,ochrzań za formatowanie,a nie tam...
Pozdrawiam. :wink:

Edit:
Sam znalazłem mały bląd.
W kodzie napisane było:

Kod: Zaznacz cały

const int znaki[18]....
Pewnie powinno być(chyba):

Kod: Zaznacz cały

const int znaki[].....
Edit.
No i pozbyłem się tablicy "polskie":

Kod: Zaznacz cały

string Konwersja(const char* const Tablica_zrodlowa)
{
    const int znaki[]= {165,164,134,143,169,168,136,157,228,227,
    162,224,152,151,171,141,190,189,'ą','Ą','ć','Ć','ę','Ę',
    'ł','Ł','ń','Ń','ó','Ó','ś','Ś','ź','Ź','ż','Ż'};
    int Len1 = strlen(Tablica_zrodlowa);
    int Len2 = (sizeof(znaki)/sizeof(int));

    string Tekst_po_zamianie;
    // ----cała robota----------

   	for(int s = 0;s<Len1;++s)
    {
        if(Tablica_zrodlowa[s]>0)Tekst_po_zamianie += Tablica_zrodlowa[s];
    for(int a = 0;a <(Len2/2);++a)
        if(Tablica_zrodlowa[s] == znaki[a+18])
           Tekst_po_zamianie += znaki[a];
	}
	return Tekst_po_zamianie;
    }
   //---------end----------------

ODPOWIEDZ