lekcja 32 Problem z wyszukiwaniem tekstu
Ostatnio zmodyfikowano 2013-06-05 16:42
IaTeXik Temat założony przez niniejszego użytkownika |
lekcja 32 Problem z wyszukiwaniem tekstu » 2013-06-04 20:30:58 Witam.Moj problem polega na tym że po wpisaniu wyrazu przez uzytkownika sprawdzam czy znajduje się w tekscie.I nawet jesli wyraz się tam znajduje to komputer potwierdza to tylko wtedy gdy jest on w ostatnim wierszu. #include <fstream> #include <iostream>
using namespace std; bool sprawdz( string sNazwaPliku, string tekst ) { ifstream plik; plik.open( sNazwaPliku.c_str() ); if( !plik.good() ) { cout << "nie udało sie wczytac pliku" << endl; return false; } else { plik.close(); return true; } } void szukaj( string wyraz, string plik ) { ifstream lol; lol.open( plik.c_str() ); string tekst; while( getline( lol, tekst ) ); size_t szukanywyraz = tekst.find( wyraz ); if( szukanywyraz == string::npos ) cout << "niestety,podany wyraz nie występuje w tekście" << endl; else cout << szukanywyraz; } int main() { cout << "wprowadz wyraz :"; string wyraz; string tekst; getline( cin, wyraz ); cout << wyraz << endl; sprawdz( "D:\\tekst.txt", tekst ); szukaj( wyraz, "D:\\tekst.txt" ); return 0; }
|
|
pekfos |
» 2013-06-04 20:46:36 |
|
IaTeXik Temat założony przez niniejszego użytkownika |
» 2013-06-05 16:42:25 Wszystko działa tylko jest jeden maly szczegół którego nie moge dopracowac.Mianowicie podczas wyswietlania ostatniego wersu pozycja wyrazu jest niepoprawna. Kod: #include <fstream> #include <iostream> #include <string> #include <sstream>
using namespace std; bool sprawdz( string sNazwaPliku ) { ifstream plik; plik.open( sNazwaPliku.c_str() ); if( !plik.good() ) { cout << "nie udało sie wczytac pliku" << endl; return false; } else { plik.close(); return true; } } void szukaj( string wyraz, string lol ) { ifstream ifs( "D:\\tekst.txt" ); ostringstream oss; string tekst; oss << ifs.rdbuf(); tekst = oss.str(); size_t szukanywyraz = tekst.find( wyraz ); size_t wiersz1 = tekst.find( "--==" ); size_t wiersz2 = tekst.find( "Obecnie" ); wiersz2 = wiersz2 -= 1; size_t wiersz3 = tekst.find( "http://cpp0x.pl/kursy" ); wiersz3 = wiersz3 -= 1; size_t wiersz4 = tekst.find( "Udalo" ); wiersz4 = wiersz4 -= 1; size_t wiersz5 = tekst.find( "Wykonaj" ); wiersz5 = wiersz5 -= 1; size_t wiersz6 = tekst.find( ":)" ); wiersz6 = wiersz6 += 2; string w1, w2, w3, w4, w5; w1.insert( 0, tekst, 0, wiersz2 - wiersz1 ); w2.insert( 0, tekst, wiersz2, wiersz3 - wiersz2 ); w3.insert( 0, tekst, wiersz3, wiersz4 - wiersz3 ); w4.insert( 0, tekst, wiersz4, wiersz5 - wiersz4 ); w5.insert( 0, tekst, wiersz5, wiersz6 - wiersz2 ); do { cin.sync(); cin.clear(); if( szukanywyraz == string::npos ) cout << "niestety,podany wyraz nie występuje w tekście" << endl; if( szukanywyraz < wiersz2 ) { cout << w1 << endl; szukanywyraz = tekst.find( wyraz, szukanywyraz +( wiersz2 - szukanywyraz ) ); cout << "pozycja nr:" << szukanywyraz << endl; } if( szukanywyraz < wiersz3 && szukanywyraz > wiersz2 ) { cout << w2 << endl; szukanywyraz = tekst.find( wyraz, szukanywyraz +( wiersz3 - szukanywyraz ) ); cout << "pozycja nr:" << szukanywyraz << endl; } if( szukanywyraz < wiersz4 && szukanywyraz > wiersz3 ) { cout << w3 << endl; szukanywyraz = tekst.find( wyraz, szukanywyraz +( wiersz4 - szukanywyraz ) ); cout << "pozycja nr:" << szukanywyraz << endl; } if( szukanywyraz < wiersz5 && szukanywyraz > wiersz4 ) { cout << w4 << endl; szukanywyraz = tekst.find( wyraz, szukanywyraz +( wiersz5 - szukanywyraz ) ); cout << "pozycja nr:" << szukanywyraz << endl; } if( szukanywyraz < wiersz6 && szukanywyraz > wiersz5 ) { cout << w5 << endl; szukanywyraz = tekst.find( wyraz, szukanywyraz +( wiersz6 - szukanywyraz ) ); cout << "pozycja nr:" << szukanywyraz << endl; } } while( szukanywyraz != string::npos ); } int main() { cout << "wprowadz wyraz :"; string wyraz; string tekst; getline( cin, wyraz ); cout << wyraz << endl; sprawdz( "D:\\tekst.txt" ); szukaj( wyraz, "D:\\tekst.txt" ); return 0; }
/edit Problem rozwiązany.temat zamknięty. |
|
« 1 » |