Instrukcje Iteracji - pętla REPEAT

BedzieDobrze
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 17 paź 2010, o 16:42
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 1 raz

Instrukcje Iteracji - pętla REPEAT

Post autor: BedzieDobrze »

Witam. To mój pierwszy post, więc proszę o wyrozumiałość.
Miałem do wykonania zadanie:

Napisz specyfikację problemu algorytmicznego a także zapisz algorytm za pomocą pseudojęzyka. Algorytm ma obliczać pole powierzchni i obwód trójkąta prostokątnego. Długości boków przy kącie prostym a, b są podawane na wejściu algorytmu. Sprawdź poprawność wprowadzonych boków. Zrealizuj problem za pomocą pętli: REPEAT.

Byłem chory, w czasie przerabiania tego tematu w szkole i jestem sporo do tyłu. Zrobiłem to w następujący sposób i jestem prawie pewien, że to źły, ale muszę się tego nauczyć, więc proszę o pomoc. :/

Specyfikacja:

Problem: Obliczanie pola powierzchni i obwodu trójkąta prostokątnego.
Dane wejściowe: a, b, c Є N – a, b przyprostokątne, c - przeciwprostokątna.
Dane wyjściowe: Pp, Obw Є N – pole powierzchni i obwód. Wyświetlenie wyniku Pp, Obw lub komunikatu o błędnych danych.

Pseudojęzyk:

START;
Wczytaj (a,b);
Begin
IF (a>0, b>0) Then
Pp:=((a*b)/2);
Obw:=(a+b+\(\displaystyle{ \sqrt{a^2+b^2}}\));
Else
Wypisz (“Błędne Dane, boki a, b muszą być < 0”);
Repeat
Wczytaj (a, b);
Until (a>0, b>0)
End
Wypisz („Pole Powierzchni =” Pp, „Obwód =” Obw)
STOP;

Pozdrawiam i z góry dziękuję.
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

Instrukcje Iteracji - pętla REPEAT

Post autor: kadiii »

Obliczaj wszystkie wartości dopiero jak dostaniesz poprawne dane - w tej chwili jeśli ktoś poda błędne dane za pierwszym razem to za kolejnym jak wpisze dobrze nic się nie stanie - nie obliczysz ani pola ani obwodu. Lepiej tak:

Kod: Zaznacz cały

begin
 repeat
  Wczytaj a,b
 until (a>0 and b>0)
## w tym momencie wiesz, że dane są prawidłowe więc możesz na nich operować
Pp:=a*b/2
Obw:=a+b+sqrt(a*a+b*b)
Wypisz Pp
Wypisz Obw
end
Poza tym błędem jest wpisanie przeciwprostokątnej(c) do danych wejściowych
ODPOWIEDZ