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.
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?
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ś.
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).
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
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 ;]
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:)
Scatterhead [ łapaj dzień ]
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;
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.
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
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) :)