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

Č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: 14825
  • 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: 4576

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: 14825
  • Gde živiš: Niš

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

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

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: 14825
  • 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: 1872

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: 14825
  • 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 1200 korisnika na forumu :: 80 registrovanih, 6 sakrivenih i 1114 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 100jan, Abebe Bikila, as2025, Asteker, Avalon015, Ba4e, Boris BM, Boris90, branko87, BUDDAR70, darcaud, darkojbn, dekan.m, Denaya, DENIRO, Dimitrise93, dinamik, DonRumataEstorski, dragan_mig31, Fog of War, g_g, GeoM, goxin, IQ116, jodzula, Jomini, Još malo pa deda, K-1A, karevski, kljift, Kobrim, kolle.the.kid, Kubovac, Lucije Kvint, Manjane, Martin543, mean_machine, menges, Mercury, Metanoja, Miki01, mikrimaus, milimoj, MiroslavD, Murko, neutrino, niksa517, OldKresoje, Orc, Pavk3, pedja63, Petarvu, Povratak1912, PrincipL, Prometeus, Ranutovac, RJ, sajorg, sale76, Sarmat, sekretar, sslay, stefan95, Str2022, suton, Titan, Token, tubular, tuja, Tumansky, tvlada, Username1000, VanZan, vathra, vensla, vidra1, vuk77, x9, XBMC, zdrebac