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.
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.
dałbyś radę to poprawić bo ja nie znam się na tym w ogóle, robię to z książki....
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.
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
Przeciez pisalem ze w drugiej instrukcji writeln zjadles srednik :)
I ten end albo jest z kropka albo bez. Juz nie pamietam.
kurde nie zauważyłem ale nadal coś go blokuje xd nie lubię tego programu :(
najlepsze jest to że jak go zmienię to nagle powstają 3 błędy :D
Ze jak dasz kropke po end?
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
Wpisałeś MOB, a miało być MOD
Legion13 dobrze zauwazyl. Jeszcze popraw write(a=); na write('a=');
dzięki :P
niby kod okej nie ma błędów ale nie robi się apka, może tak ma być nie wiem :D
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.
Pisze z komorki. Nie mam kompilatora. Ale juz wiem gdzie zrobilem blad. Poprawiam iloraz := a DIV b;
Zeby sie apka uruchomla to chyba trza się cisnac F9 zamiast F8. Nie kompiluj samo tylko kompiluj i uruchom.
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 )
Mam jeszcze jedno zadanie nie wiem jak się za nie zabrać jakieś pomysły ? :D
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ć).
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
Najpierw pytasz uzytkownika o wybor figury, pozniej albo seria if...else albo case...of rozpatrujesz kolejne przypadki.
To nie jest zadanie z ifami. Po prostu program ma jednoczesnie obliczyc pole i obwod trzech figur.
Skad wiesz? Przeciez bez tego to zadanie nie ma sensu.
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.
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.
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
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
jak to zrobić ? przyznam że siedzę w Pascalu od 1 dnia :D wiec jestem w tym nowy :(
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;
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
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.
- 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
Dzięki Legion postaram się wprowadzić zmiany i napiszę Ci co i jak ! :D
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
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