PASCAL zadanie


(Qbaas) #1

Witam piszę program(jeszcze nie skończony) chciałbym się dowiedzieć czy składnia jak i jakieś poważniejsze błędy są w tym kodzie?

Treść zadania:

Przelicznik miar ma posiadać możliwość przeliczania: waluty (należy wprowadzić aktualny kurs, pod uwagę

bierzemy polskie zł, dolary, euro oraz funty brytyjskie), odległości, powierzchni, objętości,

czasu, ciężkości (masy), prędkości, siły, ciśnienia, energii, mocy, temperatury.

uses crt;

var

c,z:integer;

procedure odleglosc(c:integer);

var

a,b,m,cm,mm,km:real;

begin

writeln('Podaj rodzaj dlugosci');

writeln('1-w kilometrach');

writeln('2-w metreach');

writeln('3-w centymetrach');

writeln('4-w milimetrach');

writeln('Wybor:');

readln(a);

writeln('Wprowadz wartosc dlugosci');

readln(b);

if a=1 then

begin

km:=b;

m:=b*1000;

cm:=b*10000;

mm:=b*1000000;

writeln('Dlugosc',km:3:2,'km');

writeln('Dlugosc',m:3:2,'m');

writeln('Dlugosc',cm:3:2,'cm');

writeln('Dlugosc',mm:3:2,'mm');

end;

if a=2 then

begin

km:=b/1000;

m:=b;

cm:=b*100;

mm:=b*1000;

writeln('Dlugosc',km:3:2,'km');

writeln('Dlugosc',m:3:2,'m');

writeln('Dlugosc',cm:3:2,'cm');

writeln('Dlugosc',mm:3:2,'mm');

end;

if a=3 then

begin

km:=b/100000;

m:=b/100;

cm:=b;

mm:=b*10;

writeln('Dlugosc',km:3:5,'km');

writeln('Dlugosc',m:3:2,'m');

writeln('Dlugosc',cm:3:2,'cm');

writeln('Dlugosc',mm:3:2,'mm');

end;

if a=4 then

begin

km:=b/1000000;

m:=b/1000;

cm:=b/10;

mm:=b;

writeln('Dlugosc',km:3:6,'km');

writeln('Dlugosc',m:3:3,'m');

writeln('Dlugosc',cm:3:2,'cm');

writeln('Dlugosc',mm:3:2,'mm');

end;

readln;

readln;

end;


procedure powierzchnia(c:integer);

var

a,b,ha,ar,km2,m2:real;

begin

writeln('Podaj rodzaj powierzchni');

writeln('1-w hektar');

writeln('2-w ar');

writeln('3-w kilometr kwadratowy');

writeln('4-w metr kwadratowy');

writeln('Wybor:');

readln(a);

writeln('Wprowadz wartosc powierzchni');

readln(b);

if a=1 then

begin

ha:=b;

ar:=b*100;

km2:=b/100;

m2:=b*10000;

writeln('Powierzchnia',ha:3:2,'ha');

writeln('Powierzchnia',ha:3:4,'a');

writeln('Powierzchnia',km2:3:2,'km2');

writeln('Powierzchnia',m2:3:2,'m2');

end;

if a=2 then

begin

ha:=b/100;

ar:=b;

km2:=b/10000;

m2:=b*100;

writeln('Powierzchnia',ha:3:2,'ha');

writeln('Powierzchnia',ha:3:4,'a');

writeln('Powierzchnia',km2:3:2,'km2');

writeln('Powierzchnia',m2:3:2,'m2');

end;

if a=3 then

begin

ha:=b*100;

ar:=b*10000;

km2:=b;

m2:=b*1000000;

writeln('Powierzchnia',ha:3:2,'ha');

writeln('Powierzchnia',ha:3:4,'a');

writeln('Powierzchnia',km2:3:2,'km2');

writeln('Powierzchnia',m2:3:2,'m2');

end;

if a=4 then

begin

ha:=b/10000;

ar:=b/100;

km2:=b/1000000;

m2:=b;

writeln('Powierzchnia',ha:3:2,'ha');

writeln('Powierzchnia',ha:3:4,'a');

writeln('Powierzchnia',km2:3:2,'km2');

writeln('Powierzchnia',m2:3:2,'m2');

end;

readln;

readln;

end;

procedure objetosci(c:integer);

var

a,b,cm3,m3,dm3,litr:real;

begin

writeln('Podaj rodzaj objetosci');

writeln('1-w litr');

writeln('2-w metr szescienny');

writeln('3-w decymetr szescienny');

writeln('4-w centymetr szescienny');

writeln('Wybor:');

readln(a);

writeln('Wprowadz wartosc objentosci');

readln(b);

if a=1 then

begin

litr:=b;

m3:=b/1000;

