matematykaszkolna.pl
C++ frustracja: C++ W funkcji zwracającej boola mamy tablicę n elementową złożoną z samych zer i jedynek. Niech ta funkcja zwraca prawdę, jeśli w tablicy jest jeden nieprzerwany ciąg jedynek. Na przykład {1,0,0} − prawda {0,0,1,1,1,0} − prawda {0,1,1,0,1,1 } − fałsz {0,0} − fałsz
5 gru 18:45
frustracja: Miałem taki pomysł, żeby zrobić licznik przy porównywaniu dwóch sąsiednich wyrazów i jeśli licznik będzie większy od dwóch, to w takim wypadku funkcja zwraca fałsz, ale nie wiem czy to będzie działać
5 gru 18:49
Maciess: Nie wiem czy dobrze rozumiem. {,0,0,1,1,1,1,0,1} − prawda (?)
5 gru 18:55
Alky: Ciąg jedynek ma być nieprzerwany więc nieprawda. @Frustracja może tak być jak mówisz, ale musisz sprawdzać od czego zaczynasz, bo inny licznik będize jak zaczniesz od 1 a inny jak od 0.
5 gru 18:57
Alky: tzn {1,0,1} ilość zmian: 2 − warunek wystarzcający żeby dać false; {0,1,0} ilość zmian: 2 − warunek niewystarczający wystarzcający żeby dać false; − musi być od 3
5 gru 18:59
Maciess: @frustracja Jak skończysz możesz podrzucić tu program? Musze sobie przypomnieć jak się przekazywało tabliczki do funkcji
5 gru 19:17
Alky: bool funkcja(char tab[]); int main(int argc, char** argv) { char tablica[10]; //dalej jakieś uzupełnienie tablicy funkcja(tablica); return 0; } bool funkcja(char tab[]) { . . } Tak to będzie wyglądało w tym zadaniu
5 gru 19:35
Alky: bool funkcja(char tab[]) { . . } int main() { char tablica[10]; //dalej jakieś uzupełnienie tablicy funkcja(tablica); return 0; } w zasadzie można to obciąć do tego, żeby nie wprowadzać niepotrzebnego zamieszania
5 gru 19:37
jc: Zaczynamy od naszego własnego 0 (umieściłem przed przecinkiem). 0,00000 0 zmian − źle 0,01111 1 zmiana − dobrze 0,11111 j.w. 0,01100 2 zmiany − dobrze 0,01101 3 zmiany źle, więcej też źle
5 gru 19:51
frustracja: Zrobiłem tak: int licznik =0; bool wartość = false; for (int i=1; i<n; i++) { if (tab[i]==tab[i−1]) { if (tab[i] ==1) wartosc = true; } else licznik++; if( licznik > 2 ) wartosc = false; return wartosc;
5 gru 20:12
frustracja: nie domknąłem tablicy, po else licznik ++; powinno być } ale bardziej chodzi mi o sposób czy dobry, a nie o poprawność składni
5 gru 20:14
jc: Sprawdź na przykładowych danych. 00110 true 11000 true 11111 true 01101 false bool test(int tab[], int n){ int k = tab[0]; for(int i=0; i<n−1; i++) k+= tab[i]tab[i+1]; return (k==0 || k>2) ? false : true; }
5 gru 20:21