Мы используем Реформал.ру:   Войти

1

голос

Выводит ошибку проверки диапазона

при выделении памяти для динамической переменной и при чтении выдает ошибку (на другой версии паскаля работает)


type
mas=array[1..1] of real;
pmas=^mas;
matr=array[1..1] of pmas;
pmatr=^matr;
var
x:pmatr;
i,j,n,m,y:word;
begin
readln(n);
readln(m);
getmem(x,sizeof(mas)*m); {Здесь}
for i:=1 to n do
getmem(x^[i],sizeof(real)*n);
for i:=1 to n do
for j:=1 to m do
read(x^[i]^[j]); {Здесь}

вот еще одна программа, тоже самое

type
mas=array[1..100] of real;
matr=array[1..1] of mas;
var
x:^matr;
i,j,n,m,y:word;
Nb,Sa,s,max:real;
begin
readln(n);
readln(m);
for i:=1 to n do
new(x);
for i:=1 to n do
for j:=1 to m do
read(x^[i,j]); {Здесь}

Автор: Alexator, 20.06.2011, 22:19
Статус идеи: выполнено

Ответ администраторов сайта

OCTAGRAM, 21.06.2011
Нужно добавить {$R-} в начале программы.

Комментарии

Alexator, 21.06.2011, 00:21
Спасибо!
Ответить
max, 21.02.2012, 18:19
помогите мне пожалуйста!! выводит ошибку проверки диапазона.
uses crt, graph;
const m=500; h=1; dt=0.001;
var i,j,jj,k,DV, MV, EC : integer;
x1,x2,s,pi,lambda,xx,x,y : real;
a1,a2,d,l1,l2,II,In1,In2,razn,fi1,fi2 : real;
BEGIN
DV:=Detect; InitGraph(DV,MV,'c:\bp\bgi');
EC:=GraphResult; if EC grOK then Halt(1);
pi:=3.1415; lambda:=6; d:=15; x1:=32-d; x2:=32+d;
For i:=1 to 640 do For j:=0 to 480 do
begin
x:=0.1*i; y:=-10+0.1*j;
l1:=sqrt((x-x1)*(x-x1)+y*y); l2:=sqrt((x-x2)*(x-x2)+y*y);
If l10 then A1:=1/l1; if l20 then A2:=2/l2;
s:=A1*sin(2*pi*l1/lambda)+A2*sin(2*pi*l2/lambda);
putpixel(i,j,round(s*50)+1);
end;
ReadKey; CloseGraph;
END.
Ответить
OCTAGRAM, 21.02.2012, 21:44
В этой программе round(s*50)+1 может принимать отрицательные значения. Нужно сделать так, чтобы PutPixel вызывался только с положительным номером цвета. По–хорошему, номер цвета от 0 до 15:
http://pascal.toom.su/Black
Ответить
Сергей, 10.06.2012, 19:46
program example;
uses crt,graph;
type
s=record
x,y,vx,vy,m,ax,ay:real;
end;
var
dr,md:integer;
telo1,telo2:s;
t,q,l:real;
begin
clrscr;
with telo1 do
readln(x,y,vx,vy,m);
with telo2 do readln(x,y,vx,vy,m);
{ with telo1 do
begin
x:=10;y:=100;vx:=0.01;vy:=0;m:=6;
end;
with telo2 do
begin
x:=10;y:=300;vx:=0.02;vy:=0;m:=46;
end;}
dr:=detect;initgraph(dr,md,'');
setfillstyle(1,2);setcolor(2);
t:=0;
repeat
l:=sqrt(sqr(telo1.x-telo2.x)+sqr(telo1.y-telo2.y));
telo1.ax:=telo2.m/(l*l*l)*(telo2.x-telo1.x);
telo1.ay:=telo2.m/(l*l*l)*(telo2.y-telo1.y);
telo2.ax:=telo1.m/(l*l*l)*(telo1.x-telo2.x);
telo2.ay:=telo1.m/(l*l*l)*(telo1.y-telo2.y);
with telo1 do
begin
x:=x+vx*t+ax*t*t/2;
y:=y+vy*t+ay*t*t/2;
circle(round(x),round(y),2); floodfill(round(x),round(y),2);
end;
with telo2 do
begin
x:=x+vx*t+ax*t*t/2;
y:=y+vy*t+ay*t*t/2;
circle(round(x),round(y),2); floodfill(round(x),round(y),2);
end;
t:=t+0.001;
until t>1000;
end.
Помогиите. Выводит ошибку проверки диапазона
Ответить
Владимир Денисов, 23.11.2014, 01:55
program aaaaa;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
a,b,c,d,e,x,o,v:real;
begin
readln (a,b,c,d,e);
v:=0;
for x:=0 to 1000 do
begin
if (x<>e) then
begin
o:=(x*x*x*a+x*x*b+x*c+d) / (x-e);
if (o=0) then v:=v+1 ;
end;
end;
writeln (e);
readln;
end.
почему выводит ошибку в строке определения диапазона x:=0????
помогите пожалуйста!!!
Ответить
OCTAGRAM, 23.11.2014, 05:05
for только для перечисляемых типов (целочисленные типы, символьные типы, типы, заданные перечислением значений). Real — вещественный тип. С var x: Integer будет работать.
Ответить

Оставить комментарий

Copyright © 2017 Reformal Media Group. All Rights Reserved. • Используется система обратной связи Реформал.ру