• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zliczanie polskich znaków z pliku tekstowego.

+1 głos
91 wizyt
pytanie zadane 1 czerwca w C i C++ przez drequ Nowicjusz (130 p.)

Napisz program, który wczyta dane z pliku tekstowego, a następnie zliczy wystąpienia liter pełnego polskiego alfabetu i zapisze wyniki do pliku tekstowego. O ile jeśli chodzi o alfabet łaciński nie miałem najmniejszego problemu, to zastanawiam się jak zmodyfikować kod, aby zliczało mi również polskie znaki.

#include <iostream>
#include <fstream>
#include <string>
#include <cctype>

using namespace std;

int main()
{
    int i;
    string napis;
    char ch;
    int Liczniki[35];
    for(i=0;i<35;i++)
    {
        Liczniki[i]=0;
    }
    ifstream wejscie("zliczanie.txt");
    while(!wejscie.eof())
    {
        getline(wejscie,napis);
        for(i=0;i<napis.size();i++)
        {
            ch=toupper(napis[i]);
            if (ch>='A' && ch<='Z') Liczniki[ch-'A']++;
        }
    }
    wejscie.close();
    for(i=0;i<35;i++)
    {
        if(Liczniki[i]>0)
        {
            cout<<char(i+'A')<<" - ";
            cout<<Liczniki[i]<<endl;
        }
    }
    return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 1 czerwca przez j23 Mędrzec (166,040 p.)
edycja 1 czerwca przez j23

Daj na początku programu (przy założeniu, że używasz Windowsa, a plik jest zapisany w kodowaniu Windows-1250):

setlocale(LC_CTYPE, ".ACP");

a litery sprawdzaj funkcją isalpha.

 Liczniki[ch-'A']++;

W przypadku polskich liter takie indeksowanie nie przejdzie, ponieważ znaki diakrytyczne mają kody powyżej 127, co w przypadku typu char, który z reguły jest typem ze znakiem, może dać indeksy ujemne. Użyj std::map lub nawet tablicy int[256] (pamiętaj o rzutowaniu char na unsigned char).

 

 while(!wejscie.eof())
    {
        getline(wejscie,napis);

Nie nauczą się...

while(getline(wejscie,napis)) {
   ...
}

 

komentarz 1 czerwca przez NewEraOfPeace Gaduła (4,790 p.)

Typ `char` nie jest typem ze znakiem. Standard tego nie gwarantuje.

 

komentarz 1 czerwca przez j23 Mędrzec (166,040 p.)
Ha, wiedziałem, że się ktoś do tego przyczepi :P

Poprawiłem nieco to zdanie.

Podobne pytania

0 głosów
0 odpowiedzi 419 wizyt
pytanie zadane 1 sierpnia 2018 w PHP przez lukii1717 Nowicjusz (140 p.)
0 głosów
1 odpowiedź 2,410 wizyt
pytanie zadane 17 maja 2017 w C i C++ przez chacken Użytkownik (820 p.)
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

85,728 zapytań

134,512 odpowiedzi

298,568 komentarzy

56,635 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...