using std::cout; using std::cin; using std::endl; using std::sort; using std::string; using std::vector;
int main() { vector<string> names; string name; int antal = 0;
cout << "Type in arbitrary words: "; while (cin >> name) { if (name == "q") break;
names.push_back(name); ++antal; }
sort(names.begin(), names.end());
cout << "Antal: " << antal << endl;
//print the values in vector names to the screen for (int i = 0; i != antal; ++i) { cout << names[i] << endl; }
//nr. m element in the vector is analized for (int m = 0; m != antal; ++m) {
int k = 1;
//nr. n element in the vector is analized for (int n = m+1; n != antal; ++n) {
// if there is two identical words k will be incremented. // when m = 0, names[m-1] = names[-1]... therefore the switch statement. switch (((bool)m)) { case 0: { if (names[m] == names[n]) { ++k; } }
case 1: { if ((names[m] == names[n]) && (names[m] != names[m-1])) { ++k; } } } }
// when element m in the vector has been checked against the others cout << "Der er " << k << " ord paa formen " << names[m] << endl; }
system("PAUSE"); return 0; }
----------------------------------- Dette lille program går mig på nerverne. Beskrivelse: indlæser nogle ord fra tastaturet, hvorefter programmet finder ud af, hvor mange gange de enkelte ord optræder i den vektor de er indlæst i. Ordene sorteres ved hjælp af sort() inden de udsættes 'loop på loop'.
Opgaven er fra bogen Accelerated C++: 3-3
Programmet kompileres uden problemer, men windows kan bestemt ikke lide det. Den kaster en fejlmeddelelse til skærmen og programmet går i stå.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
jeg har fået programmet til at virke ved indsætte breaks i den oprindelige switch statement. derudover var jeg nødt til at sætte en ny switch statement ind, hvor outputtet skulle skrives til skærmen:
---------------------------------------------
switch (((bool)m)) { case 0: { cout << "Der er " << k << " ord paa formen " << names[m] << endl; break; }
case 1: { if (names[m] != names[m-1]) { cout << "Der er " << k << " ord paa formen " << names[m] << endl; break; } } }
------------------------------------------
idet programmet ellers skrev til skærmen for hvert element i vektoren selvom nogle elementer var ens
ex.
der er 3 ord på formen kylling der er 1 ord på formen kylling der er 1 ord på formen kylling
Måske noget i stil med: for (int m = 0; m != antal; ) {
int k = 1;
//nr. n element in the vector is analized for (int n = m + 1; n != antal && names[m] == names[n]; ++n, k++) { // Just counting }
cout << "Der er " << k << " ord paa formen " << names[m] << endl; m += k; }
Synes godt om
Ny brugerNybegynder
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.