Kezdőoldal » Számítástechnika » Programozás » Free pascalban egy Valós...

Free pascalban egy Valós típusú változónak, hogy lehet megkapni az egész részét?

Figyelt kérdés
pl a:=2,134 és ebből a:=2
2011. febr. 11. 19:06
1 2
 1/11 anonim ***** válasza:

Round: Valós típusú kifejezést a legközelebbi egészre kerekít.

Szintaxis: Round(x : real) : longint;


Trunc: az x valós kifejezés 0 felé kerekített egészrészét adja vissza.

Szintaxis: Trunc(x : real) : longint; x valós típusú kifejezés.


Remélem működnek, nem próbáltam de google fél perc alatt megsegített.

2011. febr. 11. 19:13
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:

Rég nem használtam pascalt, de azt hiszem a div kell neked:

2,134 div 1 = 2

Két szám hányadosából írja ki az egész részt.

Ez nem kerekít, hanem egész rész ad vissza.

2011. febr. 11. 19:18
Hasznos számodra ez a válasz?
 3/11 A kérdező kommentje:

a div csak egész változóknál működik, de köszi.

1-nek : nem jó, hibát észlel

Round(x2:real):longint;

Round(y2:real):longint;

így néz ki nálam, de ebben a sorban : ill. ) hibát észlel

2011. febr. 11. 19:27
 4/11 A kérdező kommentje:
alapból az x2, y2 real típusú változó, a másik, hogy ez egy ciklusban van és a ciklus elején fontos, hogy ne longint legyen, a végén kell az, hogy egész típus legyen
2011. febr. 11. 19:29
 5/11 anonim ***** válasza:

Talán ezt keresed:

int(x)

Elvileg egy valós szám egész részét kell, hogy visszaadja.

2011. febr. 11. 19:38
Hasznos számodra ez a válasz?
 6/11 A kérdező kommentje:

itt a teljes program, az istenért se tudom megcsinálni. A program lényege: bekéri egy test gyorsulását(a) majd ebből kiszámolja 0,5 másodpercekre lebontva a test sebességét és a megtett utat, majd ezt egy koordináta rendszerben .


program gyorsulas;

uses crt, graph;

var gd,gm: integer;

a,t,v,v0,s,x1,y1,x2,y2:extended;

begin

clrscr;

t:=0;

v0:=0;

Writeln('Add meg a test gyorsulását! ');

readln(a);

writeln;


{ grafika inicializalasa }

gd := d4bit;

gm := m640x480;

initgraph(gd,gm,'');

{ rajzolas }

setcolor(red);

line(80,350,600,350);

line(100,20,100,370);

setcolor(green);

outtextxy(550,375,'t (s)');

outtextxy(60,40,'s');

outtextxy(50,50,'(m)');

setcolor(red);

outtextxy(105,355,'0');



line(95,300,105,300);

line(95,250,105,250);

line(95,200,105,200);

line(95,150,105,150);

line(95,100,105,100);

line(95,50,105,50);


outtextxy(75,305,'50');

outtextxy(75,255,'100');

outtextxy(75,205,'150');

outtextxy(75,155,'200');

outtextxy(75,105,'250');

outtextxy(75,55,'300');


line(150,345,150,355);

line(200,345,200,355);

line(250,345,250,355);

line(300,345,300,355);

line(350,345,350,355);

line(400,345,400,355);

line(450,345,450,355);

line(500,345,500,355);

line(550,345,550,355);


outtextxy(155,355,'2,5');

outtextxy(205,355,'5');

outtextxy(255,355,'7,5');

outtextxy(305,355,'10');

outtextxy(355,355,'12,5');

outtextxy(405,355,'15');

outtextxy(455,355,'17,5');

outtextxy(505,355,'20');

outtextxy(555,355,'22,5');

outtextxy(600,347,'>');

outtextxy(97,16,'^');


x1:=100;

y1:=350;


repeat


t:=t+0.5;

s:=v0*t+a/2*t*t;

writeln(' t :',t:3:1 );

writeln('s :',s:3:3);

v:=v0+a*t;

writeln('v :',v:3:1);

v0:=v;

delay(100);


x2:=x2+t;

y2:=350-s;

int(x2);

int(y2);

line(x1,y1,x2,y2);

x1:=x2;

y1:=y2;

until s>250;

readln;

end.

2011. febr. 11. 19:50
 7/11 anonim ***** válasza:

az eggyik baja ezzel van: x2:=x2+t;

itt nem adtál meg értéket az x2-nek előtte megkéne adnod neki 1 értéket

2011. febr. 11. 20:13
Hasznos számodra ez a válasz?
 8/11 A kérdező kommentje:
igazad van , de ha nullát megadok neki a cikluson kívül akkor még több hibát észlel:S:S
2011. febr. 11. 20:49
 9/11 anonim ***** válasza:

Ahogy most van a programod,

int(x2);

int(y2);

nem használod fel semmire.

szerintem ezen értékeket tedd egy változóba:

intx2:=int(x2);

inty2:=int(y2);

Szerintem egyszerűbb lett volna egy növekményes ciklussal dolgozni, mert valójában most ezzel pont azt helyettesíted, csak szvsz kicsit bonyolítva.

2011. febr. 11. 21:06
Hasznos számodra ez a válasz?
 10/11 A kérdező kommentje:

megcsináltam úgy ahogy mondtad, de még mindig baja van:S így néz ki:

intx2:=int(x2);

inty2:=int(y2);

line(x1,y1,intx2,inty2);


és az intx2 és inty2 az integer típusú változó. for ciklusra gondoltál? igen azzal egyszerűbb lenne, viszont akkor az idő csak 1s lehetne min. és olyan programot már írtam, ami másodpercenként számolja ki, de ha a:=70, akkor a grafikon elég csúnya, azért gondoltam, hogy megcsinálom úgy, hogy akár 0,1s-onként is számoljon.

2011. febr. 12. 14:20
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!