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

[Rozdział 32] Mały problem z zadaniem

Ostatnio zmodyfikowano 2015-06-18 10:29
Autor Wiadomość
BartC
Temat założony przez niniejszego użytkownika
[Rozdział 32] Mały problem z zadaniem
» 2015-06-15 17:40:00
Wykrywa błąd w 46 linijce: no match for 'operator<<' in std::operator<< [...]



C/C++
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

bool wyswietlplik( string nazwapliku )
{
    ifstream plik;
    plik.open( "C:\\Klasa.txt" );
    if( !plik.good() )
         return false;
   
    string wypisaniepliku;
    getline( plik, wypisaniepliku );
    cout << wypisaniepliku << endl;
    plik.close();
    return true;
}
void sprawdzenie( string nazwapliku, string wyraz )
{
    ifstream plik;
    plik.open( "C:\\Klasa.txt" );
    if( !plik.good() )
         cout << "Udalo sie wczytac plik. " << endl;
   
    size_t znalezionapozycja = nazwapliku.find( wyraz );
    if( znalezionapozycja == string::npos )
         cout << "Nie znaleziono wyrazu w tekscie. " << endl;
    else
    {
        do
        {
            cout << "Znaleziony wyraz jest na pozycji " << znalezionapozycja << endl;
            znalezionapozycja = nazwapliku.find( wyraz, znalezionapozycja + wyraz.size() );
        } while( znalezionapozycja != string::npos );
       
    }
    plik.close();
}

int main()
{
    string wyraz;
    cout << "Tekst: " << endl << endl;
    wyswietlplik( "C:\\Klasa.txt" );
    cin >> wyraz;
    cout << "Podaj wyraz znajdujacy sie w teksie: " << sprawdzenie( "C:\\Klasa.txt", wyraz );
}
P-133598
BadBullPL
» 2015-06-15 17:46:35
tak to powinno wyglądać
C/C++
cout << "Podaj wyraz znajdujacy sie w teksie: ";
sprawdzenie( "C:\\Klasa.txt", wyraz );
P-133599
BartC
Temat założony przez niniejszego użytkownika
» 2015-06-15 18:48:16
Ok teraz już działa. Jednak program nie działa tak jak powinien czyli wpisze nie ważne jaki wyraz zawsze pokazuje, że nie ma takiej frazy w tekscie.
P-133607
BadBullPL
» 2015-06-15 21:52:44
poprawione i działa wszystko
C/C++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

void sprawdzenie( string & tekst, string szukane, int nr_linii, bool & czy )
{
    size_t szukaj = tekst.find( szukane );
    if( szukaj != string::npos )
    {
        cout << "Slowo zostalo odnalezione na pozycji " << szukaj << " w lini nr: " << nr_linii << endl;
        czy = true;
    }
}

int main()
{
    ifstream plik;
    plik.open( "plik.txt", ios::in );
    string tekst;
        cout << "Podaj wyraz znajdujacy sie w tekscie: ";
    string szukane;
    getline( cin, szukane );
    int nr_linii = 1;
    bool czyByla = false;
    while( !plik.eof() )
    {
        getline( plik, tekst );
        sprawdzenie( tekst, szukane, nr_linii, czyByla );
        nr_linii++;
    }
    plik.close();
    if( czyByla == false )
         cout << "W pliku nie bylo slowa";
   
    return 0;
}
a co do @down zeedytuj post o nowe uwagi jeśli takowe posiadasz żeby nie wprowadzał w błąd.
P-133614
libed
» 2015-06-16 01:43:22
@up
- Czytasz co drugą linijkę
- Podawane jest zła pozycja odnalezionego wyrazu
- aż się prosi, żeby funkcja sprawdzająca zwracała bool
- funkcja "sprawdz" powinna zajmować się wyłącznie sprawdzaniem a nie wszystkim po kolei

P-133624
BartC
Temat założony przez niniejszego użytkownika
» 2015-06-16 20:33:40
Dużo namieszanie w tych komentarzach, niestety nadal nie rozgryzłem swojego programu.

Mam coś takiego
C/C++
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;

void sprawdzenie( string nazwapliku, string wyraz )
{
    size_t znalezionapozycja = nazwapliku.find( wyraz );
    if( znalezionapozycja != string::npos )
    {
        cout << "Znaleziony plik jest na pozycji " << znalezionapozycja << endl;
    }
}

int main()
{
    ifstream plik;
    plik.open( "C:\\Klasa.txt" );
    string tekst;
    getline( plik, tekst );
    cout << tekst << endl;
    cout << "Podaj wyraz znajdujacy sie w tekscie: ";
    string szukane;
    getline( cin, szukane );
    getline( plik, tekst );
    sprawdzenie( tekst, szukane );
    plik.close();
   
}

:/
P-133645
BadBullPL
» 2015-06-16 20:50:32
Twój program działa jedynie na plikach które mają jedną linijke nie wiem czy oto chodziło
P-133650
BartC
Temat założony przez niniejszego użytkownika
» 2015-06-16 21:57:01
Chodziło o to:
"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."
P-133656
« 1 » 2
  Strona 1 z 2 Następna strona