
===Elvis=== [ Powrót Króla ]
Pascal - problem
Witam
Własnie zaczynam przygode z Pascalem, narazie brakuje mi literatury fachowej i meczy mnie pare rzeczy, mam nadzieje ze ktoś będzie znał odpowiedzi na moje pytania...
1) Dzielenie po wpisaniu kodu wynik:=x/z; wyskakuje bład wskazujący na znak "/" dzielenia, jaka moze byc tego przyczyna?
2) Potegowanie , program niechce skompilować takiego np. kodu y:=x^2
3)Podobnie jest z takim wyrazeniem y:=z*wynik*0.01
Podjerzewam że mój problem leży przy deklaracji zmiennym
[mam
var x,y,z,wynik:integer;
]
Za pomoc z góry dziekuje .

Kijano [ Konsul ]
zamiast integer daj real i bedzie git
_Robo_ [ Generaďż˝ ]
Do dzilenia calkowitoliczbowego jest potworek: DIV :)

===Elvis=== [ Powrót Króla ]
Kijano
~~>
Niby pomogło, kod sie kompiluje ale wynik się sypie :
program szkola_1;
uses
crt;
var x,y,z,wynik:real;
Begin
clrscr;
z:=x^2;
Writeln('Podaj swoj zwrost w centymetrach: ');
readln(x);
Writeln('Podaj swoja wage w kg: ');
readln(y);
wynik:=(y/z)*0.01;
Writeln('Twoj wskaznik wynosi:',wynik);
readln;
End.
>
Gdzie leży bład?
===Elvis=== [ Powrót Króla ]
Robo
~~>
Rozwin swoja myśl jak mozesz?
Kijano [ Konsul ]
co to znaczy wynik sie "sypie" ?
Jesli chcesz "ladny" wynik to napisz Writeln('Twoj wskaznik wynosi:',wynik:0:0);
===Elvis=== [ Powrót Króla ]
Kijano
~~>
Tzn że wyskakuje Run Time Error :(
Kijano [ Konsul ]
Elivis pod tym linkiem masz latke zainstaluj i jeszcze raz napisz program powinno pomoc :)
_Robo_ [ Generaďż˝ ]
Elvis -> chodzi o to ,mze jak chcesz dizlic liczby typu Integer to uzywasz div zamiast /
donzoolo [ Senator ]
czy ty checsz tym x^y zrobic podnoszenie liczby x do potegi Y bo nie rozumiem ???
donzoolo [ Senator ]
aha, doczytalem... mialo byc y=x^2
czy to ma znaczyc kwadrat X ?? bo jesli tak to sie mylisz... y := sqr(x); komenda na kwadrat liczby

===Elvis=== [ Powrót Króla ]
Dzieki for All :) Wszystko juz działa ;)
Mam jeszcze jedno pytanie a właściwie prosbe , polećcie mi jakiś podrecznik do Pascala, pisany w miare przystepnym językiem.
donzoolo [ Senator ]
Nie ma dobrego imho na rynku... jak bedziesz mial problem to wal tutaj albo np do mnie na gg.... troche czasu juz w tym siedze :]
===Elvis=== [ Powrót Króla ]
Ok mineło kilka dni i kolejny problem. Ponizej zamiesciłem kod programu .
1) Dlaczego program zwraca obie odpowiedzi w momencie kiedy x>=0 ?
Program Bilans;
uses
crt;
var przychod,x,r,jedzenie,telefon,komorka,odp: integer;
Begin
clrscr;
repeat
Writeln ('Podaj miesieczny przychod brutto: ');
Readln(przychod);
Writeln ('Podaj wydatki na jedzenie na 1 -msc: ');
readln(jedzenie);
Writeln ('Rachunek za telefon stacjonarny: ');
readln(telefon);
Writeln ('Rachunek za komorke: ');
readln(komorka);
x:=przychod-jedzenie-telefon-komorka ;
if x>=0 then
writeln ('Starczy ci mamony ',' zostanie ci ',x,' zl do wydania') ;
if x<0 then
writeln;
writeln ('Nie starczy ci mamony ',' zabraknie ci ',x,' zl do wyrownania bilansu') ;
writeln;
Writeln ('Jezeli chesz policzyc bilans jeszcze raz wybierz 0, jezeli chcesz wyjść wybierz 1: ');
readln(odp);
until odp=1;
End.

