Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

C++ halp halp!!

Skapad av Snigel, 2010-06-08 14:48 i Webbutveckling & Programmering

909
4 inlägg
0 poäng
Snigel
Visningsbild
P 31 Hjälte 531 inlägg
0
O hai.
Så, jag ska göra ett program som räknar ut hur många gånger några ord förekommer i en string.
Exempel: Hur många gånger förekommer orden "Katt" "Hatt" i texten
"En katt bor i en hatt, hatt rimmar på katt"

Den som nämner google ska dö digerdöden! Ja, jag har sökt runt som fan på massa forum och hemsidor, antligen är det för jävla komplicerat för mig att förstå eller så fungerar det inte.

Jag arbetar för det mesta med arrayer, är inte så bra på vektorer än :)

Om vi har någon som är typ extremt-totally-awesome på c++ så, hjälp snälla :D

kkthxbai<3

[8bit]

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

Joel
Visningsbild
P Hjälte Många söta inlägg
0
Svar till Snigel [Gå till post]:
Finns säkert något färdigt, men du kan ju alltid konstruera din egen algoritm. Förslagsvis såhär:

(Nej, jag kan inte koda c++)

Ett stycke php-kod:

dinfunktion(sträng)
Definiera räknare = 0.
Dela sträng i delar med " " emellan och skapa en array. Funktionen kan heta split eller explode.
Loopa igenom din array med foreach (finns det?) annars for eller while om det nu är så man gör.
Hittar du ordet? Öka värdet på räknare (räknare++;).
Returnera räknare (return räknare;)


Kaka

cower
Visningsbild
P 44 Lund Hjälte 1 042 inlägg
0
Svar till Snigel [Gå till post]:
Till att börja med så är lättaste sättet att dela upp strängen i ord att läsa strängar från cin - den läser ett ord i taget. Sen får man nog efterbehandla det lite för att göra om till små bokstäver och ta bort skiljetecken.

Sen för att räkna antalet ord är en map lättast - om man har en map från string till int så kan man göra ++map[ord] för varje ord, så kan man sen få ut antalet gånger "katt" förekom med map["katt"].

Om du behärskar functors och template-funktionena i functional så kan det bli väldigt kompakt. Jag hittade ett liknande program jag gjorde för ett tag sen. Försök dock inte kopiera det om du inte behärskar de konstruktionerna.
Ett stycke C#-kod:
#include <functional>
#include <map>
#include <iterator>
#include <iostream>

using namespace std;

struct map_val_inc : unary_function< string, void > {
map<string, int>* m;
map_val_inc(map< string, int >& ma) : m(&ma) {}
void operator()(const string& i) { ++(*m)[i]; }
};

namespace std {
ostream& operator<<(ostream& os, const pair< string, int >& v) {
return os << v.first << " : " << v.second << endl;
}
};

int main() {
map<string, int> m;
for_each(istream_iterator< string >(cin), istream_iterator< string >(),
map_val_inc(m));
copy(m.begin(), m.end(), ostream_iterator< pair< string, int > >(cout));
}



Forum » Datorer & IT » Webbutveckling & Programmering » C++ halp halp!!

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons