Wyszukiwanie według binarnego wzorca.
Ostatnio zmodyfikowano 2015-01-11 19:04
Daffy Temat założony przez niniejszego użytkownika |
Wyszukiwanie według binarnego wzorca. » 2015-01-11 13:07:26 Witam. Mam problem odnośnie swojego zadanie. Oto jego treść: Wyszukiwanie binarnego wzorca ciągu liczb - jeden plik tekstowy z danymi o podanej przez użytkownika nazwie (np. dane.txt) - plik składa się co najwyżej ze stu dodatnich liczb całkowitych oraz ciągu binarnego - ciąg binarny składa się maksymalnie ze stu bitów zapisanych zerojedynkowo w ostatniej linii pliku - program ma wypisać ile razy podany ciąg binarny (wzorzec) występuje w ciągu liczb - przeszukiwany ciąg liczb jest traktowany, jako ciąg bitów do przeszukania Udało mnie się zrobić odczyt z pliku .txt, przeliczanie ich na system binarny wiadomo oprócz ostatniej liczby, która jest liczbą binarną, czyli wzorcem. Mam parę problemów z programem. Nie wiem za bardzo jak to wszystko zagnieździć w pętli, abym nie musiał np 100 razy pisać kodu odpowiedzialnego za przeliczanie tych liczb, wypisywanie oraz deklarowania 100 tablic. Kolejnym moim problemem jest jak te wartości porównywać. Np mój wzorzec to 0110 a liczby do sprawdzenia to 1000 0110 0110 1000 i 0011 0100 0110 więc wzór występuje 3 razy. Liczby po przeliczeniach są zapisane w tablicy. Bardzo proszę o pomoc. Używam języka C++ Oto mój kod: #include <iostream> #include <fstream> #include <cstdlib> using namespace std;
int tab1[ 32 ]; int tab2[ 32 ]; int tab3[ 32 ]; int tab4[ 32 ]; int tab5[ 32 ]; int tab6[ 32 ]; int i; int liczba1, liczba2, liczba3, liczba4, liczba5, wzor; int main( int argc, char ** argv ) { fstream plik; plik.open( "pliczek.txt", ios::in ); if( plik.good() == false ) { cout << "Plik nie istnieje"; exit( 0 ); } string linia; int nr_linii = 1; while( getline( plik, linia ) ) { switch( nr_linii ) { case 1: liczba1 = atoi( linia.c_str() ); break; case 2: liczba2 = atoi( linia.c_str() ); break; case 3: liczba3 = atoi( linia.c_str() ); break; case 4: liczba4 = atoi( linia.c_str() ); break; case 5: liczba5 = atoi( linia.c_str() ); break; case 6: wzor = atoi( linia.c_str() ); break; } nr_linii++; } plik.close(); cout << "liczba " << liczba1 << " w systemie binarnym wynosi: "; i = 0; while( liczba1 > 0 ) { tab1[ i ] = liczba1 % 2; liczba1 = liczba1 / 2; i++; } for( i = i - 1; i >= 0; i-- ) { cout << tab1[ i ]; } cout << endl << "liczba " << liczba2 << " w systemie binarnym wynosi: "; i = 0; while( liczba2 > 0 ) { tab2[ i ] = liczba2 % 2; liczba2 = liczba2 / 2; i++; } for( i = i - 1; i >= 0; i-- ) { cout << tab2[ i ]; } cout << endl << "liczba " << liczba3 << " w systemie binarnym wynosi: "; i = 0; while( liczba3 > 0 ) { tab3[ i ] = liczba3 % 2; liczba3 = liczba3 / 2; i++; } for( i = i - 1; i >= 0; i-- ) { cout << tab3[ i ]; } cout << endl << "liczba " << liczba4 << " w systemie binarnym wynosi: "; i = 0; while( liczba4 > 0 ) { tab4[ i ] = liczba4 % 2; liczba4 = liczba4 / 2; i++; } for( i = i - 1; i >= 0; i-- ) { cout << tab4[ i ]; } cout << endl << "liczba " << liczba5 << " w systemie binarnym wynosi: "; i = 0; while( liczba5 > 0 ) { tab5[ i ] = liczba5 % 2; liczba5 = liczba5 / 2; i++; } for( i = i - 1; i >= 0; i-- ) { cout << tab5[ i ]; } cout << endl << wzor << endl; return 0; }
[/i][/i] |
|
DejaVu |
» 2015-01-11 13:51:03 |
|
Daffy Temat założony przez niniejszego użytkownika |
» 2015-01-11 14:11:21 Nie będzie występować problem? Liczby z pliku .txt musiałem przekonwertować na int aby móc je przeliczyć na binarne. I teraz nie wiem czy muszę je ponownie przekonwertować na string? Jeżeli tak to jak tego dokonać, co do linku to nie za bardzo rozumiem tego zapisu. Czy mógłby mi ktoś wytłumaczyć trochę bardziej łopatologicznie :) Pozdrawiam |
|
SocrateZ |
» 2015-01-11 14:49:46 |
|
DejaVu |
» 2015-01-11 15:03:32 Jeżeli masz wyszukać podciąg bitowy to zamiana na inty z definicji nie ma sensu. |
|
stryku |
» 2015-01-11 15:48:33 |
|
DejaVu |
» 2015-01-11 17:39:10 @up: to nie jest sensowne rozwiązanie. |
|
stryku |
» 2015-01-11 19:04:38 @up możesz rozwinąć? Czemu nie?
EDIT
Dobra nie ważne. Myślałem, że chodzi o coś innego w zadaniu. |
|
« 1 » |