Brojanje upisanih slova

1

Brojanje upisanih slova

offline
  • Pridružio: 23 Jun 2016
  • Poruke: 5

Pozdrav svima,

treba mi malo pomoči za zadatak koji radim u C++, pa ako neko zna i voljan je da mi pomogne bilo bi zaista lepo, tek sam pocetnik.

Program u koji se unosi string, (ajde max 300 slova), onda napravimo statistiku svakog upisanog slova, koliko puta se pojavi, znači:
slovo a se pojavi ? puta,
slovo b se pojavi ? puta....

Da ostvariti matricu pa da stavljam slove? Možda koja varijanta sa ASCII?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4505

Čekaj, jel' treba rešenje da bude prikazano u matrici ili je potrebna samo statistika? Ako ne treba, možeš jednostavno for petljom da rešiš. Kreiraš promenljivu za po jedno slovo i povećavaš ih u slučaju da prolaskom kroz string naiđeš na neko. String posmatraš kao niz karaktera (što i jeste).



online
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14456
  • Gde živiš: Niš

E.L.I.T.E. ::Kreiraš promenljivu za po jedno slovo...Ili još bolje da kreira niz koji indeksira samim karakterom...

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4505

Misliš da kreira niz koji indeksira samim karakterom i onda u njega ubacuje elemente? Može i tako.

online
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14456
  • Gde živiš: Niš

Nema šta da ubacuje, samo inkremetira element niza čiji je indeks sam karakter.

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4505

Može i još lakše preko find() funkcije.

Najlakše bi mu bilo:

#include <algorithm> std::string str = "blablablablablablablabalaba"; size_t a = std::count(str.begin(), str.end(), 'a');

online
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14456
  • Gde živiš: Niš

Pa može, ali bi sa takvim pristupom obilazio string za svaki karakter čiji mu broj pojavljivanja treba, a sve je to moguće obaviti u jednom jedinom prolazu. Nešto ovako:
int* array = new int[256]; for(int i = 0; i < 256; i++)        array[i] = 0; for(int i = 0; i < str.length; i++)        array[str[i]]++;

offline
  • Pridružio: 06 Feb 2012
  • Poruke: 1733

vasa.93 ::int* array = new int[256]; for(int i = 0; i < 256; i++)        array[i] = 0; for(int i = 0; i < str.length; i++)        array[str[i]]++;
Može i kraće:
int niz[256]={}; for(int i = 0; str[i]; i++)        niz[str[i]]++;
(podrazumijeva se da se string završava terminatorom stringa \0)

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Ako koristimo neke novije tehnologije (recimo IxCpp), možemo napisatio i ovako:
#include <iostream> #include <string> #include "cpplinq\linq.hpp" using namespace cpplinq; struct charCount {    char c;    int count;    charCount(const char c, const int count) : c(c), count(count)    {    } }; int main() {    std::string data = "fdashjkfldhfdadhsjfdjsalkfddhshfkr";    auto counts = from(data)       .groupby([](const auto c) { return c; })       .select([](const auto g) { return charCount(g.key, from(g.start, g.fin).count()); });    for each (auto count in counts)       std::cout << count.c << ": " << count.count << std::endl;    return 0; }

online
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14456
  • Gde živiš: Niš

Sale.S ::Može i kraće...Može, naravno. I od ovog tvog može kraće. Very Happy
int niz[256] = {}; for (int i = 0; str[i]; niz[str[i++]]++);
No, sa takvim modifikacijama opada čitljivost koda. Wink

Ko je trenutno na forumu
 

Ukupno su 514 korisnika na forumu :: 34 registrovanih, 4 sakrivenih i 476 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3028 - dana 22 Nov 2019 07:47

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Sale, A.R.Chafee.Jr., aleksmajstor, Apok, aramis s, beowl, Bov80, CrazyDiablo, darkangel, ekser222, goxin, HDMI, ILGromovnik, ivance95, Kos93, KUZMAR, Marko Marković, Markovic, mercedesamg, nenad81, Nikola35, Njemac, pein, Recce, Roman, royst33, Simazr, Sr.Stat., tomislav91, vasa.93, vtihomir, Vzor50, W123, zlaya011