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

Wyszukiwanie frazy w pliku binarnym i wyświetlanie całej struktury ze znalezioną frazą.

Ostatnio zmodyfikowano 2014-01-25 14:10
Autor Wiadomość
hooligans1293
Temat założony przez niniejszego użytkownika
Wyszukiwanie frazy w pliku binarnym i wyświetlanie całej struktury ze znalezioną frazą.
» 2014-01-25 13:41:44
Witam wszystkich mam problem z napisaniem funkcji wyszukującej podaną przez użytkownika frazę. Chodzi mi dokładnie o to aby program po wprowadzeniu np. tytułu filmu wyświetlał mi tytuł, czas trwania, rok itd. (dane ze struktury).

Oto mój kod:

C/C++
#include <iostream>
#include <conio.h>
#include <math.h>
#include <time.h>
#include <cstdlib>
#include <string.h>
#include <stdio.h>
#include <fstream> // biblioteka do obslugi plikow


using namespace std;

fstream plik_dane; //wprowadzenie klasy fstream do obsługi pliku

//-----------// deklaracja struktury -----------------------------------------------------------------------------------------------------

struct dvdinfo //glowna struktura
{
    char tytul[ 50 ]; //tytul plyty
    short int czastrwania; // czas trwania w min
    short int rokwyd; //rok wydania
    int szeklatki; // szerokosc klatki np 1920
    int wsklatki; // wysokosc klatki np 1080
};
//prototypy funkcji------------------------------------------------------------------------------

void szukajWszystkichFraz( string szukanaFraza )
{
    ifstream plik_dane;
    plik_dane.open( "dvd_data.dat", ios::in );
    string tekst;
   
    do {
        getline( plik_dane, tekst );
       
        if( tekst.find( szukanaFraza ) != std::string::npos )
        {
            istream & read( char * newdvd, dvdinfo );
            return;
        }
       
       
       
    } while( !plik_dane.eof() );
   
    plik_dane.close();
}
int main( int argc, char ** argv ) {
   
   
    cout << "\t**********************************************" << endl;
    cout << "\t*************** Baza plyt DVD ****************" << endl;
    cout << "\t**********************************************" << endl << endl;
   
   
    int wybor; //zmienna sterujaca menu
    int n, koniec; //n- liczba okreslonych wskaznikow, koniec - zmienna konczaca petle
    koniec = 1;
    string szukane, podane; //zmienne do wyszukiwania
   
   
    start: //etykieta do funkcji goto umożliwiajaca powót do menu wyboru po zakonczonej operacji
   
    cout << "--------------------------------------------------------------" << endl << endl;;
    cout << "\t*** MENU *** " << endl << endl;
    cout << "===> (1) Dodaj nowa plyte do bazy" << endl;
    cout << "===> (2) Usun plyte z bazy" << endl;
    cout << "===> (3) Sortowanie bazy" << endl;
    cout << "===> (4) Wyszukiwanie plyty w bazie" << endl;
    cout << "===> (5) Zamknij program" << endl << endl;
   
   
    cout << endl;
   
    do //petla do while służąca do zamykania programu
    {
       
        cout << "Wprowadz symbol operacji ktora chcesz wykonac " << endl << endl;
        cout << "===> ";
        cin >> wybor;
        cout << "--------------------------------------------------------------" << endl << endl;
       
        if( wybor > 5 )
        {
            cout << "\t------------------------------------" << endl;
            cout << "\t--  Symbol operacji niepoprawny   --" << endl;
            cout << "\t------------------------------------" << endl << endl;
            cout << "\t------------------------------------" << endl;
            cout << "\t--Wprowadz ponownie symbol operacji--" << endl;
            cout << "\t------------------------------------" << endl << endl;
        }
        else
       
        switch( wybor ) // instrukcja wyboru
        {
        case 1:
           
            cout << "Wybrales dodawanie plyt" << endl << endl << endl;
            cout << "--------------------------------------------------------------" << endl << endl;
            dvdinfo newdvd;
            cout << "Podaj tytul plyty " << endl;
            cout << "===>";
            cin >> newdvd.tytul;
            cout << endl;
            cout << "Podaj czas trwania filmu w minutach " << endl;
            cout << "===>";
            cin >> newdvd.czastrwania;
            cout << endl;
            cout << "Podaj rok wydania plyty " << endl;
            cout << "===>";
            cin >> newdvd.rokwyd;
            cout << endl;
            cout << "Podaj szerokosc klatki " << endl;
            cout << "===>";
            cin >> newdvd.szeklatki;
            cout << endl;
            cout << "Podaj wysokosc klatki " << endl;
            cout << "===>";
            cin >> newdvd.wsklatki;
           
            system( "cls" ); //czyszczenia ekranu konsoli
           
            cout << "-------------------------------------------------------------------------------" << endl;
            cout << "\t <<<< Dodales plyte >>>>" << endl;
            cout << "\t| Tytul :: " << newdvd.tytul << endl;
            cout << "\t| Czas trwania :: " << newdvd.czastrwania << " min" << endl;
            cout << "\t| Rok wydania :: " << newdvd.rokwyd << endl;
            cout << "\t| Rozmiar klatki :: " << newdvd.szeklatki << " x " << newdvd.wsklatki << endl;
           
            plik_dane.open( "dvd_data.dat", ios::binary | ios::app | ios::ate ); //otwarcie pliku do odczytu i zapisu na jego koncu
           
           
            if( plik_dane.good() == true ) //sprawdzanie czy udało sie otworzyć  plik z danymi
            {
                ofstream zapis( "dvd_data.dat", ios::binary | ios::app );
               
                zapis.write( reinterpret_cast < char *>( & newdvd ), sizeof( dvdinfo ) );
               
                plik_dane.close();
            } else cout << "Blad odczytu pliku!" << endl;
           
           
           
            goto start; //powrot do poczatku programu
            break;
        case 2:
            cout << "Wybrales usuwanie plyt" << endl;
            cout << "--------------------------------------------------------------" << endl << endl;
            break;
        case 3:
            cout << "Wybrales sortowanie plyt" << endl;
            cout << "--------------------------------------------------------------" << endl << endl;
            break;
        case 4:
            cout << "Wybrales wyszukiwanie plyt" << endl;
            cout << "--------------------------------------------------------------" << endl << endl;
            cout << "Podaj Tytul do wyszukania" << endl;
            cin >> podane;
            system( "cls" );
            cout << "--------------------------------------------------------------" << endl;
            cout << "===> Wyszukujesz pliku zawierajacego " << podane << " w tytule" << endl;
            cout << "--------------------------------------------------------------" << endl << endl;
            cout << "\tZnalezione filmy to: " << endl << endl;
            szukajWszystkichFraz( podane );
            goto start;
            break;
           
        case 5:
            system( "cls" );
            cout << endl;
            cout << "\t----------------------------------------------------------" << endl;
            cout << "\t----- Aby zakonczyc dzialanie programu nacisnij ENTER----- " << endl;
            cout << "\t----------------------------------------------------------" << endl << endl;
            koniec = 0;
            break;
           
        }
    } while( koniec != 0 );
   
    return 0;
}
P-103159
kubawal
» 2014-01-25 13:46:14
C/C++
istream & read( char * newdvd, dvdinfo );

To sie nie skompiluje...
P-103160
hooligans1293
Temat założony przez niniejszego użytkownika
» 2014-01-25 14:10:10
Mi wszystko się kompiluje tylko funkcja wyszukaj nie działa. Ma ktoś może pomysł co jest w tym nie tak bo już się gubię
P-103162
« 1 »
  Strona 1 z 1