dm3:=b*1;

cm3:=b*1000;

writeln('Objentosc',litr:3:2,'litr');

writeln('Objentosc',m3:3:4,'m3');

writeln('Objentosc',dm3:3:2,'dm3');

writeln('Objentosc',cm3:3:2,'cm3');

end;

if a=2 then

begin

litr:=b*1000;

m3:=b;

dm3:=b*1000;

cm3:=b*1000000;

writeln('Objentosc',litr:3:2,'litr');

writeln('Objentosc',m3:3:2,'m3');

writeln('Objentosc',dm3:3:2,'dm3');

writeln('Objentosc',cm3:3:2,'cm3');

end;

if a=3 then

begin

litr:=b*1;

m3:=b/1000;

dm3:=b;

cm3:=b*1000000;

writeln('Objentosc',litr:3:2,'litr');

writeln('Objentosc',m3:3:4,'m3');

writeln('Objentosc',dm3:3:2,'dm3');

writeln('Objentosc',cm3:3:2,'cm3');

end;

if a=4 then

begin

litr:=b/1000;

m3:=b/1000000;

dm3:=b/1000;

cm3:=b;

writeln('Objentosc',litr:3:4,'litr');

writeln('Objentosc',m3:3:7,'m3');

writeln('Objentosc',dm3:3:4,'dm3');

writeln('Objentosc',cm3:3:2,'cm3');

end;

readln;

readln;

end;

procedure czas(c:integer);

var

a,b,h,min,s:real;

begin

writeln('Podaj rodzaj czasu');

writeln('1-w Godzinach');

writeln('2-w Minutach');

writeln('3-w Sekundach');

writeln('Wybor:');

readln(a);

writeln('Wprowadz wartosc czasu');

readln(b);

if a=1 then

begin

h:=b;

min:=b*60;

s:=b*3600;

writeln('Czas',h:3:2,'h');

writeln('Czas',min:3:2,'min');

writeln('Czas',s:3:2,'s');

end;

if a=2 then

begin

h:=b/0.02;

min:=b;

s:=b*60;

writeln('Czas',h:3:2,'h');

writeln('Czas',min:3:2,'min');

writeln('Czas',s:3:2,'s');

end;

if a=3 then

begin

h:=b;

min:=b;

s:=b;

writeln('Czas',h:3:2,'h');

writeln('Czas',min:3:2,'min');

writeln('Czas',s:3:2,'s');

end;

readln;

readln;

end;

procedure masa(c:integer);

var

a,b,tona,kg,g,mg:real;

begin

writeln('Podaj rodzaj wagi');

writeln('1-w tonach');

writeln('2-w kilogramach');

writeln('3-w gramach');

writeln('4-w miligramach');

writeln('Wybor:');

readln(a);

writeln('Wprowadz wartosc dlugosci');

readln(b);

if a=1 then

begin

tona:=b;

kg:=b*1000;

g:=b*1000000;

mg:=b*1000000000;

writeln('Waga',tona:3:2,'tona');

writeln('Waga',kg:3:2,'kg');

writeln('Waga',g:3:2,'g');

writeln('Waga',mg:3:2,'mg');

end;

if a=2 then

begin

tona:=b/1000;

kg:=b;

g:=b*1000;

mg:=b*1000000;

writeln('Waga',tona:3:4,'tona');

writeln('Waga',kg:3:2,'kg');

writeln('Waga',g:3:2,'g');

writeln('Waga',mg:3:2,'mg');

end;

if a=3 then

begin

tona:=b/1000000;

kg:=b/1000;

g:=b;

mg:=b*1000;

writeln('Waga',tona:3:7,'tona');

writeln('Waga',kg:3:4,'kg');

writeln('Waga',g:3:2,'g');

writeln('Waga',mg:3:2,'mg');

end;

if a=4 then

begin

tona:=b/1000000000;

kg:=b/1000000;

g:=b*1000;

mg:=b;

writeln('Waga',tona:3:9,'tona');

writeln('Waga',kg:3:7,'kg');

writeln('Waga',g:3:2,'g');

writeln('Waga',mg:3:2,'mg');

end;

readln;

readln;

end;

procedure predkosc(c:integer);

var

a,b,kmh,kms,ms:real;

begin

writeln('Podaj rodzaj predkosci');

writeln('1-w Kilometr na godzine');

writeln('2-w Kilometr na sekunde');

writeln('3-w Metr na sekunde');

writeln('Wybor:');

readln(a);

writeln('Wprowadz wartosc predkosci');

readln(b);

if a=1 then

begin

kmh:=b;

kms:=b/3600;

ms:=b/3.6;

writeln('Predkosc',kmh:3:2,'km/h');

writeln('Predkosc',kms:3:4,'km/s');

