Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2011, 21:37   #1
_Иван_
 
Регистрация: 09.04.2011
Сообщений: 6
Восклицание Необходима консультация!Почему появляется ошибка о плавающей запятой?

{Даны n окружностей на плоскости, заданных координатами своих центров и радиусами. Найти все окружности, в которые вложена самая маленькая окружность. Использовать ЗАПИСИ. Исходные данные получить с помощью генератора случайных чисел. Решение проиллюстрировать графически. Все координаты вещественные!}

program vosemnad;
uses Graph,crt;
const
grScreen_Color=8;{fonovii cvet}
isk_Color=15;{cvet iskomih okr}
ost_Color=14;{cvet ostalnih okr}
grX0=100;{x-koordinata levogo kraya risunka}
grY0=400;{y-koordinata nishnego kraya risunka}
grLx=300;{shirana risunka}
grLy=300;{visota risunka}
nmax=20;
type Okr = record
x0,y0,r :integer;

end;
var grDriver,grMode,n,i,x,y,r,min:integ er;
a :array [1..nmax] of okr;
begin
{pereidem v grafichesky reshim}
grDriver:=Detect;
InitGraph(grDriver,grMode,'');
if GraphResult<>grOK Then begin
{ne udalos inicializirovat grafiuku}
writeln('grafich dribver ne naiden');
halt(0);
end;
{zakrasim ekran v fonovii cvet}
SetFillStyle(SolidFill,grScreen_Col or);
bar(0,0,GetMaxX,GetMaxY);
{proizvolno prisvoim kol-vu okr-tei nekotoroe znachenie}
Randomize;
n:=0; while n<2 do n:=round(Random(nmax));{dlia resheniia dolshno bit'
ne menee 2 okr-tei}
for i:=1 to n do
begin
a[i].x0:=(random(440)+100);{640-200 radius s kashdoi storoni}
a[i].y0:=(random(280)+100);{280=480-200}
a[i].r:=random(100);
end;
min:=1;{nomer samoi maloi okr}
for i:=1 to n-1 do if (a[i].r<a[i+1].r) and (a[i].r<min) then min:=i;
for i:=1 to n-1 do{nahoshu nomera iskomih okrushnostei}
begin
if (a[min].r+a[i].r)>(sqrt(sqr(a[i].x0-a[min].x0)+sqr(a[i].y0-a[min].y0)))

//!!!!ОШИБКА ЗДЕСЬ!!ЕСЛИ сумма радиусов 2-х окружностей меньше растояния между центрами окружностей то
//рисуем окружность одного цвета ,а в противном случае-другого...

then
begin
setcolor(isk_Color);
x:=a[i].x0;
y:=a[i].y0;
r:=a[i].r;
circle(x,y,r);
end
else
begin
setcolor(Ost_Color);
x:=a[i].x0;
y:=a[i].y0;
r:=a[i].r;
circle(x,y,r);
end;
end;
readkey;
Closegraph;
end.

Последний раз редактировалось _Иван_; 09.04.2011 в 21:46.
_Иван_ вне форума Ответить с цитированием
Старый 09.04.2011, 21:47   #2
_Иван_
 
Регистрация: 09.04.2011
Сообщений: 6
По умолчанию

___________________________________ ___________________________________ _________________

Последний раз редактировалось _Иван_; 09.04.2011 в 23:35.
_Иван_ вне форума Ответить с цитированием
Старый 09.04.2011, 22:00   #3
_Иван_
 
Регистрация: 09.04.2011
Сообщений: 6
По умолчанию

Так, сейчас обнаружил что в задании координаты нужно задавать вещественные, а у меня целочисленный тип...А если поменять то возможно появятся другие недоработки, что еще нужно изменить чтобы ошибок не появлялось?
П.С.Паскаль у меня сейчас отсутствует, поэтому задачу смогу реализовать только в понедельник, если есть возможность, то помогите устранить ошибки.
_Иван_ вне форума Ответить с цитированием
Старый 09.04.2011, 22:12   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
сейчас обнаружил что в задании координаты нужно задавать вещественные, а у меня целочисленный тип...А если поменять то возможно появятся другие недоработки, что еще нужно изменить чтобы ошибок не появлялось
Масштабировать так как вся графика в паскале построена на целых числах)
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 09.04.2011, 23:37   #5
_Иван_
 
Регистрация: 09.04.2011
Сообщений: 6
По умолчанию

Это мой первый опыт работы с графикой. Как выполняется масштабирование?
Может быть ссылка есть?...
_Иван_ вне форума Ответить с цитированием
Старый 09.04.2011, 23:58   #6
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Как выполняется масштабирование?
При выводе умножайте размеры и координаты на определенный коэффициент.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
число с плавающей запятой. kotopezzz Помощь студентам 1 25.02.2011 13:11
Числа с плавающей запятой Impuls1989 Помощь студентам 0 03.02.2011 21:03
Увеличение разрядности чисел с плавающей запятой Dmitry_B Общие вопросы C/C++ 5 02.08.2010 22:28
Почему при исключении showmessage() их цикла появляется ошибка? (Delphi) marina15056 Помощь студентам 4 25.06.2009 14:30
у меня ошибка с плавающей запятой... Bublik Помощь студентам 3 10.01.2009 23:20