[Lekcja 21] Problem z funkcją porównującą
Ostatnio zmodyfikowano 2013-05-14 20:08
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ć. 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 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; }
} |
|
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. if( tablica[ index ] != tablica2[ index2 ] && index2 < 9 ) { std::cout << "true indeks 2 tab" << index2 << std::endl; return true; }
A i niepotrzebnie za każdym razem piszesz else; po if'ie. |
|
« 1 » |