[C++] Ciąg bitoniczny
[C++] Ciąg bitoniczny
Kurde nie jestem pewien, bo kiedy spróbowałem dynamicznie zadeklarować tablice to dostałem jeszcze więcej błędów, poza tym jak się skompiluje program to on działa dobrze .Błędem jest odwoływanie się do niezdefiniowanej wartości t[n]. Spróbuj też przeanalizować przypadki równych elementów.
-
- Użytkownik
- Posty: 5101
- Rejestracja: 11 mar 2011, o 16:31
- Płeć: Mężczyzna
- Lokalizacja: 52°16'37''N 20°52'45''E
- Podziękował: 4 razy
- Pomógł: 1001 razy
[C++] Ciąg bitoniczny
Ukryta treść:
Nieprawda. Wynik działania programu jest niezdeterminowany. W ostatnim kroku pętli wychodzisz poza tablicę.Fabix pisze: poza tym jak się skompiluje program to on działa dobrze .
-
- Użytkownik
- Posty: 311
- Rejestracja: 30 gru 2011, o 02:21
- Płeć: Mężczyzna
- Lokalizacja: Puławy
- Podziękował: 11 razy
- Pomógł: 53 razy
[C++] Ciąg bitoniczny
Kod: Zaznacz cały
int spr(int *tab, int n){
int i;
int flaga=0;
for(i=0;i<n-1;++i){
if(flaga == 0 && tab[i]>tab[i+1]){++flaga;continue;}
else if(flaga == 1 && tab[i]<tab[i+1])++flaga;
}
if(flaga<2)return 1;
else return 0;
}
//gdy funkcja zwróci wartość jeden to ciąg spełnia warunki zadania.
- rochaj
- Użytkownik
- Posty: 411
- Rejestracja: 3 lip 2012, o 23:51
- Płeć: Mężczyzna
- Lokalizacja: komp
- Podziękował: 128 razy
- Pomógł: 2 razy
[C++] Ciąg bitoniczny
Ciąg stały nie jest bitoniczny.gryxon pisze:
Coś takiego nie wchodzi? Problem serio wydaje się łatwy. (wersja dla nierosnącego,niemalejącego.)Kod: Zaznacz cały
int spr(int *tab, int n){ int i; int flaga=0; for(i=0;i<n-1;++i){ if(flaga == 0 && tab[i]>tab[i+1]){++flaga;continue;} else if(flaga == 1 && tab[i]<tab[i+1])++flaga; } if(flaga<2)return 1; else return 0; } //gdy funkcja zwróci wartość jeden to ciąg spełnia warunki zadania.
-
- Użytkownik
- Posty: 311
- Rejestracja: 30 gru 2011, o 02:21
- Płeć: Mężczyzna
- Lokalizacja: Puławy
- Podziękował: 11 razy
- Pomógł: 53 razy
[C++] Ciąg bitoniczny
To chyba wystarczy zmienić znak na nierówności nieostre w warunkach. przetestuj teraz mój poprzedni link (zeedytowałem).
Kod: Zaznacz cały
int spr(int *tab, int n){
int i;
int flaga=0;
for(i=0;i<n-1;++i){
if(flaga == 0 && tab[i]>=tab[i+1]){++flaga;continue;}
else if(flaga == 1 && tab[i]<=tab[i+1])++flaga;
}
if(n==2 && tab[0]==tab[1])return 0;
if(flaga<2)return 1;
else return 0;
}
-
- Użytkownik
- Posty: 5101
- Rejestracja: 11 mar 2011, o 16:31
- Płeć: Mężczyzna
- Lokalizacja: 52°16'37''N 20°52'45''E
- Podziękował: 4 razy
- Pomógł: 1001 razy
[C++] Ciąg bitoniczny
Jakże nie? Byłoby prościej, gdybyś porządnie zdefiniował ciąg bitoniczny. Trudno jest rozwiązywać zadanie, jeśli się nie rozumie jego treści.rochaj pisze: Ciąg stały nie jest bitoniczny.
[C++] Ciąg bitoniczny
Więc dla uściślenia proponuję w sensie słabym: ciąg \(\displaystyle{ (a_n)}\) skończony bądź nieskończony nazywamy bitonicznym, jeśli istnieje \(\displaystyle{ n_0}\) takie, że
\(\displaystyle{ a_1\le\dots\le a_{n_0-1}\le a_{n_0}}\) oraz \(\displaystyle{ a_{n_0}\ge a_{n_0+1}\ge a_{n_0+2}\ge\dots}\)
Dopuszczamy do tego ciągi niemalejące. Nierosnące to ciągi bitoniczne z \(\displaystyle{ n_0=1}\).
\(\displaystyle{ a_1\le\dots\le a_{n_0-1}\le a_{n_0}}\) oraz \(\displaystyle{ a_{n_0}\ge a_{n_0+1}\ge a_{n_0+2}\ge\dots}\)
Dopuszczamy do tego ciągi niemalejące. Nierosnące to ciągi bitoniczne z \(\displaystyle{ n_0=1}\).
- rochaj
- Użytkownik
- Posty: 411
- Rejestracja: 3 lip 2012, o 23:51
- Płeć: Mężczyzna
- Lokalizacja: komp
- Podziękował: 128 razy
- Pomógł: 2 razy
[C++] Ciąg bitoniczny
Ciąg bitoniczny to ciąg, który najpierw rośnie, a potem maleje. W ciągu bitonicznym \(\displaystyle{ a_1, \ldots , a_n}\) istnieje takie \(\displaystyle{ i \in \{1, \ldots , n \},}\) że ciąg \(\displaystyle{ a_1, \ldots , a_i}\) jest ściśle rosnący, a ciąg \(\displaystyle{ a_i, \ldots, a_n}\) jest ściśle malejący. Ciąg (ściśle) rosnący oraz ciąg (ściśle) malejący są ciągami bitonicznymi.
Ostatnio zmieniony 20 gru 2014, o 12:13 przez Dasio11, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Powód: Poprawa wiadomości.
[C++] Ciąg bitoniczny
Warto jednak badania przeprowadzić dopuszczając nierówności słabe. Przynajmniej tak sądzę.
- Vardamir
- Użytkownik
- Posty: 1913
- Rejestracja: 3 wrz 2010, o 22:52
- Płeć: Mężczyzna
- Lokalizacja: Wrocław
- Podziękował: 6 razy
- Pomógł: 410 razy
[C++] Ciąg bitoniczny
No w końcu może coś sam zrobisz? Problem jest prosty tylko nie podałeś dokładnych informacji.rochaj pisze:no w końcu jak to będzie, bo problem wydawał się prosty
To powinno się znaleźć w pierwszym poście.rochaj pisze:Ciąg bitoniczny to ciąg, który najpierw rośnie, a potem maleje. W ciągu bitonicznym \(\displaystyle{ a_1, \ldots , a_n}\) istnieje takie \(\displaystyle{ i \in \{1, \ldots , n \},}\) że ciąg \(\displaystyle{ a_1, \ldots , a_i}\) jest ściśle rosnący, a ciąg \(\displaystyle{ a_i, \ldots, a_n}\) jest ściśle malejący. Ciąg (ściśle) rosnący oraz ciąg (ściśle) malejący są ciągami bitonicznymi.
Ukryta treść:
-
- Użytkownik
- Posty: 311
- Rejestracja: 30 gru 2011, o 02:21
- Płeć: Mężczyzna
- Lokalizacja: Puławy
- Podziękował: 11 razy
- Pomógł: 53 razy
[C++] Ciąg bitoniczny
szw1710 pisze:Warto jednak badania przeprowadzić dopuszczając nierówności słabe. Przynajmniej tak sądzę.
Kod: Zaznacz cały
int spr(int *tab, int n){
int i;
int flaga=0;
for(i=0;i<n-1;++i){
if(flaga == 0 && tab[i]>tab[i+1]){++flaga;--i;continue;}
else if(flaga == 1 && tab[i]<tab[i+1])++flaga;
}
if(flaga<2)return 1; // jest bitoniczny
else return 0; //nie jest
}