Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

lekcja 32 Problem z wyszukiwaniem tekstu

Ostatnio zmodyfikowano 2013-06-05 16:42
Autor Wiadomość
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.
C/C++
#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 ) );
   
    //cout<<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;
}
P-84861
pekfos
» 2013-06-04 20:46:36
P-84865
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:
C/C++
#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();
    //cout<<oss.str()<<endl; //wyswietla tekst
    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;
    //cout<<wiersz1<<" ,"<<wiersz2<<" ,"<<wiersz3<<" ,"<<wiersz4<<" ,"<<wiersz5<<endl; wyswietla pozycje wierszy
    string w1, w2, w3, w4, w5;
    w1.insert( 0, tekst, 0, wiersz2 - wiersz1 );
    //cout<<w1;
    w2.insert( 0, tekst, wiersz2, wiersz3 - wiersz2 );
    //cout<<w2;
    w3.insert( 0, tekst, wiersz3, wiersz4 - wiersz3 );
    //cout<<w3;
    w4.insert( 0, tekst, wiersz4, wiersz5 - wiersz4 );
    //cout<<w4;
    w5.insert( 0, tekst, wiersz5, wiersz6 - wiersz2 );
    //cout<<w5;
    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.
P-84933
« 1 »
  Strona 1 z 1