[C++] Sprawdzanie dwóch tablic
Ostatnio zmodyfikowano 2013-12-27 18:36
maniek1310 Temat założony przez niniejszego użytkownika |
[C++] Sprawdzanie dwóch tablic » 2013-12-27 16:17:12 Witam mam problem z porównaniem dwóch tablic, a mianowicie mam dwie tablice po 20 elementów o nazwach voluminy i volumin_ignore. I teraz chciałby sprawdzić czy elementy z tablicy voluminy znajdują się w tablicy volumin_ignore, jeżeli jakiś argument znajduje się gdzieś w tablicy volumin_ignore to ma do zmiennej fail_part przypisać true a jeżeli nie ma takiego elementu to false. Ma ktoś jakieś pomysły jak to zrobić ?? Tutaj podaje kod funkcji, który do tej pory napisałem : void sprawdz_partycje() { cout << endl << endl; for( int i = 1; i <= 19; i++ ) { for( int j = 1; j <= 19; j++ ) { if( voluminy[ j ] == volumin_ignore[ i ] ) { if( volumin_ignore[ j ] != "" ) { fail_part[ i ] = true; } else { fail_part[ i ] = false; } } } } cout << endl << endl << endl; for( int i = 1; i <= 19; i++ ) { cout << fail_part[ i ] << endl; } } A tutaj przykład co mogą zawierać tablice : 1. Tablica voluminy : Pierwszy element : \\?\Volume{11111111-2222-3333-4444-555555555555}\ Drugi element : \\?\Volume{22222222-3333-4444-5555-666666666666}\ Trzeci element : \\?\Volume{66666666-7777-8888-5555-666666666666}\ Czwarty element : \\?\Volume{99999999-5247-5744-6855-268468486465}\
2. Tablica volumin_ignore : Pierwszy element : \\?\Volume{66666666-7777-8888-5555-666666666666}\ Drugi element : \\?\Volume{11111111-2222-3333-4444-555555555555}\
Ps. Ten kod, który podałem powyżej, sprawdza ale według mnie w złą stronę (na odwrót). |
|
pekfos |
» 2013-12-27 16:45:14 Tablice indeksuje się od zera. Poza tym, pętla nie zawsze wstawia wartości do fail_part. |
|
maniek1310 Temat założony przez niniejszego użytkownika |
» 2013-12-27 16:51:01 Znaczy tak ja wiem że się indeksuje od zera, ale po prostu trudno mi jest się przyzwyczaić że pierwszy argument tablicy to jest [0].
Przecież jest warunek sprawdzający czy volumin_ignore nie jest pusty i else (gdy jest pusty). |
|
pekfos |
» 2013-12-27 16:54:52 Przecież jest warunek sprawdzający czy volumin_ignore nie jest pusty i else (gdy jest pusty). |
A co, jeśli pierwszy warunek się nie spełni? Nigdy, na przykład? Wtedy całe fail_part zostanie w stanie niezmienionym. |
|
maniek1310 Temat założony przez niniejszego użytkownika |
» 2013-12-27 16:58:32 Teraz przypisuje ale tylko false. void sprawdz_partycje() { cout << endl << endl; for( int i = 1; i <= 19; i++ ) { for( int j = 1; j <= 19; j++ ) { if( voluminy[ j ] == volumin_ignore[ i ] ) { if( volumin_ignore[ j ] != "" ) { fail_part[ i ] = true; } } else { fail_part[ i ] = false; } } } cout << endl << endl << endl; for( int i = 1; i <= 19; i++ ) { cout << fail_part[ i ] << endl; } } |
|
pekfos |
» 2013-12-27 17:14:16 Najpierw ustaw całą tablicę na false, a potem tylko wstawiaj true. |
|
maniek1310 Temat założony przez niniejszego użytkownika |
» 2013-12-27 17:28:59 Dobra działa tylko że teraz sprawdza tak 1 element tablicy voluminy == 1 element tablicy volumin_ignore 2 element tablicy voluminy == 2 element tablicy volumin_ignore 3 element tablicy voluminy == 3 element tablicy volumin_ignore A mi się rozchodzi żeby sprawdzała tak : 1 element tablicy voluminy == 1 element tablicy volumin_ignore 1 element tablicy voluminy == 2 element tablicy volumin_ignore 1 element tablicy voluminy == 3 element tablicy volumin_ignore 2 element tablicy voluminy == 1 element tablicy volumin_ignore 2 element tablicy voluminy == 2 element tablicy volumin_ignore 2 element tablicy voluminy == 3 element tablicy volumin_ignore 3 element tablicy voluminy == 1 element tablicy volumin_ignore 3 element tablicy voluminy == 2 element tablicy volumin_ignore 3 element tablicy voluminy == 3 element tablicy volumin_ignore A tutaj aktualny kod : void sprawdz_partycje() { for( int i = 0; i < 20; i++ ) { fail_part[ i ] = false; } cout << endl << endl; for( int i = 1; i <= 19; i++ ) { for( int j = 1; j <= 19; j++ ) { if( voluminy[ j ] == volumin_ignore[ i ] ) { if( volumin_ignore[ j ] != "" ) { fail_part[ i ] = true; } } } } cout << endl << endl << endl; for( int i = 1; i <= 19; i++ ) { cout << fail_part[ i ] << endl; } } |
|
pekfos |
» 2013-12-27 17:51:48 No przecież tak sprawdza. for( int i = 1; i <= 19; i++ ) { for( int j = 1; j <= 19; j++ ) { std::cout << i << " == " << j << std::endl; } } |
|
« 1 » 2 |