![]() |
Potrzebuje pomocy... z Pascalem
Na srode musze zrobic w Pascalu kalkulator jak prace zaliczeniowa na semest i wogole nie wiem jak sie za to zabrac...
Chetnie przeczytalbym jakies pomysly, moze ktos ma cos gotowego? :mruga: |
nie wiem jaki masz problem ???
jezeli znasz podstawy to najprostszy mozna zrobic "Podaj dzialanie" tu 4 ify i else odnoszace do danych funccji, lub nawet na zywo po ifie intrukcje zeby podac dwie liczyby, cos z nimi robisz (dodajesz, odejmujesz itd) a potem wypisujesz wynik.... ps. mase taki kalkulatorow na pewno jest w sieci to to czesty temat |
Dokladnie znjac podstawy mozna zrobic bardzo przyzwoity kalkulator ;)
Jak kcesz jakies zrodla to wejdz tu: 4programmers.net :spoko: |
Polecam stronke www.komputery-internet.net - bardzo duzo o programowaniu m. in. pascal. PS kallkulator to jedna z najprostszych rzeczy jaka mozna zrobic w pascalu...
|
Cytat:
..::Update::.. Wynik 2-minutowej pracy (nie mam Pascala wiec napisalem to w Delphi...ale w Pascalu chyba bedzie wygladać podobnie) :) Programik robi podstawowe obliczenia (trzeba jeszcze dodac obsluge dzielenie przez zero) Kod:
program kalkulatorek; |
Cytat:
|
Cytat:
|
Cytat:
Kod:
program kalkulatorek; |
Nie bede cytal calego, ale ja bym zastapił readln(d) na read(d); lub d:=readkey; - nie trzeba nacisnac klawisza enter w celu potwierdzenia wyboru. Dodałbym jeszcze modul crt (standard przy programach pascalowych) i komende crt na samym poczatku po begin oraz petle repeat ktora na samym koncu pytala by sie czy zakonczyc dzialanie programu. Ale cos nie wierze, ze taki prosty programik mialby by na zaliczenie semestru autorowi tematu pewnie chodzilo o cos bardziej skomplikowanego z bajerami i jaka szata graficzna :spoko: .
|
Co do wspomnianej pętelki
Kod:
program kalkulatorek; |
Dzieki wszystkim za odpowiedz
Mam jeszcze pytanie: kiedy ustawiam typ zmiennej jako 'real' to wyniki wychodza np. 2.000000000E +0000 A kiedy ustawie typ jako 'integer' to wywala blad z dzieleniem. Jakiego typu mam uzyc? |
zeby nie bylo "2.000000000E +0000" wypisuj zmienne np tak: writeln(zmienna:2:2); te dwojki znacza ze bedzie wyswietlana po dwoch polach z dwoma miejscami po przecinku
|
Cytat:
Kod:
writeln ('Wynik dzialania wynosi: ', w:0:2); @Predi był szybszy ;p |
A da sie tak zrobic, zeby liczby calkowite wyswietlal normalnie bez miejsc po przecinku, a ulamki po 2 miejsca po przecinku, jak wynik przechowuje w tej samej zmiennej?
|
napewno sie da :) np. masz
var a, b, d : integer; var f : real; begin writeln ('podaj a'); readln(a); writeln ('podaj b'); readln(b); f:=a/b; d:=a div b; if d < f then writeln (f:2:2) else writeln (d); end. musisz to teraz tylko wstawic w ten fragment programu gdzie kalkulator dzieli, polega to na tym, ze f jest typu real i przechowuje rzeczywista wratosc dzielenia, natomiast d przechowuje wartosc calkowita, po odcieciu cyfr po kropce, jezeli f jest wieksze od d (a bedzie tak tylko wtedy jezeli bedzie cos mialo po kropce) to wypisywane jest np. 2.11 jezeli sa rowne, to wyswietla d jako normalna liczbe, bez kropki |
Wydaje mi sie ze koncepcyjnie kalkulator powinien dzialac tak ze:
pyta sie o liczbe, pyta sie o dzialanie, pyta sie o liczbe (wykonuje dzialanie, zwraca liczbe), pyta sie o dzialanie, pyta sie o liczbe (wykonuje dzialanie na poprzedniej liczbie z parametrem w postaci nowej) itd.. W kazdym miejscu trzeba pamietac np. o dzieleniu przez 0 i innych rzeczach. Z typami bedzie troche zabawy, ale da sie to jakos sprytnie zrobic, jak np. sposob powyzej (nie wiem tylko co pascal odpowie 2 < 2.00 , mam nadzieje ze tak jak sie spodziewamy). Poza tym jest taki troche drazliwy temat: Jak 1 podzielimy przez 3, spytamy sie o wynik bedzie 0.(3) i teraz jak to pomnozymy przez 3 to obawiam sie ze bedzie 0.(9) a nie 1 (chociaz obie liczby zbiegaja do 1 to jednak druga reprezentacja jest znacznie przyjemniejsza). Fakt faktem ten defekt wystepuje rowniez w wiekszosci kalkulatorow, wiec nasz bedzie z nimi kompatybilny :) |
Trzeba jeszcze zrobic petle że dopoki readln nie zwroci 0 to ma pytac kolejno: liczba->dzialanie->liczba->działanie(...)->liczba->działanie...
I dobrze by było w międzyczasie podawać wynik, coś w tym stylu: 0 liczba: 2 działanie: * liczba: 2 4 dzialanie: + liczba: 2 6 dzialanie: |
Jest sobie takie zadanko w Delphi:
Cytat:
thx4help :) ..::Update::.. OK, problem rozwiązany poprzez wstawienie przed każdym sleepem Kod:
Application.ProcessMessages; Qrde nie do konca to dobrze działa...animacja kulki się "rwie" :ysz: |
użyj komponentu timer :D albo uruchom sleepa w drugim wątku :D wydaje mi się ze tym drugim sposobem bardziej przybajerujesz :D
|
Wszystkie czasy w strefie CET. Aktualna godzina: 20:32. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.