👤

Potrzebuję na jutro ktoś coś?

Potrzebuję Na Jutro Ktoś Coś class=

Odpowiedź :

Odpowiedź:

#include <iostream>

#include <map>

#include <locale>

using namespace std;

void analiza_tekstu(const string &tekst){

   map<char, int> mapaWystapienZnakow;

   for(const char znak : tekst){

       mapaWystapienZnakow[znak]++;

   }

   for(const auto &[znak, liczbaWystapien] : mapaWystapienZnakow){

       if(liczbaWystapien == 1){

           cout << znak << " - " << liczbaWystapien << " raz" << std::endl;

       }else{

           cout << znak << " - " << liczbaWystapien << " razy" << std::endl;

       }

   }

}

int main() {

   setlocale(LC_CTYPE, "Polish");

   string tekst="w Szczebrzeszynie chrząszcz brzmi w trzcinie i Szczebrzeszyn z tego słynie";

   analiza_tekstu(tekst);

   return 0;

}

Wyjaśnienie:

Takie uwagi tylko:

1. U mnie polskie znaki nie dzałają i uważam, że nie powinno się w nich w ogóle korzystać, ale u Ciebie może działać

2. Kod jest po polsku czego również normalnie bym nie zrobił, ale taki był w poleceniu

3. skorzystałem z using namespace std z którego normalnie bym nie skorzystał, ale tak było w zadaniu

4. użyłem structured bindings przy wyświetlaniu zawartości mapy, dlatego upewnij się, że masz wersję c++17 lub nowszą. Jak nie masz, to pamiętaj, że zawartość mapy to pary (klucz, wartość) i jak chcesz wyświetlać to inaczej, to musisz się wtedy odwoływać do pary i pisać .first i .second co mega traci na czytelności moim (i nie tylko moim) zdaniem

Odpowiedź

1. i 2. załącznik zawierają kod źródłowy. Rozbiłam na dwie części aby można było minimalnie łatwiej czytać. 3. załącznik zawiera wynik wykonania.

Tak jak jest napisane działa pod  replit  i używając  g++  pod Linuxem. Nie działa używając  Code::Blocks,  Dev-C++  i  Visual Studio 2019.

cpp.sh, OnlineGDB,  jak i  Programiz  jeszcze nie obsługują polskich liter w nazwach zmiennych oraz funkcji, ale program na nich by działał. W 4. załączniku podałam jak musiałaby wyglądać funkcja  analiza_tekstu()  gdyby w nazwach identyfikatorów nie używać polskich liter. A w 5. załączniku wynik wykonania na platformie  Progamiz.

Wyjaśnienie

Niestety nie napisałeś jakiej używasz platformy (programu, środowiska) do pisania w C++. (A przy pisaniu akurat tego programu bardzo by się ta wiedza przydała...)

Nie napisałeś też co było na ostatnich lekcjach. Zadania zwykle właśnie się rozwiązuje używając materiału z ostatnich lekcji...

Istotna uwaga

Ustawienie  LC_CTYPE  nie ma wpływu na działanie programu. Natomiast ma wpływ ustawienie LC_COLLATE!

Umieściłam na końcu  analiza_tekstu()  wydruk informacji o środowisku. Jeżeli jest C (tak jak na zrzucie ekranu), to jest źle. Powinno być

   Locale is: LC_COLLATE=pl_PL

lub coś podobnego np. pl_PL.UTF-8.

Co znaczy źle? To znaczy, że polecenie  find  odpowiedzialne za wyszukiwanie nie odróżnia małych i dużych liter poza ASCII.

Teraz nie mam czasu pisać długiego komentarza. Może wieczorem lub jutro. Stwórz nowe pytanie, jeśli interesują Ciebie objaśnienia.

Zobacz obrazek 0AB
Zobacz obrazek 0AB
Zobacz obrazek 0AB
Zobacz obrazek 0AB
Zobacz obrazek 0AB