GRY-Online.pl --> Archiwum Forum

Problem z napisaniem programu miło gdyby ktoś pomógł(Turbo Pascal)

18.09.2008
23:39
[1]

Williams [ Generaďż˝ ]

Problem z napisaniem programu miło gdyby ktoś pomógł(Turbo Pascal)

Witam pisaliśmy na lekcji program ale nie do końca nauczyciela zrozumiałem i chciałbym trochę się bardziej na ten temat dowiedzieć.

Program to. Z podawanych liczb ma wytypować największą. ale ma wytypować największą dopiero po wpisaniu liczby -999.

To co do tej pory na lekcji zrobiłem i szczerze nie miałem więcej czasu na by się przyjrzeć temu i samemu, i poprobować bo trochę zalatany byłem więc jeśli ktoś mógł by mnie poprawić będę bardzo wdzięczny.

Oto co napisałem do tej pory:


program P1;


var count, number,highersofar: integer;

begin
highersofar :=0;
repeat
write('enter number'); readln('number')
if highersofar <>-999 then
begin
total := total+number;
count:= count+1
end;


Proszę poprawcie dziękuje.

18.09.2008
23:50
smile
[2]

Toshi_ [ Generaďż˝ ]

DOKŁADNA treść zadania pomogłaby bo ja tam widzę jakieś dodawanie tej liczby do jakiegoś "totala" (nie zadeklarowanego tak a propos).
Poza tym - główna treść programu się wykonuje, gdy wpisana liczba jest różna od -999. O to chodziło?
Ja zrozumiałem to co napisałeś tak, że program ma ciągle pytać o liczbę, zaczyna działać dopiero po wpisaniu -999...

Serio, przepisz dokładnie treść zadania.

EDIT: Aaaaaaa, czy chodzi o to że wpisujesz ileśtam liczb a program poda największą dopiero gdy wpisze się -999?

18.09.2008
23:54
[3]

Williams [ Generaďż˝ ]

Tak chodzi o to że program cały czas pyta o liczby i dopiero po wpisaniu -999 i wciśnięciu Enter pokazuje największą liczbę.

Wybaczcie ale Pascal'a zaczołem tydzień temu. w tym 2 razy tylko pisaliśmy coś.

18.09.2008
23:58
smile
[4]

Toshi_ [ Generaďż˝ ]

No, to jeśli tak to ma działać to oto moja propozycja :)

program porownywanie;

var count, num, high: integer;

Begin
high := 0;
repeat
begin
writeln('Podaj liczbę: ');
readln(num);
if num > high
then high := num;
until num = -999;
writeln('Największa liczba: ',high);
readln;
End.

Może jakieś błędy stylistyczne się wkradły - ja z kolei Pascalem się nie bawiłem od jakiegoś czasu i polecenia mi się mieszają z C ^^

EDIT: Kurde, GOL automatycznie usuwa spacje z początku wiersza... A takie ładne wcięcia porobiłem :P
Serio, stosuj wcięcia na "wnętrzach" pętel czy warunkach - kod jest wtedy dużo czytelniejszy (chyba że stosujesz a tobie też GOL je wygryzł ;P).

19.09.2008
00:01
[5]

Williams [ Generaďż˝ ]

Dzięki, zobaczę co i jak a tylko bo nam nauczyciel mówił cały czas że mamy używać funkcji/operatora sam już nie wiem, high so far. Czy jest duża różnica między twoją opcją a nauczyciela, bo twój program wygląda przejrzyście bardzo.

Pozdrawiam i dziękuje za pomoc.

Też wygryzł:P

19.09.2008
00:07
[6]

Toshi_ [ Generaďż˝ ]

Aaaa to tylko nazwa zmiennej. Zamiast "high" możesz pisać to "highsofar" - to tylko kwestia zdefiniowania.

A tutaj skonsultowana z kumplem i poprawiona wersja :P

program porownywanie;

var count, num, high: integer;

Begin
high := 0;
repeat
writeln('Podaj liczbę: ');
readln(num);
if num > high
then high := num;
until num = -999;
writeln('Największa liczba: ',high);
readln;
End.

EDIT: Oooo, jeszcze lepiej - są i wcięcia ;] ->>>
Thx, Bartek ;]

19.09.2008
00:15
smile
[7]

Williams [ Generaďż˝ ]

Dzięki Ci za to bardzo:)

Wiem na czym się wzorować:)

Tylko się jeszcze spytam czy znasz jakieś dobre strony gdzie można sie pouczyć, rozwiązywania problemu, szkicowania bo na papierze i pisanie pseudo-code:)

Teraz niedawno zaczęliśmy się tego uczyć i piszemy w Pascal PX(czy coś takiego:).

Ja się raczej samemu z książki do Delphi uczę ale nie doszedłem jeszcze do funkcji writeln tylko ciągle większości rzeczy robie za pomocą ShowMessage lub MessageBox:).

Tak więc jeszcze raz dziękuje za pomoc:)


PS. przez tego nauczyciela myślałem że highsofar to jest zmienna:P (głupek ze mnie):)

Podziękowania również dla kolegi:)

19.09.2008
01:05
[8]

Scatterhead [ łapaj dzień ]

19.09.2008
09:25
[9]

kastore [ Troll Slayer ]

Nie wiem tylko po kiego grzyba nauczyciel wymaga żeby sprawdzać czy wpisana liczba to -999 , przecież można zrobić pętle wpisującą dane i zakończyć ją Escapem

repeat
ReadLn(a)
...
....
...

untli a=#27;

19.09.2008
09:33
[10]

kastore [ Troll Slayer ]

Aha

Toshi_ --> tam na końcu nie powinno się używać ReadLn, tylko ReadKey. ReadLn, bedzie czekać na enter i dopiero po enterze pójdzie dalej.
ReadLn będzie przyjmować i pokazywać wszystko na ekranie co sie wklepie z klawiatury, Readkey zareaguje na cokolwiek z kalwiatury i puści dalej.

Williams --> zamiast MessageBox, używaj InputBox, a do komunikacji MessageDlg :D wygodniejsze.

19.09.2008
17:29
[11]

Toshi_ [ Generaďż˝ ]

kastore -> wiem ;]
Osobiście wolę, żeby program się kończył po klepnięciu Entera a nie jakiegokolwiek przycisku. Powód? Nie wiem, chyba przez to, że kiedyś chciałem przepisać z konsoli wynik programu a kumpel przypadkowo oparł się o klawiaturę i wcisnął spację... ^^
Prawdopodobieństwo przypadkowego wciśnięcia Entera jest raczej mniejsze, niż wciśnięcia CZEGOKOLWIEK :P

19.09.2008
17:45
[12]

nagytow [ Firestarter ]

Poczatkowo kazdy ma problemy, jednak wydaje mi sie, ze powinienes odlozyc na chwile podrecznik Delphi i poczytac o klasycznym Turbo Pascalu. Jest pare ciekawych kursow w sieci. Naprawde ci to polecam, bo takich problemow: mamy używać funkcji/operatora sam już nie wiem, high so far. nie powinienes miec, nawet bedac dopiero na writeln().
Ale dobrze, ze zapalu ci nie brakuje i nie prosisz o gotowca (mimo, ze i tak go dostales) :)

© 2000-2024 GRY-OnLine S.A.