|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2009
Messaggi: 71
|
problea borland pascal v7.0
ragazzi ho un problema con il software di programmazione pascal 7.0... facendo un programma elementare di grafica per scuola mi da un errore usando il comando clrscr (pulizia dello schermo). il programma consiste nel disegnra un grafico con una retta di equazione y=x e una sinusoide di equazione y=sin(x). c'è una variabile (n) di scala per ingrandire e diminuire la sinusoide (dato che tenendo i valori normali, essendo questi decimali ed essendo la y sempre minore di 1, non è possibile disegnarli su schermo). con un ciclo repeat quindi ho fatto una specie di modalità zoom in cui digitando 0 la sinusoide si ingrandisce e digitando 1 si rimpicciolisce. il problema inizialmente era che disegnando la prima sinusoide e poi facendo zoom la sinusoide rimaneva e ne disegnava un altra sopra. ho cercato di risolvere mettendo all'inizio del ciclo di zoom un clrscr però quando lo faccio partire vedo su schermo una parte grigia in cui la sinusoide si sostituisce alla sinusoide precedente e sotto una parte nera dove le parti di sinusoidi si sovrappongono.
qui il programma completo Codice:
program funzioni;
uses graph, crt;
var medX, medY, n, z: integer;
{----------------------------------------------------------------------------}
{inizializzazione della modalit… grafica}
procedure init_graph;
var grdriver: Integer;
grMode: Integer;
ErrCode: Integer;
begin
grDriver := Detect;
InitGraph(grDriver, grMode,' ');
ErrCode := GraphResult;
if ErrCode = grOk then
end;
{----------------------------------------------------------------------------}
{creazione del grafico}
procedure grafico;
begin
medX:=GetMaxX div 2;
medY:=GetMaxY div 2;
line(0, medY, GetMaxX, medY);
line(medX, 0, medX, GetMaxY);
end;
{----------------------------------------------------------------------------}
{creazione della retta}
procedure retta;
var retta1, retta2, retta3, retta4: integer;
begin
retta1:=medX+500;
retta2:=medY+500;
retta3:=medX-500;
retta4:=medY-500;
line(medX, medY, retta1, retta4);
line(medX, medY, retta3, retta2);
end;
{----------------------------------------------------------------------------}
{creazione della sinusoide}
procedure seno;
var y, x, x2, y2:real;
corx, cory, color, z, truncy, truncx:integer;
h:real;
begin
clrscr;
x:=-60;
medX:=GetMaxX div 2;
medY:=GetMaxY div 2;
grafico;
retta;
repeat
y:=sin(x);
y2:=y*n;
x2:=x*n;
truncy:=trunc(y2);
truncx:=trunc(x2);
corx:=medx+truncx;
cory:=medy-truncy;
color:=6;
if n>150 then h:=0.005
else h:=0.01;
x:=x+h;
PutPixel(corx, cory, Color)
until keypressed;
end;
{----------------------------------------------------------------------------}
begin {main}
init_graph;
n:=50;
repeat
readln(z);
case z of
0: n:=n+10;
1: n:=n-10;
end;
seno;
until (n<0) or (n>500);
readln;
end.
Ultima modifica di cele93 : 12-04-2010 alle 20:42. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
|
è il mio monitor a pu***** o c'è qualcosa che non va ?
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2009
Messaggi: 5001
|
Non so se fosse ironico, comunque ha usato lo spoiler al posto del codice. Quindi testo=sfondo.
__________________
L'italiano è una lingua stupenda. Non killiamola. Craftare nuove parole non serve
[HWU]Virtula - Lenovo Y580: i7 3630QM - Nvidia GTX660M - 8GB - SSD 256 + 750 - 15" FHD + Leap Motion |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Sep 2009
Messaggi: 71
|
si scusa ma sono abituato a un altro forum dove lo spoiler è una barretta che occupa una riga e se cliccata viene mostrato il testo... volevo solo risparmaire spazio, non ho sbagliato...
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:25.




















