Консультация № 181663
28.12.2010, 22:43
80.00 руб.
28.12.2010, 23:48
0 41 0
Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:
Задача: нужно определить, попадает ли точка в в указанные сектора:

R=33, a=33, b=20.
Программа написана в паскале, компиляция проходит, но не запускается (exited with exitcode=207):
Просьба исправить ошибку, что бы программа работала правильно.
[code h=200]Program Shema;
Uses crt,Graph;
const r=33;
a=33;
b=20;
Var driver,mode:integer;
x0e,y0e,x0k,y0k:real;
dx,yk,ye,yp:real;
k:integer;
x,y:real;
x1,y1,x2,y2:real;
ak,pr:integer;
menu:boolean;
key:char;

procedure vivod;
begin RestoreCRTMode;
clrscr;
pr:=0;
writeln('основные данные: ');
writeln;
writeln('координаты центра окружности: ');
writeln('x0k= ',x0k:3:3,' y0k= ',y0k:3:3);
writeln('координаты центра эллипса : ');
writeln('x0e= ',x0e:3:3,' y0e= ',y0e:3:3);
writeln;
writeln('координаты точки пересечения эллипса и круга: x= ',x1:3:3,'; y= ',y1:3:3);
writeln('координаты пересечения круга и прямой: x= ',x2:3:3,'; y= ',y2:3:3);
writeln;
writeln('радиус окружности r= ',r);
writeln('параметр эллипса a= ',a);
writeln('параметр эллипса  b= ',b);
writeln;
writeln('нажмите любую клавишу для продолжения.');
readkey;
setgraphmode(getgraphmode);
end;

procedure proverka;
begin restorecrtmode;
clrscr;
writeln('‚ввод координат проверяемой точки.');
writeln;
write('‚введите абциссу проверяемой точки: x= ');
readln(x);
write('‚введите ординату проверяемой точки: y= ');
readln(y);
pr:=0;
if (x<(x0k+r))and(x>(x0e-a))and(y<y1)and(y>(y0e-b))
then begin if x>0
then k:=-1
else k:=1;
yk:=k*sqrt(r*r-sqr(x-x0k))+y0k;
ye:=b*k*sqrt(1-(sqr(x-x0e)/(a*a)))+y0e;
yp:=(((x-x1)*(y2-y1))/(x2-x1))+y1;

if (x<0)and(y>0)and(y<yp)and(y<ye)
then pr:=1
else if (x>0)and(y<0)and(y>yk)and(y>ye)
then pr:=2
else pr:=3;

end
else pr:=3;

writeln;
writeln('нажмите любую клавишу для продолжения.');
readkey;
setgraphmode(getgraphmode);
end;

begin clrscr;
x0k:=-34+r;
y0k:=round((-39+sqrt(r*r-sqr(0-x0k)))*1000)/1000;
y0e:=40-b;
x0e:=round((37-a*sqrt(1-sqr(0-y0e)/sqr(b)))*1000)/1000;

dx:=x0e-a;
repeat
begin ye:=b*sqrt(1-sqr(dx-x0e)/sqr(a))+y0e;
yk:=sqrt(r*r-sqr(dx-x0k))+y0k;
dx:=dx+0.0001
end;
until ye<yk;
x1:=dx;
y1:=yk;

x2:=round((sqrt(r*r-sqr(0-y0k))-x0k)*1000)/1000;
y2:=0;

driver:=detect;
initgraph(driver,mode,'graph.tpu');
ak:=1;
menu:=false;
repeat
setcolor(8);
moveto(0,150); lineto(300,150);
moveto(150,0); lineto(150,300);

outtextxy(295,140,'X');
outtextxy(155,5,'Y');

circle((round(x0k)*2+150),((-2)*round(y0k)+150),r*2);
ellipse((round(x0e)*2+150),((-2)*round(y0e)+150),0,360,a*2,b*2);

moveto((round(x1)*2)+157,(round(y1)*(-2))+146);
lineto((round(x2)*2)+139,(round(y2)*(-2))+150);

setfillstyle(1,red);
floodfill(150-2,150-2,8);
setfillstyle(1,1);
floodfill(150+2,150+2,8);

