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