petla while do -gdzie jest blad??

aaleks1985
Użytkownik
Użytkownik
Posty: 120
Rejestracja: 21 kwie 2009, o 12:13
Płeć: Kobieta
Podziękował: 9 razy

petla while do -gdzie jest blad??

Post autor: aaleks1985 »

witam,
mam do napisania program wczytujący podawane przez użytkownika liczby dopóki tworzą one ciąg rosnący. Dodatkowo wyświetlić średnią arytmetyczna liczb tego rosnącego ciągu.
Napisałam go ale po wpisaniu pierwszej liczby i wciśnięciu Entera od razu wyświetla średnią. Nie pozwala na wpisanie następnej liczby.Za bardzo nie wiem gdzie robię błąd. Proszę o wskazówkę.

Kod: Zaznacz cały

var poprz, akt : real;
    sr_aryt : real;
    l_wyraz : integer;

begin

  writeln('Wprowadzaj wyrazy ciagu.Po kazdej wcisnij Enter: ');
  writeln('Liczba mniejsza lub rowna poprzedniej konczy wczytywanie.');

  readln(akt);
  poprz := akt;
  sr_aryt := akt;
  l_wyraz := 1;

  while poprz < akt do begin
    write('Podaj element: ');
    sr_aryt := sr_aryt + akt;
    l_wyraz := l_wyraz + 1;
    poprz := akt;
    readln(akt);
  end;

  sr_aryt := sr_aryt / l_wyraz;


  writeln;
  writeln('Srednia arytmetyczna wyrazow ciagu rosnacego: ', sr_aryt:7:2);
  
  writeln;
  writeln('Wcisnij Enter');
  readln;

end.
Ostatnio zmieniony 12 gru 2009, o 15:53 przez Szemek, łącznie zmieniany 1 raz.
Powód: Kod programu umieszczaj w tagach [code][/code].
adek05
Użytkownik
Użytkownik
Posty: 450
Rejestracja: 3 kwie 2007, o 18:38
Płeć: Mężczyzna
Lokalizacja: Biała Podlaska
Podziękował: 12 razy
Pomógł: 68 razy

petla while do -gdzie jest blad??

Post autor: adek05 »

readln(akt);
poprz := akt;
sr_aryt := akt;
l_wyraz := 1;

while poprz < akt do begin
Zauważ, że na początku programu, masz że poprz = akt a wtedy gdy wchodzi w pętlę masz sprzeczność z warunkiem i koniec zabawy.
Awatar użytkownika
Szemek
Użytkownik
Użytkownik
Posty: 4819
Rejestracja: 10 paź 2006, o 23:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 43 razy
Pomógł: 1407 razy

petla while do -gdzie jest blad??

Post autor: Szemek »

aaleks1985,
poprz := akt;
Jeśli przed pętlą wyraz poprzedni ustawiasz jako równy wyrazowi aktualnemu to nie dziw się, że pętla się po prostu nie wykona.
aaleks1985
Użytkownik
Użytkownik
Posty: 120
Rejestracja: 21 kwie 2009, o 12:13
Płeć: Kobieta
Podziękował: 9 razy

petla while do -gdzie jest blad??

Post autor: aaleks1985 »

no tak...ale jak nie podam poprz := akt; to w momencie wpisania kolejnej liczby mniejszej od poprzedniej wlicza ja do sredniej arytmetycznej.A powinien zsumowac tylko rosnace wyrazy ciagu...
Nie wiecie jak to zapisac?
adek05
Użytkownik
Użytkownik
Posty: 450
Rejestracja: 3 kwie 2007, o 18:38
Płeć: Mężczyzna
Lokalizacja: Biała Podlaska
Podziękował: 12 razy
Pomógł: 68 razy

petla while do -gdzie jest blad??

Post autor: adek05 »

Licz średnią w pętli. Teraz też liczysz, ale możesz przecież pominąć te początkowe liczenie przed pętlą przez zmianę wykonywania czynności wewnątrz while.
ODPOWIEDZ