Wypełnienie tabeli stringami

0

Witam.
Jak wypełnić tablicę stringami?
Chciałbym, przygotowując się do matury, napisać program, który wypisuje Napis, jeśli się powtórzył w pliku minimum raz (nie licząc jego samego). Mój pomysł był taki, żeby najpierw wszystkie napisy do tabeli wrzucić, a potem jakoś countem, ale tu też nie wiem jak.

 
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>

using namespace std;
main()
{
      fstream plik,plik2;
      int i=-1;
      string linia;
      string tablica[i];
      plik.open("NAPIS.txt", ios::in);
      if(plik.good()==false) 
      {
                             cout<<"Nie mozesz otworzyć pliku"<<endl;
                             exit(0);
      }
      while(getline(plik,linia))
      {
      
              tablica[i]=linia;
               i++;
      }
      plik.close();
      
      return 0;
      system("PAUSE");
}

Program się kompiluje, tylko od razu po tym się crashuje.
PS: Jak użyć count() żeby zliczał po ile występuje elementów (nie znając ich)?

2

Wersja rozlazła:

#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;

int main() {
	unordered_map<string, size_t> occurs;
	string str;
	while(cin >> str)
		occurs[str] += 1;
		
	for(auto occur : occurs){
		if(occur.second > 1)
			cout << occur.first << endl;
	}
	return 0;
}

http://ideone.com/izGpsd

2

Program się kompiluje, tylko od razu po tym się crashuje.

int i=-1;
string tablica[i];
...
tablica[i]=linia;

Dziwisz się?

Stwórz vector<string>, dodaj do niego napisy, potem posortuj i wypisz te, które występują parę razy obok siebie.
Alternatywnie map<string, int> i licz ile razy dany napis występuje. Potem wypisz te, które mają wartość > 1.

0

Jeśli chodzi o to, że i=-1, to po zmianie na i=0, też nie działa. Dopiero od wakacji coś tam staram się pisać (od miesiąca bardziej systematycznie) i sporo nie wiem.
Nie da się tak wypełniać tablic stringami jak chciałem? :(

2

string tablica[i]; - nie oznacza przywiązania rozmiaru tablicy do zmiennej i tylko oznacza zrób tablice wg aktualnej wartości i. Dalsza zmiana tejże i nie wpływa na rozmiar tablicy.

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