Witam,
Jaki ejst algorytm do takiego zadanka.
Mamy tablicę n elementową, chcemy zastąpić każdy element tablicy począwszy od 2 do n-1 przez średnią arytmetyczną sąsiadów tablicy pierwotnej(nacisk na o pierwotnej, bo nie wiem jak to zrobić, żeby poprzednie wartości i wyniki wzajemnie się nie zamazywały).
Dzięki za odp. Może być kod w Pascalu, pseudokod, tekstowo, cokolwiek.
Algorytm średniej arytmetycznej operujący na tablicy
-
- Użytkownik
- Posty: 6607
- Rejestracja: 16 sty 2007, o 19:42
- Płeć: Mężczyzna
- Podziękował: 119 razy
- Pomógł: 1823 razy
Algorytm średniej arytmetycznej operujący na tablicy
Wyniki policz sobie w oddzielnej tablicy, to ci się dane nie zamażą Tak będzie najszybciej i bez jakichś kombinacji.
Pozdrawiam.
Pozdrawiam.
-
- Użytkownik
- Posty: 267
- Rejestracja: 30 kwie 2007, o 21:39
- Płeć: Mężczyzna
- Lokalizacja: z internetu
- Podziękował: 47 razy
- Pomógł: 2 razy
Algorytm średniej arytmetycznej operujący na tablicy
Tak zrobić ne mogę.(odgórne zasady)Zależy mi na optymalnym alogrytmie o koszcie pamięciowym stałym(niezależnym od n) i złożoności obliczeniowej liniowej.
Przy okazji jak znaleźć drugą co do wartości wielkość w tablicy? Wykreślenie największej i szukanie od nowa nie wchodzi w rachubę, algorytm musi być optymalny. :C help
Upieram się tak bo za algorytmy wolniejsze uwalają u mnie.-- 1 listopada 2009, 19:44 --Jak wypełnić ręcznie tablicę w pascalu
var t:array [1..n] of integer;
i,l:integer;
begin
i:=1;
l:=1;
t=[1,2,3,4,5,6,7,8,9,10];
Tak jest zle to jak dobrze, n=10
Przy okazji jak znaleźć drugą co do wartości wielkość w tablicy? Wykreślenie największej i szukanie od nowa nie wchodzi w rachubę, algorytm musi być optymalny. :C help
Upieram się tak bo za algorytmy wolniejsze uwalają u mnie.-- 1 listopada 2009, 19:44 --Jak wypełnić ręcznie tablicę w pascalu
var t:array [1..n] of integer;
i,l:integer;
begin
i:=1;
l:=1;
t=[1,2,3,4,5,6,7,8,9,10];
Tak jest zle to jak dobrze, n=10
Algorytm średniej arytmetycznej operujący na tablicy
Musisz mieć 2 zmienne pomocniczą i trzymać tam np.2 ostatnie, niezapisane średnie a potem je przypisywać odpowiednio. Cała filozofia.
Jak znaleźć drugi element liniowo? Tak jak maks a tylko zapisuj dwie liczby. Trochę więcej warunków tylko będzie.
Jak znaleźć drugi element liniowo? Tak jak maks a tylko zapisuj dwie liczby. Trochę więcej warunków tylko będzie.
-
- Użytkownik
- Posty: 30
- Rejestracja: 27 sie 2008, o 13:29
- Płeć: Mężczyzna
- Lokalizacja: Łódź
- Podziękował: 3 razy
- Pomógł: 5 razy
Algorytm średniej arytmetycznej operujący na tablicy
W pascalu nie piszę, więc podaję przykładowy kod w C. Jest trochę komentarzy, to powinno pomóc:Najważniejsza jest funkcja zamien(). Reszta to tylko "ozdobniki".
Pozdrawiam.
-- 1 listopada 2009, 20:44 --
Jeśli chodzi o problem nr 2
Ale 2 przebiegi gwarantują rozwiązanie, poza tym zachowują liniowość algorytmu, więc nie widzę problemu.
Kod: Zaznacz cały
#include <stdio.h>
// stała ILE_ELEMENTOW - liczba elementów tablicy
const unsigned ILE_ELEMENTOW=20;
int wyswietl(double tab[]);
int zamien(double tab[]);
main() {
int i;
double tab[ILE_ELEMENTOW];
srand(time(0));
// inicjujemy tablicę losowymi wartościami
for(i = 0; i < ILE_ELEMENTOW; i++) tab[i]=rand()%20;
// wyświetlamy elementy tablicy
printf("Tablica poczatkowa:
");
wyswietl(tab);
// wywołujemy funkcję obliczającą średnie arytmetyczne
zamien(tab);
// wyświetlamy nowe elementy tablicy
printf("
Tablica po wykonaniu dzialan:
");
wyswietl(tab);
return 0;
}
int wyswietl(double tab[]) {
int i;
for(i=0; i<ILE_ELEMENTOW; i++) printf("%lg ", tab[i]);
return 0;
}
int zamien(double tab[]) {
int i;
//poprzednia - zmienna zachowująca wartość poprzedniego elementu tablicy
double poprzednia=tab[0], srednia;
for(i=1; i<ILE_ELEMENTOW-1; i++) {
srednia=(poprzednia+tab[i]+tab[i+1])/3;
poprzednia=tab[i];
tab[i]=srednia;
}
return 0;
}
Pozdrawiam.
-- 1 listopada 2009, 20:44 --
Jeśli chodzi o problem nr 2
to wydaje się, że w 1 przebiegu nie da się tego zrobić. Gdyby tak było, to sortowanie byłoby prostszeDuke pisze:Przy okazji jak znaleźć drugą co do wartości wielkość w tablicy? Wykreślenie największej i szukanie od nowa nie wchodzi w rachubę, algorytm musi być optymalny. :C help
Ale 2 przebiegi gwarantują rozwiązanie, poza tym zachowują liniowość algorytmu, więc nie widzę problemu.
Ostatnio zmieniony 2 lis 2009, o 08:20 przez peterp, łącznie zmieniany 1 raz.
- kadiii
- Użytkownik
- Posty: 642
- Rejestracja: 20 gru 2005, o 21:04
- Płeć: Mężczyzna
- Lokalizacja: Wrocław
- Pomógł: 130 razy
Algorytm średniej arytmetycznej operujący na tablicy
Co do drugiego, czyli szukanie drugiego największego elementu, to można to zrobić optymalnie w \(\displaystyle{ n+log_{2}n-2}\) porównań korzystając ze struktury drzewa. ładny przykład jest w M.M.Sysło - układasz sobie drabinkę turnieju, potem zabierasz mistrza i korzystasz z wcześniejszych wyników meczów.