Avatar billede Slettet bruger
06. februar 2007 - 00:06 Der er 7 kommentarer og
1 løsning

Program som kan tælle hvor mange gange hvert ord indputtes.

Jeg sidder med en øvelsesopg i skolen i C++, med et program som skal kunne tælle hvor mange gange random ord bliver inputtet og derefter printe det ud på fornuftig vis.

Den eneste undervisning vi endnu har haft i C++ er vectorer, men jeg må indrømme jeg er enormt blank mht. hvordan opgaven skal gribes an. Mit niveau som programmør må anses som nybegynder, så alt hjælp kan bruges.

På forhånd tak.
Avatar billede bertelbrander Novice
06. februar 2007 - 00:12 #1
Et ord gemmer man normalt i en std::string:
std::string Ord;

Man kan læse ord med
std::cin >> Ord

Man kan sammenligne en std::string med:
if(Ord == "OrAtChecke")

Du skal nok også bruge en while løkke.

Du kan gemme alle ord i vector:
std::vector<std::string> OrdListe;

Og putte på listen med:
OrdListe.push_back(Ord);

Du får fat i det n'te ord i ord listen med
OrdListe[n]

Resten burde være trivielt.
Avatar billede arne_v Ekspert
06. februar 2007 - 04:54 #2
jeg tror at en

map<string,int>

vil være bedre til formålet !
Avatar billede arne_v Ekspert
06. februar 2007 - 05:14 #3
noget a la:

#include <iostream>
#include <fstream>
#include <string>
#include <map>

using namespace std;

int main(int argc, char *argv[])
{
    map<string,int> count;
    ifstream f(argv[1]);
    string s;
    while(f >> s)
    {
        if(count[s])
        {
            count[s]++;
        }
        else
        {
            count[s] = 1;
        }
    }
    for(map<string,int>::iterator it = count.begin(); it != count.end(); it++ )
    {
        cout << it->first << " " << it->second << endl;
    }
    return 0;
}
Avatar billede Slettet bruger
06. februar 2007 - 18:31 #4
Hvis vi tager udgangspunkt i arne_v, da en af af mine venner også anbefalede maps, men han kendte dog ikke nærmere til dem.

Kan du forklare hvordan koden fungerer? Jeg har som sagt ingen erfaringer med map funktionen.
Avatar billede arne_v Ekspert
06. februar 2007 - 18:41 #5
hm

det er nok lidt svaert at forklare kort

du kan betragte map<string,int> som et array af int hvor du bruger en string
som index fremfor en int (som man bruger for et normalt array)
Avatar billede Slettet bruger
06. februar 2007 - 18:42 #6
Okay, tak det er udmærket. Smid et svar. :)
Avatar billede arne_v Ekspert
06. februar 2007 - 18:51 #7
svar
Avatar billede Slettet bruger
06. februar 2007 - 19:00 #8
Tak for hjælpen, jeg vil arbejde videre på arne_v's forslag.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester