Новые сообщения · Правила  
  • Страница 1 из 1
  • 1
Модератор форума: Berestovskiy  
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » Паскаль » I o8 1 (задачи на экзамен)
I o8 1
Дана окружность найти все точки, которые заданы целыми координатами и лежат внутри окружности

Добавлено (12.01.2009, 22:45)
---------------------------------------------
program riu;
uses crt;
var m,n,x,y:integer; r:real; g:char;
begin
clrscr;
writeln('r=');
readln®;
n:=-(trunc®+1);
m:=trunc®;
for x:=n to m do
for y:=n to m do if sqr(x)+sqr(y)<sqr® then
writeln ('(',x,',',y,')') else end.
end.

Добавлено (12.01.2009, 22:46)
---------------------------------------------
если нужно чтоб считало и на окружности в вместо знака < поставить <= cool


Очень мало букв для нормальной подписи
1 | Автор: yamert | 2009-01-12, 22:46   |  Репутация: [ + 1 ]
вообще говоря, надо использовать на форуме "тег", (на самом деле ВВ-код) для публикации текстов программ, иначе выходят такие приколы как в размещенном тексте программы - автоматическая замена однихзначков другими. Интересно, возьмет ли кто программку на вооружение - посмотрим завтра ....
2 | Автор: admin | 2009-01-12, 22:51   |  Репутация: [ + 22 ]
2 | Автор: admin | 2009-01-12, 22:51   |  Репутация: [ + 22 ]
Критика(для начала): вообще говоря окружность задается уравнением (x-a)^2+(y-b)^2=R^2
3 | Автор: admin | 2009-01-12, 22:57   |  Репутация: [ + 22 ]
Мне попалась эта задача.Вот мое решение:
uses crt;
var a,b,r:real;
x,y,q:integer;
begin
writeln('vvedite koordinatu centra i radius');
read(a,b,r);
for x:=round(-r-a) to round(r+a) do
for y:=round(-r-a) to round(r+a) do if sqr(x-a)+sqr(y-b)<sqr® then inc(q);
writeln('kolichesvo tochek ',q);
readln;readln;
end.
4 | Автор: VANGER | 2009-01-13, 15:17   |  Репутация: [ + 6 ]
Решение моей задачи на экзамене.Вот:
uses crt;
var a,b,e,x:real;
begin
clscr;
writeln('vvedite otrezok i to4nost');
readln(a,b,e);
x:=a;
while x<b do
begin
x:=x+e;
writeln(Sin(x):1:5);
end;
readkey;
end.
5 | Автор: Святой | 2009-01-13, 20:21   --------->
5 | Автор: Святой | 2009-01-13, 20:21   --------->
ладно - приходи завтра поговорим. только разберись что такое точность и что такое шаг - жду ответа
6 | Автор: admin | 2009-01-13, 20:25   |  Репутация: [ + 22 ]
хорошо завтра буду.спасибо

Добавлено (13.01.2009, 21:16)
---------------------------------------------
шаг-это значение с которым будет изменятся Х в цикле.
точность-поясняет к какому знаку.Например к сотым или тысячным.
Пояснение решения и порядок написания программы:
1.сначало вводится отрезок и точность.
2.потом иксу присваеваем начало отрезка.
3.делается цикл пока меньше конца отрезка,в котором каждый раз увеличиваем значение Х на заданую точность и выводим значение синуса числа Х.

7 | Автор: Святой | 2009-01-13, 21:16   --------->
Ты сам себе противоречишь: пункт третий: увеличиваешь х на заданную точность. Как это? На шаг - это понятно, а на точность?
8 | Автор: admin | 2009-01-13, 21:34   |  Репутация: [ + 22 ]
Условие: Дано 2 отрезка.Проверить пересекаются ли они.
Решение: Отрезок на плоскости может быть описан параметрической системой уравнений:
X = T * (X2 – X1) + X1:
Y = T * (Y2 – Y1) + Y1.
При T = 0 мы находимся в точке X1, Y1 (начало отрезка), при T = 1 в точке X2, Y2 (конец от-резка). Соответственно, при 0 <= T <= 1 мы находимся внутри отрезка.
Для двух отрезков составляем следующую систему уравнений:
X = T1 * (X12 – X11) + X11; (1)
Y = T1 * (Y12 – Y11) + Y11; (2)
X = T2 * (X22 – X21) + X21; (3)
Y = T2 * (Y22 – Y21) + Y21. (4)
Решая систему данных уравнений необходимо найти значения параметров T1 и T2.
Если решение данной системы T1 и T2 находятся в интервале [0…1], то отрезки пересекаются.
Подставив найденные значения T1 или T2 в исходные уравнения, найдём координаты точки пересечения X и Y. Для решения системы, приравняем 1-ое уравнение к 3-му, а 2-ое к 4-му.
T1 * (X12 – X11) + X11 = T2 * (X22 – X21) + X21;
T1 * (Y12 – Y11) + Y11 = T2 * (Y22 – Y21) + Y21.
Эта же система уравнений в другом виде:
T1 * (X12 – X11) – T2 * (X22 – X21) = X21 – X11;
T1 * (Y12 – Y11) – T2 * (Y22 – Y21) = Y21 – Y11.
Представляет собой систему двух линейных уравнений 1-го порядка. Решим её методом Краме-ра. Тогда:

D = (X12 – X11) * (Y21 – Y22) – (X21 – X22) * (Y12 – Y11);


DT1 = (X21 – X11) * (Y21 – Y22) – (X21 – X22) * (Y21 – Y11);
DT2 = (X12 – X11) * (Y21 – Y11) – (X21 – X11) * (Y12 – Y11);
Если D = 0, то отрезки параллельны, либо полностью или частично совпадают. Иначе:
T1 = DT1 / D; T2 = DT2 / D.
Программа в Паскале:
Числовые значения координат при вводе разделяются пробелом.
Program Prg;
Uses Crt;
Var X11, Y11, X12, Y12 : Real;
Var X21, Y21, X22, Y22 : Real;
Var D, D1, D2, T1, T2 : Real;
Var X, Y : Real;
Begin
ClrScr;
Write('Введите X11 Y11 X12 Y12: ');
ReadLn(X11, Y11, X12, Y12);
Write('Введите X21 Y21 X22 Y22: ');
ReadLn(X21, Y21, X22, Y22);
D := (X12 - X11) * (Y21 - Y22) - (X21 - X22) * (Y12 - Y11);
If D = 0 Then
WriteLn('Отрезки параллельны, либо полностью или частично совпадают.')
Else
Begin
D1 := (X21 - X11) * (Y21 - Y22) - (X21 - X22) * (Y21 - Y11);
D2 := (X12 - X11) * (Y21 - Y11) - (X21 - X11) * (Y12 - Y11);
T1 := D1 / D;
T2 := D2 / D;
If (T1 >= 0) And (T1 <= 1) And (T2 >= 0) And (T2 <= 1) Then
Begin
X := T1 * (X12 - X11) + X11;
Y := T1 * (Y12 - Y11) + Y11;
WriteLn('Отрезки пересекаются в точке X Y: ',X:6:3,' ',Y:6:3)
End
End;
ReadLn
End.

9 | Автор: Tatka | 2009-01-19, 10:55   |  Репутация: [ + 1 ]
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » Паскаль » I o8 1 (задачи на экзамен)
  • Страница 1 из 1
  • 1
Поиск: