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

[C++] Sprawdzanie dwóch tablic

Ostatnio zmodyfikowano 2013-12-27 18:36
Autor Wiadomość
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 :
C/C++
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).
P-100318
pekfos
» 2013-12-27 16:45:14
Tablice indeksuje się od zera. Poza tym, pętla nie zawsze wstawia wartości do fail_part.
P-100322
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).
P-100326
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.
P-100328
maniek1310
Temat założony przez niniejszego użytkownika
» 2013-12-27 16:58:32
Teraz przypisuje ale tylko false.
C/C++
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 ] != "" )
                {
                    //cout << j << "    " << voluminy[j] << endl;
                    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;
    }
}
P-100331
pekfos
» 2013-12-27 17:14:16
Najpierw ustaw całą tablicę na false, a potem tylko wstawiaj true.
P-100334
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 :
C/C++
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 ] != "" )
                {
                    //cout << j << "    " << voluminy[j] << endl;
                    fail_part[ i ] = true;
                }
            }
        }
    }
   
    cout << endl << endl << endl;
   
    for( int i = 1; i <= 19; i++ )
    {
        cout << fail_part[ i ] << endl;
    }
}
P-100337
pekfos
» 2013-12-27 17:51:48
No przecież tak sprawdza.
C/C++
for( int i = 1; i <= 19; i++ )
{
    for( int j = 1; j <= 19; j++ )
    {
        std::cout << i << " == " << j << std::endl;
    }
}
P-100339
« 1 » 2
  Strona 1 z 2 Następna strona