Kijano [ Konsul ]
Popraw jak nizej i bedzie git
Program Bilans;
uses
crt;
var przychod,x,r,jedzenie,telefon,komorka,odp: integer;
Begin
clrscr;
repeat
Writeln ('Podaj miesieczny przychod brutto: ');
Readln(przychod);
Writeln ('Podaj wydatki na jedzenie na 1 -msc: ');
readln(jedzenie);
Writeln ('Rachunek za telefon stacjonarny: ');
readln(telefon);
Writeln ('Rachunek za komorke: ');
readln(komorka);
x:=przychod-jedzenie-telefon-komorka ;
if x>=0 then begin
writeln ('Starczy ci mamony ',' zostanie ci ',x,' zl do wydania') ;
end;
if x<0 then begin
writeln;
writeln ('Nie starczy ci mamony ',' zabraknie ci ',x,' zl do wyrownania bilansu') ;
end;
writeln;
Writeln ('Jezeli chesz policzyc bilans jeszcze raz wybierz 0, jezeli chcesz wyjść wybierz 1: ');
readln(odp);
until odp=1;
End.

KinSlayer [ Demon Hunter T ]
ktos mnie ubiegl, ale skoro juz tu zajrzalem...
...wystarczy else zamiast drugiego warunku :P
===Elvis=== [ Powrót Króla ]
Warunki:
1. Zadeklarowac stala Max = 20
2. Zadeklarowac tablice zawierajaca Max elementow typu integer
3. Napisac program, ktory umozliwi:
- Wypelnienie tablicy liczbami podawanymi z klawiatury
- Wypisanie elementow tablicy w kolejnosci, w jakiej zostaly podane
- Wypisanie elementow tablicy od odwrotnej kolejnosci
Mam pewien problem udaje mi sie wszystko z wyjatkiem odwrocenia kolejnosci, przyszlo mi do glowy ze macierz po pierwszym wyswietleniu liczb "czysci pamiec'' postawilem jednak warunek sprawdzjacy czy "i" jest rowne max, gdy warunek jest spelniony program idzie dalej, wiec te hipoteze mozna odrzucic, niemam zbytnio pomyslu na odwrocenie, probowalem juz wszelkich mozliwych kombinacji i zawsze wyswietla mi sie albo pierwsza albo ostatnia wrrr...
Moze ktos wie jak to "naprawic' ?
Cytat:
Program wekt_1;
uses
crt;
const
max=20;
var
tablica: array [1..max] of integer ;
i:integer;
Begin
clrscr;
i:=1;
Writeln ('Podaj 20 kolejnych liczb: ') ;
for i:=1 to max do if not eoln
then
readln(tablica);
if i=max then
Begin
writeln;
writeln;
clrscr;
writeln('Podales nastepujace liczby:');
writeln('W koljenosci od 1 do 20: ');
for i:=1 to max do
writeln(tablica);
writeln;
readln;
end;
if i=max then
begin
readln;
writeln;
writeln;
clrscr;
writeln('W kolejnosci od 20 do 1: ');
for i:=1 to max do
writeln;
writeln(tablica);
readln;
readln;
end;
readln;
End.
===Elvis=== [ Powrót Króla ]
up^^^^
zyzby nikt niechciał sie podzielić wiedza?
kun4 [ Konsul ]
a nie mozesz zrobic petli "for i:=20 downto 1"?
Dawno mialem pascala ale powinno dzialac
_Robo_ [ Generaďż˝ ]
Nie wiem co Ty tu mieszasz ale jak chcesz
tablica: array [1..max] of integer ;
wypisac w odwrotnej kolejnosci (od 20 do pierwszego) to robisz trywalan petle:
for i:=max downto 1 do write(tablica); (pewnie probowales z samym to)

