GRY-Online.pl --> Archiwum Forum

Pascal - problem

04.10.2004
16:03
smile
[1]

===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 .

04.10.2004
16:04
smile
[2]

Kijano [ Konsul ]

zamiast integer daj real i bedzie git

04.10.2004
16:14
[3]

_Robo_ [ Generaďż˝ ]

Do dzilenia calkowitoliczbowego jest potworek: DIV :)

04.10.2004
16:18
smile
[4]

===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?

04.10.2004
16:21
[5]

===Elvis=== [ Powrót Króla ]

Robo
~~>
Rozwin swoja myśl jak mozesz?

04.10.2004
16:36
[6]

Kijano [ Konsul ]

co to znaczy wynik sie "sypie" ?
Jesli chcesz "ladny" wynik to napisz Writeln('Twoj wskaznik wynosi:',wynik:0:0);

04.10.2004
16:44
[7]

===Elvis=== [ Powrót Króla ]

Kijano
~~>

Tzn że wyskakuje Run Time Error :(

04.10.2004
19:30
[8]

Kijano [ Konsul ]

Elivis pod tym linkiem masz latke zainstaluj i jeszcze raz napisz program powinno pomoc :)

04.10.2004
19:37
[9]

_Robo_ [ Generaďż˝ ]

Elvis -> chodzi o to ,mze jak chcesz dizlic liczby typu Integer to uzywasz div zamiast /

04.10.2004
20:03
[10]

donzoolo [ Senator ]

czy ty checsz tym x^y zrobic podnoszenie liczby x do potegi Y bo nie rozumiem ???

04.10.2004
20:04
[11]

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›

04.10.2004
21:05
smile
[12]

===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.

04.10.2004
21:29
[13]

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 :]

08.10.2004
17:54
[14]

===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.


08.10.2004
17:59
smile
[15]

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.

08.10.2004
18:05
smile
[16]

KinSlayer [ Demon Hunter T ]

ktos mnie ubiegl, ale skoro juz tu zajrzalem...

...wystarczy else zamiast drugiego warunku :P

18.10.2004
18:11
[17]

===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.

18.10.2004
19:00
[18]

===Elvis=== [ Powrót Króla ]

up^^^^

zyzby nikt niechciał sie podzielić wiedza?

18.10.2004
19:05
[19]

kun4 [ Konsul ]

a nie mozesz zrobic petli "for i:=20 downto 1"?

Dawno mialem pascala ale powinno dzialac

18.10.2004
19:06
[20]

_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)

18.10.2004
19:07
smile
[21]

_Robo_ [ Generaďż˝ ]

lol, GOL cenzuruje nawiasy kwadratowe (indeksy)

18.10.2004
19:08
[22]

kun4 [ Konsul ]

_Robo_ => gdzie CI cenzuruje?

11.11.2004
10:55
[23]

===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.

11.11.2004
11:10
[24]

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

11.11.2004
11:27
[25]

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

11.11.2004
17:29
[26]

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

11.11.2004
17:32
[27]

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

11.11.2004
17:49
[28]

===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.

11.11.2004
17:57
[29]

ElNinho [ Pretorianin ]

Ale w jakim sensie źle ? co jest nie tak - tzn jakiś błąd Ci wyskakuje czy co ?

11.11.2004
17:59
[30]

===Elvis=== [ Powrót Króla ]

No własnie nic nie wyskuje moge sobie wczytywać liczby w niekończonośąc :D

11.11.2004
17:59
[31]

ElNinho [ Pretorianin ]

no 100 liczb powinno pobierać

11.11.2004
18:09
[32]

ElNinho [ Pretorianin ]

u mnie działa spokojnie :D

13.11.2004
21:21
[33]

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)

14.11.2004
12:20
[34]

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

14.11.2004
13:20
[35]

Kiss [ Konsul ]

Wlasnie potrzebuje innego sposobu zapisu niz ten ktory proponujesz na 2 ify:> Tylko ta czesc kodu, l1,l2,m1,m2 juz podane.

15.11.2004
05:00
[36]

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
:)

© 2000-2026 GRY-OnLine S.A.