Pisanie programu w Pascalu


(Koniu7) #1

Witam, mam problem z programem w Pascalu. Otóż nie wiem jak napisać program który obliczał by odległość planety ze wzoru titiusa-bodego od słońca.

Np. stałą N oznaczało by się automatycznie, tj. Dla merkurego n=1, wenus n=2, mars n=4... itd.

Nie wiem czy użyć stałej typu string, czy nie.

Wzór titiusa-bodego: a=(n+4)/10 ,gdzie a - odleglosc planety od slonca w Jednostkach astronomicznych.

IF n=2 so wenus.

Ma ktoś jakiś pomysł?


(Simon1991) #2

Pascala już nie pamiętam, ale wystarczy, że stworzysz zmienną integer, do której później wczytasz tą stałą N. Później wystarczy wyświetlić wynik, który obliczysz z tego wzoru wykorzystując wczytaną wcześniej zmienną z tą stałą N.


(kubut) #3

Nie za bardzo rozumiem... chodzi Ci o coś takiego?

uses crt;

var n, wynik : integer;

var planeta: string;


begin

writeln ('podaj planete: ');

reandln(planeta);


case planeta of

merkury: n:=1;

wenus: n:=2;

end;


wynik:= (n+4)/10;

writeln(wynik);

readln;

end.

Nie znam tego wzoru, więc nie wiem czy dobrze zrozumiałem jego "działanie". I nie jestem pewien czy pascal rozumie kolejność wykonywania działań, dawno w nim nie pisałem :wink:


(Simon1991) #4

A nie może ktoś podać te n, zamiast nazwy planety? Zawsze to jedna zmienna mniej i dużo łatwiejszy kod.


(Koniu7) #5

O to chodzi... dziękuję bardzo.. jeszcze tylko potrzebuję jak zrobić żeby wynik zapisywało do pliku planeta.txt.


(kubut) #6

a więc, aby zapisać do pliku:

uses crt;

var plik: file of byte;

var n, wynik : byte;

var planeta: string;


begin

writeln ('podaj planete: ');

reandln(planeta);


case planeta of

merkury: n:=1;

wenus: n:=2;

end;


wynik:= (n+4)/10;

assign(plik,'liczby.txt');

append(plik);

writeln(plik,wynik);

close(plik);

readln;

end.

Pisałem z pamięci bez kompilowania, więc moga być jakieś błędy. Nie mam obecnie kompilatora żeby sprawdzić. Jakby nie działało to zmień typy na integer. Zaznaczam, ze z tego co pamiętam plik "liczby.txt" musi istnieć na dysku, pascal go nie stworzy. append dopisuje dane na końcu pliku, jeśli chcesz za każdym uruchomieniem programu zapamiętywać tylko dane z tego uruchomienia zmień append na rewrite, on nadpisuje.


(Koniu7) #7

Dziękuję bardzo!


(Simon1991) #8

Tylko czy czasem Pascal nie rozróżnia wielkości liter w stringu?


(kubut) #9

Rozróżnia. Pisałem to troszkę na szybko, teraz po chwili zastanowienia zmieniłbym nieco logikę. Zmienną planeta zmienić na byte. Następnie użytkownikowi wyświetlić planety możliwe do wybrania, razem z numerami. User podawałby numer planety, w case sprawdzana byłaby planeta po numerze.

P.S.

Jak chcesz zostawić tak jak napisałem, to zdaje mi się ze nazwy planes w case powinny być w cudzysłowach, na przykład:

"merkury": n:=1;

([alex]) #10

case obsługuje wyłącznie liczby, napisy nie wolno używać w case.


(kubut) #11

No faktycznie, nieco się zagalopowałem :wink: Więc zostaje wersja z numerowaną listą.