_Robo_ [ Generaďż˝ ]
lol, GOL cenzuruje nawiasy kwadratowe (indeksy)
kun4 [ Konsul ]
_Robo_ => gdzie CI cenzuruje?
===Elvis=== [ Powrót Króla ]
Witam
Mam kolejny problem, jak zadeklarować dwuwymiarową tablice i wypełnic ją liczbami, ja probowałem z tak jak ponizej zmieniając typy danych i troche kombinując ale zawsze jest cos źle, gdzie robie błąd?
Program tab1;
uses
crt;
const
max_x=5;
max_y=10;
var
tab:array[1..max_x , 6..max_y] of integer;
x,y:integer;
Begin
x:=1;
y:=6;
for x:=1 to max_x do
readln(tab[x]);
if x=max_x then
for y:=6 to max_y do
readln(tab[y]);
if y=max_y then
write(tab[x]);
End.
kun4 [ Konsul ]
Odrazu mowie ze moge sie mylic, bo dawno nie programowalem, ale skoror jest to tablica 2-wymiarowa to jak mozesz ja uzupelniac w taki sposb:
readln(tab[x]);
if x=max_x then
for y:=6 to max_y do
readln(tab[y]);
if y=max_y then
write(tab[x]);
Wydaje mi sie ze powinnens wypelniac ja jakos w sposob:
tab[x,y] cos takiego azraz poszukam to Ci napisze, chyba ze ktos mnie wyprzedzi
kun4 [ Konsul ]
Co prawda mi nic nie znalazlem ale chyba wiem jak to tzreba zrobic
RObisz dwie petle:
for x:=1 to 10
for y:=1 to 10
a nastepnie jedziesz tab[x,y]:=x+y;
wyjdzie Ci cos takiego:
2345678910
34567891011
456789101112
...
itd.
oczywiscie o ile sie nie myle
ElNinho [ Pretorianin ]
Do nauki Pascala imho najlepsz jest (po polsku of koz) Turbo Pascal marciniaka
a co do uzupełniania tablicy dwuwymiarowej
for x:=1 to max_x do
for y:=1 to max_y do
readln(tab[x,y]);
załatwia sprawę
zupełnie nie rozumiem, czemu zadeklarowałeś ją jako [1..max_x,6..max_y] po co ta 6?
po drugie nie rozumiem czemu w pętli sprawdzasz czy coś jest równewartości max ?
pozdrawiam
El
ElNinho [ Pretorianin ]
Jeszcze uwaga do tego programiku ze wzrostem - sypie się najprawdopodobniej dlatego, że pod zmienną z podstawiasz wyrażenie ze zmienną x, której wartość czytasz dopiero później
z:=x^2 dla wartości x "śmieci" też jest "śmieciem" czyli nie wiadomo czym
===Elvis=== [ Powrót Króla ]
Dobra to co wtedy jest tu źle?
Program tab1;
uses
crt;
const
max=10;
var
tab:array[1..max , 1..max] of integer;
x,y:integer;
Begin
x:=1;
y:=1;
tab[x,y]:=x+y;
for x:=1 to max do
for y:=1 to max do
readln(tab[x,y]);
for x:=1 to max do
for y:=1 to max do
write(tab[x,y]);
readln;
End.
ElNinho [ Pretorianin ]
Ale w jakim sensie źle ? co jest nie tak - tzn jakiś błąd Ci wyskakuje czy co ?
===Elvis=== [ Powrót Króla ]
No własnie nic nie wyskuje moge sobie wczytywać liczby w niekończonośąc :D
ElNinho [ Pretorianin ]
no 100 liczb powinno pobierać
ElNinho [ Pretorianin ]
u mnie działa spokojnie :D
Kiss [ Konsul ]
Jak nie rozbijajac na 3-5 ifow zrobic cos takiego-
Prawdziwe wtedy i tylko wtedy gdy postać ułamka pierwszego jest taka sama jak postać ułamka drugiego (takie same wartości liczników i mianowników),
Wynik porównania na ekranie wypisujemy w postaci:
Ulamek1 [nie] jest porównanie Ulamek2,
np. (1/2) nie jest identyczny z (50/100)
ElNinho [ Pretorianin ]
Kiss - no za bardzo nie rozumiem o co Ci chodzi,
np w jaki sposób pobierasz te ułamki, w jakich zmiennych to przechowujesz ?
po drugie nie widzę tu 3-5 ifów, imho dwa wystarczą, jeśli masz liczniki i mianowniki to sprawdzasz najpierw czy zgadzają się np liczniki, jeśli nie to nie są porównywanle jeśli tak to sprawdzasz czy mianowniki są takie same jeśli nie są to nie są porównywalne jeśli tak no to sa :)
pozdro
Kiss [ Konsul ]
Wlasnie potrzebuje innego sposobu zapisu niz ten ktory proponujesz na 2 ify:> Tylko ta czesc kodu, l1,l2,m1,m2 juz podane.
ElNinho [ Pretorianin ]
No to w jednym ifie
if l1=l2 and m1=m2 then // nie pamiętam za bardzo czy w paćkalu jest słówko and :)
writeln ułamek pierwszy porównywalny z drugim
else
nie porównywalny
:)