
Apocaliptiq [ Parapsychic Man ]
Algorytmy, pomożecie?
A więc mam następjący algorytm obliczający średnią:
1.Start
2.podaj a
3. podaj b
4. podaj c
5. podaj d
6. v:=(a+b+c+d):4
7. podaj v
8. Stop
Mam go przerobić w taki sposób aby sam sobie wyliczył z ilu liczb ma obliczać średnią.
(algorytm jest narysowany schematem blokowym ale obrazka nie dodam bo przy moim necie...ech:))
więc pomyślałem zeby dodać zmienną "podziel". Po wpisaniu dwóch liczb przez użytkownika było by pole wyboru "czy chcesz obliczyć średnią czy dodać liczbe"(czy cos w tym stylu). Jezeli chce obliczyć to oblicza, jezeli nie to pyta o kolejną liczbę dodając do wartości zmiennej "podziel" +1. Czy coś takiego będzie dobrze?(chce sie upewnić)
M'q [ Schattenjäger ]
Zapętl algorytm pytaniem czy dodać kolejną liczbę, przy tak wracasz, przy nie obliczasz średnią.

Apocaliptiq [ Parapsychic Man ]
o tym właśnie myślałem ale nie napisałem wprost;) ale dzieki za odp.

Apocaliptiq [ Parapsychic Man ]
a jeszcze jedno pytanie.
No wiec jest pętla. Tylko jak później napisać że ma wziąć takie a nie inne zmienne. Bo jak sie dodaje to moze ich być np. tysiąc to jak to zrobić. Jakie działanie? jak określić te zmienne które ewentualnie mogłyby być dodane?
nutkaaa [ Panna B. ]
hmm bym powiedziała, że chyba trza by tu skorzystać z tablic jak chcesz wybrać konkretne zmienne spośród podanych, ale to nie wiem jak rozrysować w C++ lepiej bym chyba wiedziała jak to zapisać ;)
nagytow [ Firestarter ]
Tak na szybko:
1. start
2. licznik := 0
3. suma := 0
4. srednia := 0
5. wypisz: 'Podaj liczbe (0 konczy wprowadzanie): '
6. wczytaj liczba
7. jesli liczba = 0 skocz do 11.
8. suma := suma + liczba
9. licznik := licznik + 1
10. skocz do punktu 5.
11. jesli licznik != 0 to srednia := suma/licznik
12. wypisz: srednia
Mozna by to krocej zapisac w jakims jezyku programowania, ale tak chyba bedzie bardziej zrozumiale. Idea dzialania jest raczej oczywista, jednak jesli masz problemy to pisz :)
alpha_omega [ Senator ]
No ja bym to zrobił właśnie na tablicach i wrzucił zmienną n, która przechowuje indeks danego elementu tj. gdy masz jedną liczbę - pokazuje 0, gdy dwie - 1, gdy trzy - 2 itd. Później przelatujesz przy wyświetlaniu w jakiejś pętli po całej tablicy sumując kolejne elementy i na koniec dzieląc całość przez n+1. I masz średnią.
Albo inaczej - zmienną 'suma' ustalasz na początku i przy każdym podaniu nowej liczby wpisujesz suma+=podana_liczba (albo: suma=suma+podana_liczba). Dodatkowo masz zmienną n, która wzrasta o jeden przy każdej nowo podanej liczbie, a więc trzyma aktualną ilość wpisanych już liczb. I dalej jak wyżej, gdy już nie dodajesz żadnych liczb, a chcesz wynik
dzielisz sumę przez n i wyświetlasz.
techi [ Dębowy Przyjaciel Żubra ]
Start->licznik=0, suma=0, wynik=0->podaj liczbę(a)->suma=suma+a, licznik=licznik+1 _>Czy chcesz podać nastepna liczbe(tu robisz pętle przed podaj liczbę(Tak->wraca, Nie->dalej idzie)->wynik=suma/licznik->drukuj wynik->stop
Chyba tak;)
Chociaz nie zrozumiałem Twojego posta nr. 4;)

Apocaliptiq [ Parapsychic Man ]
heh no w Pascalu to bym to z dziesięć razy napisał ;). A tu nie mogłem wpaść na pomysł może dlatego ze mam innymi sprawami głowę zawaloną:)
claudespeed18 [ zią ]
moze ktos mi napisac algorytm dla silni N! ????
to wazne i zeby szybko bylo mam na to 15 min
dzieks
Regis [ ]
ale w czym? w C++ to bedzie tak (nie sprawdzalem, ale raczej sie nie machnalem):
----
int wynik = 1;
for(int i=2; i<=n; n++) ‹
wynik *= n;
›
cout << wynik;
----
gdzie n to rzecz jasna to samo N ktore stoi przy znaczku silni.
alpha_omega [ Senator ]
Oj chyba się machnąłeś - ta pętla nigdy się nie skończy.
int wynik = 1;
int n = 0;
cout<<"Podaj n";
cin>>n;
for(int i=2; i<=n; i++)
wynik*=i;
cout << wynik;
Jakoś tak, o ilepamiętam komendy.
umek [ Szczęśliwy ]
nie lepiej rekurencją?
int wynik;
if(a==1)
wynik=1;
else
wynik=silnia(a-1)*a;
return wynik;
alpha_omega [ Senator ]
Ale po co rekurencja do takich obliczeń, tylko pamięć zżera.
Regis [ ]
Oczywiscie, idiotyczny blad - zwiekszac sie mial iterator, a nie wartosc dana odgornie, to chyba oczywiste.