Forum Gry Hobby Sprzęt Rozmawiamy Archiwum Regulamin

Forum: Zna się ktoś na Pascalu ?

11.03.2017 18:47
1
stiflerteem
14
Chorąży

Zna się ktoś na Pascalu ?

Witajcie mam problem nie wiem co wpisałem źle. Oto mój kod
program Demo3;
var a,b,suma,roznica,iloczyn,iloraz,reszta :
begin
writeln('Operacje arytmetyczne: a+b, a-b, a*b, a DIV b, a MOD b');
writeln('Wartosci liczb a i b sa wprowadzane z klawiatury')
write(a= );
readln(a);
write('b= ');
readln (b);
suma =: a+b;
roznica =: a-b;
iloczyn =: a*b;
iloraz =: a DIV b;
reszta =: a MOB b;
writeln('Wyniki obliczen');
writeln('a+b = ', wynik);
writeln('a-b = ', roznica);
writeln('a*b ',iloczyn);
writeln('a DIV b ', iloraz);
writeln('a MOD b', reszta);
writeln('Koniec obliczen!');
writeln('Naciscnij klawisz ENTER');
Readln.
end.

11.03.2017 18:50
2
1
2 odpowiedzi
zanonimizowany1183921
15
Senator

Nie kompiluje sie? Bo tak to wyglada. To kod bezposrednio z edytora? Jesli tak to masz tam 5 bledow. Kropki itp i w suma dales zmienna wynik co nie istnieje taka zmienna.

post wyedytowany przez zanonimizowany1183921 2017-03-11 18:55:25
11.03.2017 19:00
2.1
stiflerteem
14
Chorąży

dałbyś radę to poprawić bo ja nie znam się na tym w ogóle, robię to z książki....

11.03.2017 19:01
2.2
stiflerteem
14
Chorąży

tak to kod z edytora :)

11.03.2017 18:54
3
stiflerteem
14
Chorąży
Image

Wyskakuje tylko taki błąd :(

11.03.2017 19:01
4
1
1 odpowiedź
zanonimizowany1183921
15
Senator

Po calej instrucji var daj ; a nie :
Druga instrukcja writeln ma zgubiony ;
writeln('a+b=',wynik); nie wynik tylko suma
Ostatnie readln zakoncz srednikem i end z kropka? Moze. Juz od dawna nie siedze w pascalu.

11.03.2017 19:02
4.1
stiflerteem
14
Chorąży

Ratujesz mi dupe :D

11.03.2017 19:06
5
1 odpowiedź
stiflerteem
14
Chorąży

var a,b,suma,roznica,iloczyn,iloraz,reszta ;
begin
writeln('Operacje arytmetyczne: a+b, a-b, a*b, a DIV b, a MOD b');
writeln('Wartosci liczb a i b sa wprowadzane z klawiatury')
write(a= );
readln(a);
write('b= ');
readln (b);
suma =: a+b;
roznica =: a-b;
iloczyn =: a*b;
iloraz =: a DIV b;
reszta =: a MOB b;
writeln('Wyniki obliczen');
writeln('a+b = ', suma);
writeln('a-b = ', roznica);
writeln('a*b ',iloczyn);
writeln('a DIV b ', iloraz);
writeln('a MOD b', reszta);
writeln('Koniec obliczen!');
writeln('Naciscnij klawisz ENTER');
Readln;
end
nadal gdzieś jest 1 błąd

11.03.2017 19:11
5.1
1
zanonimizowany1183921
15
Senator

Przeciez pisalem ze w drugiej instrukcji writeln zjadles srednik :)
I ten end albo jest z kropka albo bez. Juz nie pamietam.

post wyedytowany przez zanonimizowany1183921 2017-03-11 19:11:34
11.03.2017 19:14
6
stiflerteem
14
Chorąży
Image

