Rozdział 32 zadanie domowe
Ostatnio zmodyfikowano 2016-01-24 13:09
ghost25 Temat założony przez niniejszego użytkownika |
Rozdział 32 zadanie domowe » 2016-01-18 19:40:39 Treść zadania: Napisz program, który odczyta zawartość pliku, a następnie wypisze na ekranie tylko te wiersze, w których znajduje się wyraz wprowadzony przez użytkownika. Mój kod: #include<iostream> #include<fstream> #include<string> using namespace std; int main() { ifstream plik; string wyraz; int iloscwierszy = 0; plik.open( "D:/test.txt" ); while( getline( plik, wyraz ) ) iloscwierszy++; cout << endl << "Jaki wyraz wyszukac?" << endl; cin >> wyraz; string wiersz[ iloscwierszy ]; for( int i = 0; i <= iloscwierszy; i++ ) { getline( plik, wiersz[ i ] ); size_t znalezionapozycja = wiersz[ i ].find( wyraz ); if( znalezionapozycja != std::string::npos ) cout << wiersz[ i ]; } plik.close(); return 0; } Problem: Po wpisaniu słowa do wyszukania wyświetla się komunikat systemowy: Program <nazwa pliku> przestał działać. Kompilator nie wyświetla żadnych błędów. |
|
Gibas11 |
» 2016-01-18 20:02:29 string wiersz[ iloscwierszy ]; „iloscwierszy” nie jest stałą a tak się nie alokuje tablic o zmiennym rozmiarze. Ps. tak nie byłoby prościej? #include <string> #include <fstream> #include <iostream> using namespace std;
int main() { ifstream in( "file.txt" ); string werse, word; cin >> word; while( getline( in, werse ) ) if( werse.find( word ) != string::npos ) cout << werse << endl; return 0; }
Program oczywiście nie wykrywa czy słowo jest oddzielone od innych (teraz przy szukaniu "placki", zaliczy też "plackisss"), ale to chyba nie jest szczególnie potrzebne. |
|
Lich555 |
» 2016-01-24 13:09:25 Albo coś takiego :P #include <iostream> #include <fstream> #include <string>
using namespace std;
bool odczytzawplik( string iwyraz ) { ifstream plik; plik.open( "C:/Users/Kacper Zięba/Desktop/C++/Podstawy obsługi plików/Zadanie domowe 1/dok1.txt" ); if( !plik.good() ) return false; string wiersz; while( getline( plik, wiersz ) ) if( wiersz.find( iwyraz ) != string::npos ) cout << wiersz << endl; return true; }
int main() { string wyraz; cout << "Wprowadz wyraz by wyswietlic wiersze w ktorych sie on znajduje: " << endl; cin >> wyraz; cout << endl; if( !odczytzawplik( wyraz ) ) cout << "Nie udalo sie otworzyc pliku" << endl; return 0; }
|
|
« 1 » |