writeln('Predkosc',ms:3:4,'m/s');

end;

if a=2 then

begin

kmh:=b*3600;

kms:=b;

ms:=b/1000;

writeln('Predkosc',kmh:3:2,'km/h');

writeln('Predkosc',kms:3:4,'km/s');

writeln('Predkosc',ms:3:4,'m/s');

end;

if a=3 then

begin

kmh:=b*3.6;

kms:=b/1000;

ms:=b;

writeln('Predkosc',kmh:3:2,'km/h');

writeln('Predkosc',kms:3:4,'km/s');

writeln('Predkosc',ms:3:4,'m/s');

end;

readln;

readln;

end;

procedure sila(c:integer);

var

a,b,n,kn:real;

begin

writeln('Podaj rodzaj sily');

writeln('1-w Newton');

writeln('2-w Kilonewton');

writeln('Wybor:');

readln(a);

writeln('Wprowadz wartosc sily');

readln(b);

if a=1 then

begin

n:=b;

kn:=b/1000;

writeln('Sila',n:3:2,'N');

writeln('Sila',kn:3:4,'kN');

end;

if a=2 then

begin

n:=b*1000;

kn:=b;

writeln('Sila',n:3:2,'N');

writeln('Sila',kn:3:4,'kN');

end;

readln;

readln;

end;

procedure cisnienie(c:integer);

var

a,b,pa,hpa,bar:real;

begin

writeln('Podaj rodzaj cisnienie');

writeln('1-w Pascal');

writeln('2-w Hektopascal');

writeln('3-w Bar');

writeln('Wybor:');

readln(a);

writeln('Wprowadz wartosc cisnienia');

readln(b);

if a=1 then

begin

pa:=b;

hpa:=b/100;

bar:=b/10000;

writeln('Cisnienie',pa:3:2,'Pa');

writeln('Cisnienie',hpa:3:2,'hPa');

writeln('Cisnienie',bar:3:2,'Bar');

end;

if a=2 then

begin

pa:=b*100;

hpa:=b;

bar:=b/1000;

writeln('Cisnienie',pa:3:2,'Pa');

writeln('Cisnienie',hpa:3:2,'hPa');

writeln('Cisnienie',bar:3:3,'Bar');

end;

if a=3 then

begin

pa:=b*100000;

hpa:=b*1000;

bar:=b;

writeln('Cisnienie',pa:3:2,'Pa');

writeln('Cisnienie',hpa:3:2,'hPa');

writeln('Cisnienie',bar:3:2,'Bar');

end;

readln;

readln;

end;

procedure energia(c:integer);

var

a,b,j,kj,wh,kwh:real;

begin

writeln('Podaj rodzaj energii');

writeln('1-w Dzul');

writeln('2-w Kilodzul');

writeln('3-w Watogodzina');

writeln('4-w Kilowatogodzina');

writeln('Wybor:');

readln(a);

writeln('Wprowadz wartosc energii');

readln(b);

if a=1 then

begin

j:=b;

kj:=b/1000;

wh:=b/3600;

kwh:=b/3600000;

writeln('Energia',j:3:2,'J');

writeln('Energia',kj:3:4,'kJ');

writeln('Energia',wh:3:4,'Wh');

writeln('Energia',kwh:3:10,'kWh');

end;

if a=2 then

begin

j:=b*1000;

kj:=b;

wh:=b/3600;

kwh:=b/36000;

writeln('Energia',j:3:2,'J');

writeln('Energia',kj:3:2,'kJ');

writeln('Energia',wh:3:4,'Wh');

writeln('Energia',kwh:3:9,'kWh');

end;

if a=3 then

begin

j:=b*3600;

kj:=b*3.6;

wh:=b;

kwh:=b/1000;

writeln('Energia',j:3:2,'J');

writeln('Energia',kj:3:2,'kJ');

writeln('Energia',wh:3:2,'Wh');

writeln('Energia',kwh:3:3,'kWh');

end;

if a=4 then

begin

j:=b*3600000;

kj:=b*3600;

wh:=b*1000;

kwh:=b;

writeln('Energia',j:3:2,'J');

writeln('Energia',kj:3:2,'kJ');

writeln('Energia',wh:3:2,'Wh');

writeln('Energia',kwh:3:2,'kWh');

end;

readln;

readln;

end;

procedure moc(c:integer);

var

c:integer;

procedure moc(c:integer);

var

a,b,w,kw:real;

begin

writeln('Podaj rodzaj mocy');

writeln('1-w Watt');

writeln('2-w Kilowat');

writeln('Wybor:');

readln(a);

writeln('Wprowadz wartosc mocy');

readln(b);

if a=1 then

begin

w:=b;

kw:=b/1000;

writeln('Moc',w:3:2,'W');

writeln('Moc',kw:3:4,'kW');

