Turbo Pascal - zbiór liczb


(Lukaszxp) #1

Zaczynam swoją przygodę z programowaniem :slight_smile: Na razie opieram się na kursie TP z Eksperta z 2006. Napisałem prosty program, który liczby wartość BMI. Chciałbym, żeby pod koniec programu wyświetlało, czy twoje bmi to wychudzenie, czy jest normalne, czy nadwaga etc. Wychudzenie jest poniżej wartości 15. To potrafiłem napisać. Jednak jak zrobić, aby dany komunikat wyświetlał się np od wartości 15.1 do 17.1? Kod:

program bmiwzor;

uses crt;

var waga : real;

wzrost : real;

bmi : real;

begin

textbackground(lightcyan);

textcolor(red);

GotoXY(20,3);

Writeln('Program obliczy warto† twojego bmi');

Delay(1000);

Writeln('Podaj twojĄ wag©');

Readln(waga);

Writeln('Podaj tw˘j wzrost (w metrach)');

Readln(wzrost);

Writeln('Tw˘j wska«nik BMI to ' ,waga/(wzrost*wzrost):0:2 );

Delay(1000);

if waga/(wzrost*wzrost)<15 then writeln ('wygodzenie');

Writeln('Nacinij klawisz ENTER aby zakoäczy†');

ReadLN;

end.

(Lukaszxp) #2

OK, działa :stuck_out_tongue:

Polskie znaki nie pokazuja się, ponieważ aby skopiować kod na forum musiałem ten plik *.pas otworzyć w wordpadzie. Funkcja copy w Free Pascal IDE ogranicza się do kopiowania i wklejania tylko w programie :slight_smile: Po kompilacji wszystkie znaki polskie działają poprawnie.

program bmiwzor;

uses crt;

var waga : real;

wzrost : real;

bmi : real;

begin

textbackground(lightcyan);

textcolor(red);

GotoXY(20,3);

Writeln('Program obliczy warto† twojego bmi');

Writeln('Jeľeli chcesz poda† cz©ci dziesi©tne liczby, to oddziel znakiem kropki');

Writeln(', nie przecinka!');

Delay(1000);

Writeln('Podaj twojĄ wag©');

Readln(waga);

Writeln('Podaj tw˘j wzrost (w metrach)');

Readln(wzrost);

bmi:=waga/(wzrost*wzrost);

Writeln('Tw˘j wska«nik BMI to ' ,bmi:0:2 );

Delay(1000);

if bmi<15 then writeln ('wygodzenie');

if (bmi>=15.1) and (bmi<=17.4) then writeln ('To niedowaga');

if (bmi>=18.5) and (bmi<=24.9) then writeln ('To warto† prawidowa');

if (bmi>=25) and (bmi<=29.9) then writeln ('To nadwaga');

if (bmi>=30) and (bmi<=34.9) then writeln ('To pierwszy stopieä otyoci');

if (bmi>=35) and (bmi<=39.9) then writeln ('To drugi stopieä otyoci');

if (bmi>=40) then writeln ('To otyo† trzeciego stopnia (otyo† skrajna)');

Writeln('Nacinij klawisz ENTER aby zakoäczy†');

ReadLN;

end.

Następne pytanie. Co zrobić aby wzrost można było (tak wygodniej) podawać w cm?W dniu 11.06.2008 , o godzinie 18:29 został dopisany post przez mafios19OK, wiem co zrobić aby był w metrach. CalculateYourBmi v.1.5 :slight_smile:

program CalculateYourBmi;

uses crt;

var waga : real;

wzrost : real;

bmi : real;

begin

textbackground(lightcyan);

textcolor(red);

GotoXY(20,3);

Writeln('Program obliczy warto† twojego bmi');

Delay(1000);

Writeln('Podaj twojĄ wag©');

Readln(waga);

Writeln('Podaj tw˘j wzrost (w centymetrach)');

Readln(wzrost);

wzrost:=wzrost/100;

bmi:=waga/(wzrost*wzrost);

Writeln('Tw˘j wska«nik BMI to ' ,bmi:0:2 );

Delay(1000);

if bmi<15 then writeln ('wygodzenie');

if (bmi>=15.1) and (bmi<=17.4) then writeln ('To niedowaga');

if (bmi>=18.5) and (bmi<=24.9) then writeln ('To warto† prawidowa');

if (bmi>=25) and (bmi<=29.9) then writeln ('To nadwaga');

if (bmi>=30) and (bmi<=34.9) then writeln ('To pierwszy stopieä otyoci');

if (bmi>=35) and (bmi<=39.9) then writeln ('To drugi stopieä otyoci');

if (bmi>=40) then writeln ('To otyo† trzeciego stopnia (otyo† skrajna)');

writeln('By mafios19');

Writeln('Nacinij klawisz ENTER aby zakoäczy†');

ReadLN;

end.

(system) #3

mafios19 , CalculateYourBmi v.1.5 posiada poważne wady. Wprowadź wagę - 121, wzrost - 174, brak komunikatu :smiley:

Powinno być:

if bmi<15 then writeln ('wygodzenie')

else if bmi<18.5 then writeln ('To niedowaga')

else if bmi<25 then writeln ('To warto† prawidowa')

else if bmi<30 then writeln ('To nadwaga')

else if bmi<35 then writeln ('To pierwszy stopieä otyoci')

else if bmi<40 then writeln ('To drugi stopieä otyoci')

else writeln ('To otyo† trzeciego stopnia (otyo† skrajna)');

Ups, za dużo ostatnio C++ :smiley: Jedyne co mam na swoje usprawiedliwienie to fakt ze takie błędy kompilator wyłapuje.