GRY-Online.pl --> Archiwum Forum

Pomoc w prostym programie w Pascalu.

15.11.2009
20:40
smile
[1]

remekra [ Horonrzy ]

Pomoc w prostym programie w Pascalu.

A więc miałem zrobić program, który po podaniu cyfry będzie tłumaczył ją na zapis słowny, to zrobiłem. Ale jeśli zostanie podane 0 to program ma się wyłączać i tu mam problem, bo nie wiem jak to zrobić program wygląda tak:



Z góry dzięki za pomoc:).

15.11.2009
20:45
[2]

Narmo [ nikt ]

A nie lepiej skorzystać z funkcji Case?

15.11.2009
20:47
[3]

hctkko. [ The Prodigy ]



Narmo >>ważne że działa :P

15.11.2009
20:52
smile
[4]

legrooch [ MPO Squad Member ]

hctkko. ==> A wiesz, czym się różni If od Case? :)

15.11.2009
20:54
[5]

hctkko. [ The Prodigy ]

wiem, ale może remekra nie wie.

15.11.2009
20:55
[6]

kakakakaboom! [ Konsul ]

legrooch, czym?

15.11.2009
20:57
[7]

kamyk_samuraj [ Legend ]

grucha - niczym? Znaczy - coś tam chyba z porównywanymi typami było tylko - ale z Pascalem to miałem do czynienia pomiędzy kolejnymi partyjkami Starcrafta - więc mogę się mylić...

edyta: oooo nawet w artykule co dał Narmo jest o tym...

15.11.2009
20:58
[8]

legrooch [ MPO Squad Member ]

W przypadku użycia z posta [1] if zostanie każdorazowo wykonane warunkowe sprawdzanie zmiennej. W przypadku Case zostanie wartość wybrana z dostępnych.
To, że kod wygląda podobnie nie oznacza podobnego wykonania.

W tym przypadku zysk będzie znikomy, ale zawsze będzie. Natomiast nauka poprawnego używania pętli, funkcji daje dużo w przyszłości.

15.11.2009
20:59
[9]

remekra [ Horonrzy ]

Może i mógłbym użyć instrukcji Case, ale nie miałem jej jeszcze na lekcjach, więc nie widzę potrzeby.

Ale jak już tyle osób się zebrało to mam jeszcze jedno pytanie, gdybym miał zrobić program, który nie będzie zamieniał tylko cyfr od 0 do 9 na zapis słowny, tylko który byle jaką wpisaną liczbę będzie zamieniał na zapis słowny to jakby to wyglądało? Jakiej instrukcji trzeba by było użyć?
Pytanie z czystej ciekawości, może się przyda na przyszłość;).

15.11.2009
21:01
[10]

Narmo [ nikt ]

Case jest wydajniejszy i czytelniejszy przy programach, gdzie jest więcej opcji wyboru (jak tutaj). Dodatkowo wsadził bym wszystko w pętlę, żeby program nie wyłaczał się po jednym przejściu, tylko działał do naciśnięcia tego zera.

15.11.2009
21:01
[11]

legrooch [ MPO Squad Member ]

Ify bądź Len na weryfikacje liczby (ilość znaków - dziesiątki, setki), Case na wybór outputu słownego

15.11.2009
21:05
smile
[12]

hctkko. [ The Prodigy ]

tak się doczepiliście tego case, a co sądzicie o wczytywaniu pojedynczej cyfry do 30-znakowego stringa? (oryginalny kod) ;p

15.11.2009
21:08
[13]

legrooch [ MPO Squad Member ]

Zwróciłem uwagę na sugestię Narmo :)
Nie wiem czemu nei wyłapałem tej 30 :)

15.11.2009
21:11
[14]

remekra [ Horonrzy ]

To dopiero mój drugi program(pierwszy obliczał pole prostokąta;)), dlatego mogą być głupoty takie jak ten o wczytywaniu pojedynczej cyfry do 30-znakowego Stringa;).

Ale skorzystałem z pomysłu Narmo i dałem to w pętle, teraz aby wpisać inną cyfrę nie trzeba włączać na nowo programu, a 0 kończy pętle i program.

15.11.2009
21:15
smile
[15]

legrooch [ MPO Squad Member ]

remekra ==> To zamień jeszcze string na integer, popraw ify pod integera i będzie prawie idealnie :)

15.11.2009
21:23
[16]

hctkko. [ The Prodigy ]

zamiast integer dałbym byte ;)
/byte zajmuje 2 razy mniej pamięci niż integer a w tym wypadku wystarcza. dobrym nawykiem jest zwracanie uwagi na takie drobne rzeczy, przyda się w przyszłości :)

15.11.2009
21:24
[17]

remekra [ Horonrzy ]

Zmieniłem String na Byte dzięki hctkko. i jego linkowi w poście 3:). Integer będzie lepszy?

16.11.2009
09:35
[18]

kamyk_samuraj [ Legend ]

grucha -> a mam takie pytanie - jak wewnętrznie rozwiązana jest funkcja case, że mówisz, że będzie ona wydajniejsza? Bo przychodzi mi na myśl tylko szereg porównań wzorca z podanymi jako opcje wartościami (czyli tak samo, jak w przypadku kilku ifów).
Oczywiście można jakoś próbować zmniejszyć ilość porównań (np. wykorzystując fakt, że ciąg jest posortowany i poszukać odpowiedniej opcji binarnie).

16.11.2009
14:37
[19]

legrooch [ MPO Squad Member ]

Jest różnica między sprawdzeniem stanu zmiennej, a jej warunkowaniem.
Czasowo if jest wolniejszy.

Co do Twojej wersji - zgoda. Jeżeli mamy ustawione wartości w sposób posortowany, a możliwość kombinacji jest minimalna różnica może być niezauważalna.

A teraz pytanie do Ciebie - po co wprowadzono Case i If? Skoro można Case zrobić Ifami? :)

© 2000-2025 GRY-OnLine S.A.