end;

if a=2 then

begin

w:=b*1000;

kw:=b;

writeln('Moc',w:3:2,'W');

writeln('Moc',kw:3:4,'kW');

end;

readln;

readln;

end;

procedure moc2(c:integer);

var

a,b,w,kw:real;

begin

writeln('Podaj rodzaj mocy');

writeln('1-w Watt');

writeln('2-w Kilowat');

writeln('Wybor:');

readln(a);

writeln('Wprowadz wartosc mocy');

readln(b);

if a=1 then

begin

w:=b;

kw:=b/1000;

writeln('Moc',w:3:2,'W');

writeln('Moc',kw:3:4,'kW');

end;

if a=2 then

begin

w:=b*1000;

kw:=b;

writeln('Moc',w:3:2,'W');

writeln('Moc',kw:3:4,'kW');

end;

readln;

readln;

end;

begin

clrscr;

writeln(c);

read(c);

moc(c);

moc2(c);

readln;

end;

procedure temperatura(c:integer);

var

a,b,c,f,k:real;

begin

writeln('Podaj rodzaj temperatury');

writeln('1-w Celsjusza');

writeln('2-w Fahrenheita');

writeln('3-w Kelwinach');

writeln('Wybor:');

readln(a);

writeln('Wprowadz wartosc temperatury');

readln(b);

if a=1 then

begin

c:=b;

f:=9/5*b+32;

k:=b+273.15;

writeln('Temperatura',c:3:2,'C');

writeln('Temperatura',f:3:2,'F');

writeln('Temperatura',k:3:2,'K');

end;

if a=2 then

begin

c:=5/9*(b-32);

f:=b;

k:=(b+459.67)*5/9;

writeln('Temperatura',c:3:2,'C');

writeln('Temperatura',f:3:2,'F');

writeln('Temperatura',k:3:2,'K');

end;

if a=3 then

begin

c:=b-273.15;

f:=(b*1.8)-459.67;

k:=b;

writeln('Temperatura',c:3:2,'C');

writeln('Temperatura',f:3:2,'F');

writeln('Temperatura',k:3:2,'K');

end;

readln;

readln;

end;

begin

writeln(c);

read(c);

writeln('Wybierz:');

writeln('1-Odleglosc');

writeln('2-Powierzchnia');

writeln('3-Objentosc');

writeln('4-Czas');

writeln('5-Masa');

writeln('6-Predkosc');

writeln('7-Sila');

writeln('8-Cisnienie');

writeln('9-Energia');

writeln('10-Moc');

writeln('11-Temperatura');

read(z);

if z=1 then

begin

writeln(c);

odleglosc(c);

readln;

readln;

end

else writeln(c);

powierzchnia(c);

readln;

readln;

end.

(Przebar) #2

sprawdź czy się kompiluje. a ewentualne błędy poznasz podczas kompilacji


([alex]) #3

Masz złe podejście do tego przy takim podejściu jak skończysz program to będzie on kilometrowej długości.

Zastanów się nad uporządkowaniem do jednej tablicy jakie możesz wprowadzić jednostki i na co je można przeliczyć,

Tak aby cały program zawierał tylko kilka pętli, a reszta niech będzie w tej tablice.


(Simplex111) #4

Trawestując pewien stary dowcip:

Gdybym miał ocenić Twój program jednym słowem, to powiedziałbym dobrze

A w dwóch słowach… nie dobrze!

A teraz na poważnie: Twój program to jeden wielki koszmar. Można by go pokazywać początkującym programistom jako przykład jak nie należy pisać programów

Pierwsza i najważniejsza rzecz to formatowanie , przecież tego nie da się czytać (skutecznie zniechęcasz tym użytkowników tego forum, którzy być może chcieliby Ci pomóc). Poczytaj trochę: Formatowanie kodu w Delphi

Program się nie kompiluje, bo w procedurze moc używasz zmiennej lokalnej c i przekazujesz również do tej procedury zmienną c. Musisz zmienić nazwę jednej z tych zmiennych, aby program się skompilował. A tak przy okazji to nazywaj zmienne tak, aby ich nazwa coś mówiła

Gdy już uda się skompilować program to okazuje się, że po uruchomieniu jest tylko czarny ekran. Aby ruszyć dalej trzeba wprowadzić jakąś wartość, ale nie informujesz użytkownika co to ma być. Jeżeli program czeka na wprowadzenie danych, to należy użytkownika o tym poinformować stosownym komunikatem.

Sformatuj kod, to zobaczymy co dalej

I jeszcze jedno na koniec. Popraw temat, bo gdy zjawi się tu jakiś moderator, to wątek wyląduje w koszu i na nic nasze pisanie (ja na przykład nie będę z tego powodu szczęśliwy)