outtextxy(320,50,'на схеме обозначены:');
outtextxy(320,70,'красным область А');
outtextxy(320,90,'Синим область В');
outtextxy(320,110,'белой точкой-проверяемая точка ');

if pr<>0
then putpixel(round(x)*2+150,150-round(y)*2,15);
if pr=1
then outtextxy(220,230,'Проверяемая точка лежит в области А');
if pr=2
then outtextxy(230,230,'Проверяемая точка лежит в области В');
if pr=3
then outtextxy(230,230,'Проверяемая точка не лежит ни в одной области');


if ak=1
then begin setcolor(red);
rectangle(50,350,270,370);
setfillstyle(1,1);
floodfill(52,352,4);
setcolor(7);
end
else begin setcolor(0);
rectangle(50,350,270,370);
setfillstyle(1,0);
floodfill(52,352,0);
setcolor(7);
end;
if ak=2
then begin setcolor(red);
rectangle(50,370,270,390);
setfillstyle(1,1);
floodfill(52,372,4);
setcolor(7);
end
else begin setcolor(0);
rectangle(50,370,270,390);
setfillstyle(1,0);
floodfill(52,372,0);
setcolor(7);
end;
if ak=3
then begin setcolor(red);
rectangle(50,390,270,410);
setfillstyle(1,1);
floodfill(52,392,4);
setcolor(7);
end
else begin setcolor(0);
rectangle(50,390,270,410);
setfillstyle(1,0);
floodfill(52,392,0);
setcolor(7);
end;
Outtextxy(55,355,'‚ввести координаты точки');
Outtextxy(55,375,'основные данные');
Outtextxy(55,395,'‚Выход из программы ');

Outtextxy(25,425,'Клавиша z- сдвиг вниз');
Outtextxy(25,435,'Клавиша а- сдвиг вверх');
Outtextxy(25,445,'Клавиша enter - выбор');

key:=readkey;
if (key='z')and(ak<3)
then ak:=ak+1;
if (ak>1)and(key='a')
then ak:=ak-1;

