Program sprawdzający czy da się utworzyć trójkąt - jak zamienić wartości dwóch zmiennych?

Program sprawdzający czy da się utworzyć trójkąt - jak zamienić wartości dwóch zmiennych?

Wątek przeniesiony 2014-11-11 00:18 z Delphi i Pascal przez flowCRANE.

K6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
0

Witam. Więc Mam za zadanie zrobić program, który poprosi o podanie długości trzech boków. Później, jeśli obliczy, że da się zrobić z nich trójkąt, to napisze, że się da. Dodatkowo sprawdza, czy powstały trójkąt będzie prostokątny.

Póki co wygląda to tak:

Kopiuj
program trojkat;

var
 max : integer;
 bok2 : integer;
 bok3 : integer;


 begin
 Writeln('podaj dlugosc pierwszego boku');
 Readln(max);

 Writeln('podaj dlugosc drugiego boku');
 Readln(bok2);

 Writeln('podaj dlugosc trzeciego boku');
 Readln(bok3);

     if max<bok2
     then max:=bok2;

     if max<bok3
     then max:=bok3;

     if max<(bok2+bok3)
     then writeln('z tych bokow mozna zbudowac trojkat')
     else writeln('z tych bokow nie mozna zbudowac trojkata');

     if sqr(max)<(sqr(bok2)+sqr(bok3))
     then writeln('z podanych boków powsatnie trójkąt prostokątny');
Readln;

end.

Jednak wiem, że program nie działa prawidłowo, bo owszem-podmienia wartość maxa na np. bok3, ale bok3 już nie przyjmuje wartości maxa. W związku z tym mam pytanko-da się jakoś podmienić wartości dwóch zmiennych.

Np. Mając Max=3 , bok2=5
Chciałbym je zamienić tak, aby bok2=3 , max=5
Czyli np, podając wartości 1,2,3 chciałbym, aby potem zmieniły się w 3,1,2 jednak nie wiem jak zamienic wartosci dwoch zmiennych naraz.

Jest na to jakiś sposób(oczywiście w tym konkretnym zadaniu)?
Pozdrawiam.

`dodanie znaczników i ``` - @furious programming

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
x:=a; a:=b; b:=x;

wartości a i bzamienione.

K6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
0

Ok, więc teraz zrobiłem taką modyfikację:

Kopiuj
program trojkat;

var
max : integer;
bok2 : integer;
bok3 : integer;
tym : integer; //tymczasowa
tym2 : integer; //tymczasowa2

begin
writeln('podaj dlugosc pierwszego boku');
readln(max);

writeln('podaj dlugosc drugiego boku');
readln(bok2);

writeln('podaj dlugosc trzeciego boku');
readln(bok3);

if max<bok2
then tym:=max; max:=bok2; bok2:=tym;

if max<bok3
then tym2:=max; max:=bok3; bok3:=tym2;

if max<(bok2+bok3)
then writeln('z tych bokow mozna utworzyc trojkat')
else writeln('z tych bokow nie da sie utworzyc trojkata');

if sqr(max)=sqr(bok2)+sqr(bok3)
then writeln('z podanych bokow powstanie trojkat prostokatny');

writeln(' ', max);
writeln(' ', bok2);
writeln(' ',bok3);


readln;


end.

Wszystko jest ok jeśli wpisze np. 3, 4, 5, jeśli jednak wpiszę 5, 4, 3 to program i tak zamienia wartości. Domyślam się dlatego, że polecenia po "then" są oddzielone średnikami, jednak jak to inaczej zrobić?

dodanie znacznika <code class="delphi"> - @furious programming

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

Człowieku, przeczytaj pierwsze parę stron z jakiegoś kursu z podstawami.

K6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
0

no ok, ale czy można jakoś inaczej oddzielać polecenia oprócz średników?

K6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
0

Ok, jakoś sobie poradziłem bez czytania kursów :P

Kopiuj
program trojkat;

var
max : integer;
bok2 : integer;
bok3 : integer;
tym : integer; //tymczasowa
tym2 : integer; //tymczasowa2

