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

[Lekcja 21] Problem z funkcją porównującą

Ostatnio zmodyfikowano 2013-05-14 20:08
Autor Wiadomość
Astaroth
Temat założony przez niniejszego użytkownika
[Lekcja 21] Problem z funkcją porównującą
» 2013-05-14 19:53:37
Czy da się przekształcić tak te funkcję, by działała, bo ja już pomysłów nie mam.
Za każdym razem zwraca true chodź teraz patrząc na warunek tablica[index] != tablica2[index2]&& index2 < 9 wydaje mi się, że prędzej powinno mi zwracać cały czas false, a nie true.
Funkcja ma za zadanie sprawdzić, czy wartość tablicy o jakimś tam indeksie nie znajduje się w żadnym indeksie na drugiej tablicy.
W kodzie może się znaleźć jakiś głupi błąd, ponieważ wielokrotnie go próbowałem przebudować.
C/C++
bool sprawdzenie( int * tablica, int index, int * tablica2, int index2 )
{
    if( tablica[ index ] == 0 )
    {
        std::cout << "Napotkane zero!" << std::endl;
        return false;
    } else;
   
    do
    {
        if( tablica[ index ] != tablica2[ index2 ] && index2 < 9 )
        {
            std::cout << "true indeks 2 tab" << index2 << std::endl;
            return true;
        } else;
       
        if( tablica[ index ] == tablica2[ index2 ] )
        {
            return false;
        } else;
       
        index2++;
       
    } while( index2 < 9 );
   
    std::cout << "false indeks 2 tab" << index2 << std::endl;
    return false;
}


//Zamykam problem rozwiązałem zmieniając funkcję w ten sposób
C/C++
bool sprawdzenie( int * tablica, int index, int * tablica2, int index2 )
{
    int licznik = 0;
    index2 = 0;
    if( tablica[ index ] == 0 )
    {
        std::cout << "Napotkane zero!" << std::endl;
        return false;
    }
    do
    {
        if( tablica[ index ] == tablica2[ index2 ] )
        {
            std::cout << "False" << std::endl;
            return false;
        }
        index2++;
        licznik++;
    } while( licznik < 8 );
   
    std::cout << "ok indeks 2 tab" << index2 << std::endl;
    return true;
}


}
P-82953
killjoy
» 2013-05-14 20:08:28
Mam nadzieję, że wiesz, że jak zwrócisz wartość to funkcja kończy działanie. Bo wystarczy, że raz nie trafi na tą samą wartość i wychodzi z funkcji.
C/C++
if( tablica[ index ] != tablica2[ index2 ] && index2 < 9 ) //jezeli wartość komórki tablicy za 1 podejściem będzie różna wartości 2
{
    std::cout << "true indeks 2 tab" << index2 << std::endl;
    return true; // to to skończy działanie funkcji zwracając true
}

A i niepotrzebnie za każdym razem piszesz
else;
 po if'ie.
P-82956
« 1 »
  Strona 1 z 1