Skocz do zawartości
hallenberg

[pascal] Problem Z Funkją Case .. Of

Rekomendowane odpowiedzi

Mam problem z tym oto zadaniem - co w nim jest źle, bo ciągle wychodzi mi wynik 0 :////

 

program zadanie12;

 

{1 cal = 25.4 mm = 2.54 cm = 0.0254 m

1 stopa = 12 cali = 304.8 mm = 30.48 cm = 0.3048 m

1 jard = 3 stopy = 914.4 mm = 91.44 cm = 0.9144 m}

 

uses crt;

 

var m,c,s,j,wynik,numer:real;

zamiana:char;

 

begin

clrscr;

writeln('Wybierz rodzaj dzialania: ');

writeln('1 - Zamiana metrow na cale');

writeln('2 - Zamiana metrow na stopy');

writeln('3 - Zamiana metrow na jardy');

writeln('4 - Zamiana cali na metry');

writeln('5 - Zamiana cali na stopy');

writeln('6 - Zamiana cali na jardy');

writeln('7 - Zamiana stop na metry');

writeln('8 - Zamiana stop na cale');

writeln('9 - Zamiana stop na jardy');

writeln('');

readln(numer);

write('');

write('Podaj wartosc w metrach: ');

readln(m);

case zamiana of

'1' : Wynik:= m/0.0254;

end;

writeln('');

writeln(m:4:4,' metrow to ',wynik:4:4,' cali(cala)');

readln

end.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dzięki, głupi błąd zrobiłem, już działa :-P . Mam teraz pytanie - jak załatwić linijkę

 

writeln(m:4:4,' metrow to ',wynik:4:4,' cala(cali)');

żeby pokazywała ile jest cali, jardów i stóp, a nie tylko pisała "cala(cali)", ale też "stóp(stopy)" i "jardów(jarda)" w zależności od tego co liczę.

 

I kolejne pytanie, jak technicznie to rozwiązać - czy dałoby się zrobić tak, żeby program obliczał pozostałych 6 możliwości - stopy na cale, cale na jardy itp.?

 

program zadanie12;{1 cal = 25.4 mm = 2.54 cm = 0.0254 m1 stopa = 12 cali = 304.8 mm = 30.48 cm = 0.3048 m1 jard = 3 stopy = 914.4 mm = 91.44 cm = 0.9144 m}uses crt;var m,wynik:real;	zamiana:char;beginclrscr;writeln('Wybierz rodzaj dzialania: ');writeln('1 - Zamiana metrow na cale');writeln('2 - Zamiana metrow na stopy');writeln('3 - Zamiana metrow na jardy');writeln('');readln(zamiana);writeln('');write('Podaj wartosc w metrach: ');readln(m);writeln('');case zamiana of'1' : Wynik:= m/0.0254;'2' : Wynik:= m/(12*0.0254);'3' : Wynik:= m/(3*(12*0.0254));else halt;end;writeln('');writeln(m:4:4,' metrow to ',wynik:4:4,' cala(cali)');readln;end.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

program zamieniak;{1 cal = 25.4 mm = 2.54 cm = 0.0254 m1 stopa = 12 cali = 304.8 mm = 30.48 cm = 0.3048 m1 jard = 3 stopy = 914.4 mm = 91.44 cm = 0.9144 m}uses crt;var m,wynik,c,j,s:real;	zamiana:char;procedure metry;beginc:=m/0.0254;s:=m/(12*0.0254);j:=m/(3*(12*0.0254));end;beginclrscr;write('Podaj wartosc w metrach: ');readln(m);writeln('');writeln('Wybierz rodzaj dzialania: ');writeln('1 - Zamiana metrow na cale');writeln('2 - Zamiana metrow na stopy');writeln('3 - Zamiana metrow na jardy');writeln('0 - Koniec programu');writeln('');readln(zamiana);writeln('');metry;case zamiana of'0' : halt;'1' : begin	  Wynik:= c;	  writeln('');	  writeln(m:4:4,' metrow to ',wynik:4:4,' cala(cali)');	  readln;	  end;'2' : begin	  Wynik:= s;	  writeln('');	  writeln(m:4:4,' metrow to ',wynik:4:4,' stop(stopy)');	  readln;	  end;'3' : begin	  Wynik:= j;	  writeln('');	  writeln(m:4:4,' metrow to ',wynik:4:4,' jardow(jarda)');	  readln;	  end;else halt;end;end.

I mam ten programik już, jak go teraz najprościej zapętlić? (repeat... until)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

program zamieniak;beginrepeatclrscr;write('Podaj wartosc w metrach: ');(...)'3' : begin	  Wynik:= j;	  writeln('');	  writeln(m:4:4,' metrow to ',wynik:4:4,' jardow(jarda)');	  readln;	  end;else halt;end;until zamiana='0';end.

O tak chyba bedzie ok.

Z tym ze najpierw powinna byc mozliwosc wyjscia z programu a nie najpierw trzeba wprowadzic jakas wartosc a dopiero pozniej mozna wyjsc z programu.

No i to 'else halt;' nie bardzo pasuje, moze wywalic halt:) zeby zostalo samo 'else ;'

P.S fajnie sobie przypomniec pascala po 6 latach:)

Edytowane przez makatiel

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...