kurde nie zauważyłem ale nadal coś go blokuje xd nie lubię tego programu :(

11.03.2017 19:15
7
1 odpowiedź
stiflerteem
14
Chorąży

najlepsze jest to że jak go zmienię to nagle powstają 3 błędy :D

11.03.2017 19:16
7.1
zanonimizowany1183921
15
Senator

Ze jak dasz kropke po end?

11.03.2017 19:16
Legion 13
8
Legion 13
158
The Black Swordsman

Z tego co pamiętam (w nawiasach numery linijek):
(1) nadaj zmiennym typy, zamiast ";" ":", później typ (np Integer) i średnik
(4) średnik na końcu
(5) powinno być write('a=');
(9-13) nie powinno być czasem ":=" zamiast "=:" ?

Poza tym kompilator sam wskazuje ci błędy, trzeba tylko przeczytać.

Numery linijek z posta [5] czyli:

spoiler start

var a,b,suma,roznica,iloczyn,iloraz,reszta ;
begin
writeln('Operacje arytmetyczne: a+b, a-b, a*b, a DIV b, a MOD b');
writeln('Wartosci liczb a i b sa wprowadzane z klawiatury')
write(a= );
readln(a);
write('b= ');
readln (b);
suma =: a+b;
roznica =: a-b;
iloczyn =: a*b;
iloraz =: a DIV b;
reszta =: a MOB b;
writeln('Wyniki obliczen');
writeln('a+b = ', suma);
writeln('a-b = ', roznica);
writeln('a*b ',iloczyn);
writeln('a DIV b ', iloraz);
writeln('a MOD b', reszta);
writeln('Koniec obliczen!');
writeln('Naciscnij klawisz ENTER');
Readln;
end

spoiler stop

post wyedytowany przez Legion 13 2017-03-11 19:22:06
11.03.2017 19:21
9
2 odpowiedzi
stiflerteem
14
Chorąży
Image

zmieniłem i nadal coś nie tak :(

11.03.2017 19:22
Legion 13
9.1
1
Legion 13
158
The Black Swordsman

Wpisałeś MOB, a miało być MOD

post wyedytowany przez Legion 13 2017-03-11 19:23:05
11.03.2017 19:23
9.2
1
zanonimizowany1183921
15
Senator

Legion13 dobrze zauwazyl. Jeszcze popraw write(a=); na write('a=');

11.03.2017 19:34
10
stiflerteem
14
Chorąży

dzięki :P
niby kod okej nie ma błędów ale nie robi się apka, może tak ma być nie wiem :D

11.03.2017 19:36
11
stiflerteem
14
Chorąży

mam jeszcze jedno zadanie do zrobienia, może dam radę :D

11.03.2017 19:36
12
2 odpowiedzi
zanonimizowany1183921
15
Senator

Masz gotowca:

program Demo3;
var a,b,suma,roznica,iloczyn,iloraz,reszta;
begin
writeln('Operacje arytmetyczne: a+b, a-b, a*b, a DIV b, a MOD b');
writeln('Wartosci liczb a i b sa wprowadzane z klawiatury');
write('a=' );
readln(a);
write('b= ');
readln(b);
suma := a+b;
roznica := a-b;
iloczyn := a*b;
iloraz =: a DIV b;
reszta := a MOD b;
writeln('Wyniki obliczen');
writeln('a+b = ', suma);
writeln('a-b = ', roznica);
writeln('a*b ',iloczyn);
writeln('a DIV b ', iloraz);
writeln('a MOD b', reszta);
writeln('Koniec obliczen!');
writeln('Naciscnij klawisz ENTER');
Readln;
end.

11.03.2017 19:40
12.1
stiflerteem
14
Chorąży

Działa to na Twoim pascalu ? :D bo u mnie 1 błąd :D

11.03.2017 19:47
😊
12.2
1
zanonimizowany1183921
15
Senator

Pisze z komorki. Nie mam kompilatora. Ale juz wiem gdzie zrobilem blad. Poprawiam iloraz := a DIV b;

11.03.2017 19:40
13
1
1 odpowiedź
zanonimizowany1183921
15
Senator

Zeby sie apka uruchomla to chyba trza się cisnac F9 zamiast F8. Nie kompiluj samo tylko kompiluj i uruchom.

11.03.2017 19:43
13.1
stiflerteem
14
Chorąży

nic się nie dzieje tylko raport z zerem błędów z kodem który oboje pomogliście mi poprawić (za co jestem bardzo wdzięczny )

11.03.2017 19:44
14
1 odpowiedź
stiflerteem
14
Chorąży
Image

Mam jeszcze jedno zadanie nie wiem jak się za nie zabrać jakieś pomysły ? :D

11.03.2017 19:56
Legion 13
14.1
1
Legion 13
158
The Black Swordsman

Ja zrobiłbym to tak jak w poprzednim zadaniu:
Pobierasz od użytkownika a,b,h. Kwadrat ma boki a i a, prostokąt a i b, a trójkąt podstawę a i wysokość h. Z tego liczysz co tam potrzebujesz. Po problemach przy poprzednim zadaniu wnioskuje że w tym nie chodzi o wykorzystanie instrukcji warunkowych (no chyba że się mylę i musisz ich użyć).

11.03.2017 19:56
15
stiflerteem
14
Chorąży

ktoś coś ?

11.03.2017 20:10
16
stiflerteem
14
Chorąży

wszystko było by łatwiejsze jak by chodziło o jedną figurę :D

11.03.2017 20:36
17
zanonimizowany1183921
15
Senator

No jest wiecej pisania bo musisz pobrac bok kwadratu, prostokata i trojkata. Dodatkowo wysokosc trojkata. Bedziesz potrzebowal do tego 5 zmiennych plus 6 z wynikami (optymalnie).

Polecam ci ten kurs: http://main.edu.pl/pl/user.phtml?op=lesson&n=5&page=pascal

post wyedytowany przez zanonimizowany1183921 2017-03-11 20:42:42
11.03.2017 20:38
nagytow
18
5 odpowiedzi
nagytow
146
Firestarter

Najpierw pytasz uzytkownika o wybor figury, pozniej albo seria if...else albo case...of rozpatrujesz kolejne przypadki.

11.03.2017 20:42
18.1
zanonimizowany1183921
15
Senator

To nie jest zadanie z ifami. Po prostu program ma jednoczesnie obliczyc pole i obwod trzech figur.

11.03.2017 20:53
nagytow
18.2
nagytow
146
Firestarter

Skad wiesz? Przeciez bez tego to zadanie nie ma sensu.

post wyedytowany przez nagytow 2017-03-11 20:53:41
11.03.2017 20:54
18.3
1
zanonimizowany1183921
15
Senator

Program tylko pobierze boki figur i wysokosc trojkata i tyle. Czyli 7 zapytan. Czyli 7 zmiennych i potem da juz gotowce.

Daje wzor w uruchomieniu programu:
Podaj bok a kwadratu:
Podaj bok a prostokata:
Podaj bok b prostokata:
Podaj bok a trojkata:
Podaj bok b trojkata:
Podaj bok c trojkata:
Podaj wysokosc trojkata:

Pole kwadratu wynosi xx a obwod xx.
Pole prostokata wynosi xx a obwod xx.
Pole trojkata wynosi xx a obwod.

Zwykly prosty program bez ifow i case.

11.03.2017 22:44
nagytow
18.4
nagytow
146
Firestarter

Biorac pod uwage, ze w tresci zadania jest napisane "lub" a nie "i" sadze, ze ify sa konieczne. Tresc zadania mowi, ze trzeba pobrac jedno lub drugie, nie oba.

11.03.2017 22:53
18.5
1
zanonimizowany1183921
15
Senator

User watku jest 1 dzien w nauce programowania. Pewnie to szkolne zadanie z informatyki. Poprzednie zadanie opieralo sie na samych procedurach wiec raczej tu chodzi o to samo.
Watpie aby po pierwszym dniu programowania ktos wymagal od ucznia wyborow.
Pierwszy dzien nauki to budowa programu, proste typy, deklaracje zmiennych, wyswietlanie, wczytywanie, itp.

PS. Chocby user byl juz po miesiacu kursu to ja ciagle widze w tym zadaniu to co napisalem jak je wykonac :D

post wyedytowany przez zanonimizowany1183921 2017-03-11 22:55:08
11.03.2017 21:24
19
1 odpowiedź
Lutz
173
Legend

Nie trzeba podawac tylu zmiennych wystarcza trzy.
Dla trojkata po wprowadzeniu drugiej zmiennejj nalezy zapytac czy jest to wysokosc czy bok i wyliczyc reszte z trygonometrii.

Po wprowadzeniu pierwszej wyliczyc pole kwadratu, drugiej - prostokata, trzeciej trojkata.

Zgrabny algorytm >> skomplikowany algorytm

post wyedytowany przez Lutz 2017-03-11 21:27:01
11.03.2017 21:59
19.1
stiflerteem
14
Chorąży

jak to zrobić ? przyznam że siedzę w Pascalu od 1 dnia :D wiec jestem w tym nowy :(

11.03.2017 22:24
20
1 odpowiedź
zanonimizowany1183921
15
Senator

A po co sie tego uczysz? Szkola wymaga a czy tak od siebie chcesz sie tego nauczyc.

Programowanie to nie tylko jezyk programowania ale tez algorytmy, bazy danych itp.

Jested poczatkujacy wiec to co Lutz napisal jest ci niepotrzebne. O if i case tez narazie zapomnij. Skup sie na prostych instrukcjach.
Ten program bedzie wygladal podobnie ale z wieksza liczba instrukcji.

Zacznij cos pisac. Dalem przyklad powyzej. Nie napisze ci tego ale pomoge ci napisac. Poczytaj ten kurs co powyzej podalem. Jest dla zielonych.

Program jest naprawde prosty. Nazwij sobie pierwsze zmienne tak: ka, pa, pb, ta, tb, tc, th.

Zadeklaruj je tak: var ka, pa, pb, ta, tb, tc, th: Real;

post wyedytowany przez zanonimizowany1183921 2017-03-11 22:30:36
12.03.2017 11:34
20.1
stiflerteem
14
Chorąży

uczepili się tego w szkole ale mamy to zrobić jako zaliczenie, zamiast nas przygotować to dali zadania i róbcie sobie sami, polskie realia .. Dlatego napisałem na forum bo pierwsze zadania zrobiłem ale te 2 ostatnie mnie trochę zmieszały

12.03.2017 14:29
21
1 odpowiedź
stiflerteem
14
Chorąży

Udało mi się spichcić takie coś :D ale jest jeden błąd ...
VAR a,b,c,h,p,p1,p2,o,o1,o2:real;
begin
writeln('Pole i obwod jakiej figury chcesz policzyc?');
writeln('1-kwadratu');
writeln('2-prostokata');
writeln('3-trojkata');
writeln('Wpisz numer figury i kliknij Enter:');
readln;

begin

if 1 then

begin

writeln('wpisz dlugosc boku');

readln(a);
p2:=a*a;
o1:=4*a;
writeln( 'obwod kwadratu=',o1);

readln;

writeln( 'pole kwadratu=',p2);

readln;
end;

if 2 then
begin
writeln('wpisz dlugosc pierwszego boku');

readln(a);
writeln('wpisz dlugosc drugiego boku');

readln(b);
p:=a*b;
o:=2*(a+b);
writeln('obwod prostokata = ',o);
readln;
writeln( 'pole prostokąta ',p);
readln;
end;
if 3 then
BEGIN
writeln('wpisz dlugosc pierwszego boku');

readln(a);

writeln('wpisz dlugosc drugiego boku');

readln(b);

writeln('wpisz dlugosc trzeciego boku');

readln(c);

writeln('wpisz wyskokosc');

readln(h);

p1:=a*h/2;

o2:=a+b+c;

readln;
writeln('obwod trojkata= ',o1);

readln;

readln;
writeln( 'pole trojkata=',p1);

readln;

END;
END.

12.03.2017 14:46
Legion 13
21.1
1
Legion 13
158
The Black Swordsman

- Nie potrzebujesz tylu zmiennych, wystarczy: a, b, c, h, obw, pole, musisz też dodać zmienną którą będziesz używał przy If - może być coś takiego:
i: Integer;
- W 8 linijce w readln, wczytujesz do zmiennej i
- W każdym If musisz porównywać do tej zmiennej, coś takiego:
if i=1 then
- Usuń begina przed pierwszym If
- Możesz usunąć te niepotrzebne puste readln; wstawianie ich jest bez sensu, wstaw tylko 1 na końcu (przed ostatnim END.)

Edit.
Jeszcze jedno, przy wyświetlaniu każdej liczby typu Real musisz wskazać żeby liczba była wyświetlana w systemie dziesiętnym:
writeln( 'obwod kwadratu=',o:0:2);
Pierwsza cyfra oznacza ilość cyfr przed przecinkiem (jak dasz zero do wyświetla całość), a druga po przecinku

post wyedytowany przez Legion 13 2017-03-12 14:54:22
12.03.2017 17:36
👍
22
stiflerteem
14
Chorąży

Dzięki Legion postaram się wprowadzić zmiany i napiszę Ci co i jak ! :D

12.03.2017 17:46
😍
23
1 odpowiedź
stiflerteem
14
Chorąży
Image

nie wiem dlaczego ale taki błąd wywala

12.03.2017 18:51
Legion 13
23.1
Legion 13
158
The Black Swordsman

Usunąłeś tego begina przed pierwszym IF?

post wyedytowany przez Legion 13 2017-03-12 18:51:25
12.03.2017 19:41
24
1 odpowiedź
stiflerteem
14
Chorąży

tak :D

12.03.2017 20:07
Legion 13
24.1
1
Legion 13
158
The Black Swordsman

Jak chcesz to tu masz gotową wersję, nie wiem co może ci tam nie działać jak poprawiłeś to co napisałem.
https://goo.gl/e412mb

12.03.2017 20:13
👍
25
stiflerteem
14
Chorąży

Legion dzięki wielkie Twoja wersja działa teraz bez zarzutów musiałem tylko dodać readln; na końcu każdego działania żebym zdążył przeczytać wynik :D
Jeszcze raz wielkie dzięki za poświęcony czas ! :D

Forum: Zna się ktoś na Pascalu ?