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: 4455

Č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).



offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14244
  • 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: 4455

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

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14244
  • Gde živiš: Niš

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

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

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');

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14244
  • 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: 1709

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; }

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14244
  • 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 1643 korisnika na forumu :: 35 registrovanih, 2 sakrivenih i 1606 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 1643 - dana 18 Sep 2019 22:10

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., amaterSRB, Apok, babaroga2, Bane san, Bloody, boracbl1389, d bos, DH2, Dimitrise93, Gama, Kaplar2, Kubovac, KUZMAR, Lošmi, Mlav, mnn2, pein, Profica2, radoznao2, Rakenica, renoje2, repac, Revolucion, rovac, S-lash, shone34, skvara, suton2, tmanda323, trajkoni018, vlad the impaler, Vojkan Petrovic, zixmix, Zmaj 99