matematykaszkolna.pl
program program: Program w C++ int funkcja (int A) {if (A==1) return 2; else return funkcja(A−1)+5.36; if ((funkcja(A−1)+5.36)>47) return (floor(funkcja(A−1)+5.36)−18; else return ceil(funkcja(A−1)+5.36);} Chce, zeby pojawialy sie wlasnie takie wartosci, ale tak nie jest. Czy tu jest jakis blad?
18 sty 14:15
Dziadek Mróz: Dostajesz po łapach za brak formatowania kodu, ówno widzisz i ówno wiesz co napisałeś int funkcja (int A) { if (A == 1) return 2; else return funkcja(A−1) + 5.36; if ((funkcja(A−1) + 5.36) > 47) return (floor(funkcja(A−1) + 5.36) − 18; else return ceil(funkcja(A−1) + 5.36); } Przeczytaj sobie jakikolwiek poradnik pisania kodu, nie algorytmu tylko tego jak kod wygląda estetycznie i korzystaj na bieżąco. Uwierz mi to dobra rzecz, dostaniesz od kogoś ładnie sformatowany kod to nawet bez specyfikacji będziesz wiedział o co biega emotka Jaki masz algorytm, podaj treść zadania bo wg mnie kod działa dobrze
18 sty 15:28
program: Czym sie rozni kod od algorytmu?
18 sty 18:44
program: Ale np. dla A=50 chcialbym, zeby byla wartosc 36 (bo (50−1)+5.36=54,36>47 wiec 54−18=36), a wychodzi mi 247.
18 sty 19:22
program: Dobra juz wiem o co chodzi.
18 sty 19:50
Dziadek Mróz: Chodziło mi o składnię kodu, tego jak komputer to widzi, algorytm możesz opisać słownie, kod możesz stworzyć w różnych językach programowania, wiesz o co chodzi emotka Masz przedstawioną funkcję rekurencyjną, to znaczy taką, która sama się wywołuje i to wywołanie wpływa na wynik końcowy. Wyjaśnię na prostszym przykładzie: silnia(n): if n<0: return 0 else if n==0: return 1 else: return n*silnia(n−1) Przejdźmy ten algorytm dla jakichś wartości testowych:, n=−1, n=0 oraz n=3 silnia(n=−1): if −1<0 T return 0 // to jest wynik silnia(−1) silnia(n=0): if 0<0 N else if 0==0 T return 1 // to jest wynik silnia(0) silnia(n=3): if 3<0 N else if 3==0 N else return 3*silnia(3−1=2) silnia(n=2): if 2<0 N else if 2==0 N else return 2*silnia(2−1=1) silnia(n=1): if 1<0 N else if 1==0 N else return 1*silnia(1−1=0) silnia(n=0): if 0<0 N else if 0==0 T return 1 return 1*1=1 return 2*1=2 return 3*2=6 // to jest wynik silnia(3) Jakby obejść Twój kod to wyjdzie nam, że zasięg mamy do pierwszego if...else, drugi się nigdy nie wykona. A=3 fun(A=3): if 3==1 N else return fun(3−1=2)+5.36 fun(A=2): if 2==1 N else return fun(2−1=1)+5.36 fun(A=1): if 1==1 T return 2 return 2+5.36=7.36 return 7.36+3.36=10.72 // to jest wynik dla funkcja(3)
18 sty 20:14
program: Ok. Dziekuje. A jakby wygladal algorytm obliczania silni, ale niezapisany slowami tylko symbolicznie?
18 sty 22:25
program: Czyli: Podaj dane: tu jakies kroki jakby to wygladalo?
18 sty 22:26
Danko: int s; long long silnia = 1; cout << "podaj liczbe" << endl; cin >> s; for (int i = 1; i<=s;i++) silnia *= i; cout << silnia << endl; system("PAUSE"); return(0); tutaj nalezy sie posluzyc inkrementacja,nie trzeba rekurencyjnie
18 sty 22:29
Dziadek Mróz: Można też tak: int s; cin >> s; if (s >= 0) { uint64_t silnia = 1; // unsigned long long int, typedef unsigned long long int uint64_t; for (int i=1; i<=s; i++) { silnia *= i; } cout << silnia << endl; } else { cout << "Silnia tylko z wiekszych rownych 0 [>=0]" << endl; }
18 sty 23:00
program: I to jest ten algorytm?
19 sty 00:07
FullStackDev: @Dziadek Mróz Twoje formatowanie też pozsostawia wiele do życzenia. Zanim pouczysz innych lepiej sam zajrzyj jak się poprawnie formatuje kod.
19 sty 00:36
Dziadek Mróz: Jest wiele metod formatowania kodu, korzystam z takiej jaką kiedyś zaproponował mi plugin formatujący do Notepad++
19 sty 07:07
program: Jakby wygladal ten algorytm?
19 sty 07:51
program: ?
19 sty 16:25
Dziadek Mróz: 1. Podaj liczbę pod silnią n cin >> n; 2. Jeżeli n >= 0 if (n>=0) { 2.1. silnia = 1 uint64_t silnia = 1; 2.2. i = 1 for (int i=1; 2.3. Jeżeli i <= n i<=n; 2.3.1 silnia = silnia*i silnia *= i; 2.3.2 i = i + 1 i++) { 2.3.3 Idź do 2.2 } // koniec for(... 2.4. Inaczej wypisz silnia cout << silnia << endl; } // koniec if (n>=0) 3. Inaczej wypisz "Silnia tylko z n >= 0" else { cout << "Silnia tylko ... } 4. Koniec return 0;
19 sty 16:52
Mariusz: Przeczytaj sobie jakikolwiek poradnik pisania kodu, nie algorytmu tylko tego jak kod wygląda estetycznie i korzystaj na bieżąco. Uwierz mi to dobra rzecz, dostaniesz od kogoś ładnie sformatowany kod to nawet bez specyfikacji będziesz wiedział o co biega Jeśli chodzi o czytelność kodu to sensownie dobrane komentarze więcej dają niż wcięcia Dla mnie na ogół wystarczy jedna instrukcja jedna linia Jeśli pisałeś w Pythonie to wiesz że wcięcia potrafią być uciążliwe
20 sty 11:20