Siemanko,
Wczytuję dane z pliku wierszami i zapisuję w tablicy vectorowej. Potem wczytując te same dane ale już z tablicy vectorowej szukam linii z napisem "UNITED STATES". Jeżeli znajdę "UNITED STATES" program ma sprawdzić czy linia znajdująca się 5 linijek wyżej zawiera w sobie słowo "CISCO". Jeżeli tak, licznik wzrasta o 1 (liczymy wszystkie takie przypadki).
Oto próbka wczytywanych danych:
00-00-0B (hex) MATRIX CORPORATION
00000B (base 16) MATRIX CORPORATION
1203 NEW HOPE ROAD
RALEIGH NORTH CAROLINA 276
UNITED STATES
00-00-0C (hex) CISCO SYSTEMS, INC.
00000C (base 16) CISCO SYSTEMS, INC.
170 WEST TASMAN DRIVE
SAN JOSE CA 95134-1706
UNITED STATES
00-00-0D (hex) FIBRONICS LTD.
00000D (base 16) FIBRONICS LTD.
MATAM TECHNOLOGY CENTER
HAIFA 31905
ISRAEL
ISRAEL
00-00-0E (hex) FUJITSU LIMITED
00000E (base 16) FUJITSU LIMITED
Musashi-kosugi Tower Place Bldg.,
Kosugi-cho 1-chome,Nakahara-ku
KAWASAKI 211 Kanagawa
JAPAN
- Wyszukiwanie uprzednio stringów "UNITED STATES" jest obowiązkowe, bo wymagane w dalszej części zadania. Dlatego obejście tego nie jest rozwiązaniem.
No więc: program się kompiluje, ale licznik nie chce liczyć. A jak widać z próbek - dane są w porządku. Coś więc jest nie tak...
Proszę o pomoc.
-----------------------------UPDATE---------------------------------------------------------------------------------------------------------
Zmieniłem kod tak żeby ściągało całe linie, i dalej licznik zwraca 0. Wydawało mi się, że to prosta sprawa. Pierwszy raz używam .find() , może tu się pomyliłem?
Aktualny kod:
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
string napis1, napis2;
vector <string> linie;
int i, licznikCisco=0;
int main()
{
ifstream napisy("oui.txt");
ofstream wynik("zadanie4.txt");
string cisco="CISCO";
while (getline(napisy, napis1))
{
linie.push_back(napis1);
}
for (i=0; i<linie.size(); i++)
{
if(linie[i]=="UNITED STATES")
{
if (linie[i-4].find(cisco) != std::string::npos) {
licznikCisco++;
}
}
}
wynik << "A) " << licznikCisco;
napisy.close();
wynik.close();
return 0;
}