if (key=#13)and(ak=3)
then menu:=true;
if (key=#13)and(ak=2)
then vivod;
if (key=#13)and(ak=1)
then proverka;

cleardevice;

until menu;

end.
[/code]

Простите за некачественное фото. По X точка пересечения окружности -30, эллипса -18. По Y окружность -34, эллипс -27

Заранее спасибо

Обсуждение

давно
Старший Модератор
31795
6196
29.12.2010, 13:58
общий
Выложил скомпилированыый файл Q181663A.zip (18.0 кб)
Семерку смогу прооверить только вечером.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
29.12.2010, 14:08
общий
Пишет, что несовместимое приложение
давно
Старший Модератор
31795
6196
29.12.2010, 14:13
общий
Проверьте свойства: правая мышь - свойства - посмотрите на одной из закладок должно быть: запускать как:
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
29.12.2010, 14:25
общий
Ещё один вариант, командная строка:

В открытом окне вводите путь к файлам и набираете имя программы.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
29.12.2010, 14:32
общий
BGI Error: Graphics not initialized <use InitGraph>
Неизвестный
29.12.2010, 14:38
общий
В том каталоге, откуда идет запуск нет egavga.BGI.
давно
Старший Модератор
31795
6196
29.12.2010, 14:39
общий
Цитата: Зенченко Константин Николаевич
Строчку initgraph(driver,mode,'graph.tpu'); я слегка порезал и поместил в папку с программой указаные файлы.

Помните этот пост.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
29.12.2010, 14:59
общий
Цитата: Зенченко Константин Николаевич
Строчку initgraph(driver,mode,'graph.tpu');
простите, не совсем понятны
давно
Старший Модератор
31795
6196
29.12.2010, 15:02
общий
Смотрите, должно быть так: initgraph(driver,mode,'');
Это значит, что модули должны быть в папке с программой.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
29.12.2010, 15:06
общий
я скинул в папку BIN egavga.BGI, graph.TPU, скинул в эту же папку скомпилированыый файл Q181663A, прописал в командной строке путь к этому файлу, вылезла та же ошибка
Неизвестный
29.12.2010, 15:09
общий
initgraph(driver,mode,''); где нужно прописывать??
Неизвестный
29.12.2010, 15:40
общий
Есть вторая программа знакомого, она запускается полностью в FPC, выдает график, но вместо букв иероглифы. Пытаюсь запустить свою программу компиляция проходит, но дальше программа не запускается
давно
Старший Модератор
31795
6196
29.12.2010, 16:56
общий
Распакуйте архив с компилятором : _Bp70.zip (2.80 Mб)
В папке BIN запустите TURBO и окройте файл Z.pas, его содержимое должно быть:
Код:
uses crt,Graph;
var
a,b:integer;
{$L egavga.obj}
procedure EgaVgaDriverProc;external;
begin
if RegisterBGIDriver(@EgaVgaDriverProc)<0 then
begin
Writeln('BGI Init Error');
readln;
end
else
begin
InitGraph(a,b,'');
Circle(100,100,50);
readln;
CloseGraph;
end;
end.

Скомпилируйте, что у вас получилось?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
29.12.2010, 17:18
общий
Вылетает программа
давно
Старший Модератор
31795
6196
29.12.2010, 17:24
общий
Цитата: 356254
Вылетает программа

Как она вылетает, драйвер она зарегистрировала или нет(должна вывести:'BGI Init Error').
Если да, то программа, должна перейти в полноэкранный режим, и нарисовать круг.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
29.12.2010, 17:28
общий
программа закрывается сразу после компиляции
давно
Старший Модератор
31795
6196
29.12.2010, 17:33
общий
Стоп, компилятор закрывается?
На диске появился файл файл Z.ЕХЕ?(проверьте опцию Compile - Destination: Memory(нужно клацнуть по этой строке, сменится состояние) - Disk(должно быть))
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
29.12.2010, 17:38
общий
компиляция проходит, но когда хочу запустить Ctrl+F9 программа закрывается
Цитата: Зенченко Константин Николаевич
BGI Init Error'
не пишет
Неизвестный
29.12.2010, 17:41
общий
Цитата: Зенченко Константин Николаевич
Disk(должно быть))
Destination Disk появилось
давно
Старший Модератор
31795
6196
29.12.2010, 17:47
общий
Компилируйте программу и смотрите в папке файл Z.ЕХЕ, запустите его.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
29.12.2010, 17:53
общий
запускаю, она сразу закрывается
давно
Старший Модератор
31795
6196
29.12.2010, 18:01
общий
Пока ничего не понимаю, что у Вас происходит на РС.
Проверю сегодня вечером на WIN-7, все, что сегодня творили.

Навсякий случай напоминаю , сейчас мы пытаемся у Вас только запустить графический режим и больше ничего(к самому Вашему вопросу это касается косвенно).


Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
29.12.2010, 18:06
общий
Я понял , читал, что паскаль не идет на win-7 х64, нужен ABCpascal, но во Free Pascal`е запускается похожая программа
Прикрепленные файлы:
70a59e69b0765a55e8220e7d69534101.jpg
Неизвестный
29.12.2010, 18:07
общий
тут проблема только в иероглифах
давно
Старший Модератор
31795
6196
29.12.2010, 18:21
общий
Дайте АВС-ный варант, посмотрю, что можно сделать сейчас
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
29.12.2010, 18:24
общий
варианта АБС-паскаля нет(, а во FreePascal`e не получится сделать? по сути задачи одинаковы, хотя программа, которая на изображении показана, была написана в TP-7. Мб моя ошибка в самой программе?
давно
Старший Модератор
31795
6196
29.12.2010, 18:48
общий
В командной строке наберите: CHCP
У меня есть один комп, который показывает 850 вместо 866. Там сохранить в болкноте русский шрифт нельзя, ругается на юникод.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
29.12.2010, 18:51
общий
866
давно
Старший Модератор
31795
6196
30.12.2010, 00:39
общий

Win 7x32, max, Core 2 Duo CPU E8400 3.00G


Меня послала вместе с графикой паскаля(нет полного экрана и всё).
Чабака, в ХиПи всё работает.
Нужно искать АВС-ный вариант

Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
30.12.2010, 12:22
общий
блин, что ожидалось, то и получилось(
Форма ответа