Zliczanie słów

0

Witajcie;)
Jestem w trakcie robienia zadań z Thinking in C++.
Mam do napisania program, który zlicza słowa z otwartego pliku...

napisałem to tak:

#include <iostream>
#include <vector>
#include <fstream>
using namespace std;

int main()
{
  vector<string> x;
  ifstream in("plik.txt");
  string word;
  while(in>>word)
  x.push_back(word);

  static int slowa;
  for(int i = 0; i < x.size(); i++)
  {
      cout << x[i] << endl;
      slowa++;
  }
  cout << "Slow jest: " << slowa << endl;
}
 

Program działa, ale w rozdziale, w którym się znajduje ("Tworzenie i używanie obiektów") nie było nic wspomniane o zmiennych statycznych, dlatego zastanawiam się jak mogłem zrobić to inaczej - według jakiś zaleceń z tego rozdziału?

0

Czy x.size() w tym przypadku to nie jest po prostu liczba słów?

0

Racja...:P
Ale przyznaj, że moje rozwiązanie było nieco sprytne :D

0

Twoje rozwiązanie było przykładem braku umiejętności logicznego myślenia. Tak, było sprytne. Inaczej.

0

Może i było, ale prościej tak:

liczba_slow = 0;
while(in>>word)
  liczba_slow++;
0

A co po ta zmienna niby miałaby być statyczna? Na moje oko zwykła zmienna lokalna którą najpierw wyzerujesz (!) będzie ok. Bo tutaj statyczność dała ci tylko to ze automatycznie wyzerowało ci zmienną. Rozumiem że dopisaleś static "z d**y" kiedy na zwykłej zmiennej "dawało złe wyniki"?...

0
Hipek napisał(a)

Ale przyznaj, że moje rozwiązanie było nieco sprytne :D

W "Chłopach" był taki gość, który sam sobie amputował nogę. To było równie sprytne.

Tak czy siak, nie wiem po jaką cholerę używać tu jakichś kolekcji. Na oko wystarczyłoby czytać plik sekwencyjnie i liczyć przerwy między wyrazami.

0

Czyli jak widzimy, rozwiązań jest wiele :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1