begin
writeln('podaj dlugosc pierwszego boku');
readln(max);

writeln('podaj dlugosc drugiego boku');
readln(bok2);

writeln('podaj dlugosc trzeciego boku');
readln(bok3);

if max<bok2
then tym:=max ;
if tym=max then max:=bok2 ;
if max=bok2 then bok2:=tym;

if max<bok3
then tym2:=max;
if tym2=max then max:=bok3;
if max=bok3 then bok3:=tym2;

if max<(bok2+bok3)
then writeln('z tych bokow mozna utworzyc trojkat')
else writeln('z tych bokow nie da sie utworzyc trojkata');

if sqr(max)=sqr(bok2)+sqr(bok3)
then writeln('z podanych bokow powstanie trojkat prostokatny');

writeln(' ', max);
writeln(' ', bok2);
writeln(' ',bok3);


readln;


end.

Wszystko jest ok? Sprawdzałem na różnych bokach i niby działa...

dodanie znacznika <code class="delphi"> - @furious programming

K6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
0

Hmm, a dałoby się jakoś zgrupować komendy zamiast pisać po 3 IFy? Bo troszkę nieprofesjonalnie to wygląda.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Tak, tylko trzeba przeczytać pierwsze dwie strony byle jakiego kursu,

K6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
0

Zrobiłem jeszcze mały tuning, bo przy podawaniu 3. takich samych długości wywalało, że nie da się narysować trójkąta:

Kopiuj
program trojkat;

var
max : integer;
bok2 : integer;
bok3 : integer;
tym : integer; //tymczasowa
tym2 : integer; //tymczasowa2

begin
writeln('podaj dlugosc pierwszego boku');
readln(max);

writeln('podaj dlugosc drugiego boku');
readln(bok2);

writeln('podaj dlugosc trzeciego boku');
readln(bok3);

if max<bok2
then tym:=max ;
if tym=max then max:=bok2 ;
if (max=bok2) and (tym<>0) then bok2:=tym;

if max<bok3
then tym2:=max;
if tym2=max then max:=bok3;
if (max=bok3) and (tym2<>0) then bok3:=tym2;

if max<(bok2+bok3)
then writeln('z tych bokow mozna utworzyc trojkat')
else writeln('z tych bokow nie da sie utworzyc trojkata');

if sqr(max)=sqr(bok2)+sqr(bok3)
then writeln('z podanych bokow powstanie trojkat prostokatny');

readln;

end.

@_13th_Dragon- uczymy sie inf od września i nic o tym nie było. W google też szukałem "grupowanie komend dev pascal" i również nic nie wyskoczyło, więc może się po prostu nie da?

dodanie znacznika <code class="delphi"> - @furious programming

  • Rejestracja: dni
  • Ostatnio: dni
1

W Pascalu to chyba do tego są begin i end, ale szczegółowo nie powiem. W C służą do tego nawiasy klamrowe.

K6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
0

Ehh, tylko czy da się mieć dwa końce w jednym programie? Pewnie nie. Szukałem w google o tym grupowaniu, ale sie chyba nie da. Zrobilem jeszcze kilka modyfikacji, w razie, gdyby ktoś podał wartości zerowe lub ujemne i wszystko hula elegancko, więc chyba nie ma co już kombinować.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12270
3

@kiro67 - przestań cudować i zaglądnij do porządnego kursu programowania w pascalu, bo strasznie dziwne pytania zadajesz...

Ehh, tylko czy da się mieć dwa końce w jednym programie?

Tak - jeden koniec jest na końcu, a drugi na początku - zależy od której strony czytasz kod, ale ma dwa końce... A tak poważnie - wyjaśnij dokładnie co masz na myśli pisząc o "końcu programu";

Szukałem w google o tym grupowaniu, ale sie chyba nie da.

Klikaj w linki - Begin i End - i czytaj ze zrozumieniem.

K6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
0

Dobra, już to ogarnąłem, dzięki za pomoc anyway.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.