Wyszukiwanie frazy w pliku binarnym i wyświetlanie całej struktury ze znalezioną frazą.
Ostatnio zmodyfikowano 2014-01-25 14:10
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: #include <iostream> #include <conio.h> #include <math.h> #include <time.h> #include <cstdlib> #include <string.h> #include <stdio.h> #include <fstream>
using namespace std;
fstream plik_dane;
struct dvdinfo { char tytul[ 50 ]; short int czastrwania; short int rokwyd; int szeklatki; int wsklatki; };
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; int n, koniec; koniec = 1; string szukane, podane; start: 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 { 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 ) { 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" ); 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 ); if( plik_dane.good() == true ) { 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; 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; }
|
|
kubawal |
» 2014-01-25 13:46:14 istream & read( char * newdvd, dvdinfo );
|
To sie nie skompiluje... |
|
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ę
|
|
« 1 » |