Napisać funkcje: void szukaj(const char nazwaPlikWe[], const char nazwaPlikWy[],const char slowo[]) której zadaniem jest znalezienie wszystkich wierszy w pliku, które zawierają szukane słowo. Wszystkie wiersze, które zawierają słowo powinny zostać zapisane w pliku wynikowym wraz z nr wiersza (z pierwszego pliku). Nazwa pierwszego pliku zapamiętana jest w parametrze nazwaPlikWe, nazwa pliku wynikowego podana jest w parametrze nazwaPlikWy, natomiast szukane słowo w parametrze słowo. Przykład - plik wejściowy: Ala ma jutro egzamin z biologii. Jan myje auto. Eh, jutro kolejny egzamin. Nie lubie polityki. Jeżeli szukanym słowem byłoby ”egzamin”, to plik wynikowy powinien wyglądać następująco: 1: Ala ma jutro egzamin z biologii. 3: Eh, jutro kolejny egzamin.
#include <iostream> #include <fstream>
using namespace std;
void szukaj(const char nazwaPlikWe[], const char nazwaPlikWy[],const char slowo[]);
int main() { szukaj("zad2plik.txt","zad2wynik.txt","egzamin");
cin.get(); return 0; } void szukaj(const char nazwaPlikWe[], const char nazwaPlikWy[],const char slowo[]) { int w=1; string wiersz; ifstream plik1; ofstream plik2; plik1.open(nazwaPlikWe); plik2.open(nazwaPlikWy,ios::app); //ios::app sluzy do dopisywania do danego pliku jesli juz istnieje // w tym programie jest on zbedny, ale warto wiedziec jak dziala.. if(plik1.is_open()) { while(!plik1.eof()) { getline(plik1,wiersz); if((wiersz.find(slowo))!=string::npos) //string::npos pojawia sie gdy nie ma szukanego slowa { cout<<w<<": "<<wiersz<<endl; plik2<<w<<": "<<wiersz<<endl; } w++; }
} else cout<<"Problem z plikiem. Aplikacja zakonczy dzialanie."<<endl; plik1.close(); plik2.close(); }
|