Вопрос № 103940: Помогите, пожалуйста написать программу в PASCAL:
Дан теугогльник, полученный припересечении прямых a1x+b1y+c1=0,
a2x+b2y+c2=0,
a3x+b3y+c3=0
вершины треугольника A(x1,y1)
B (x2,y2)
C (x3,y3)
Надо определить находится ли то...Вопрос № 103944: Здравствуйте! Помогите написать программу: Для одномерного массива длиной N целых чисел составить двухмерный и трёхмерный массив. Наибольшие значение индексов каждого из массивов должны быть равны. Сообщить индексы свободных мест....Вопрос № 103999: Уважаемые эксперты! Помогите, пожалуйста, решить задачи:
1. Дано целое число. Получить из него новое, цифры которого идут в обратном порядке.
Определить, какое из чисел больше: исходное или полученное.
2. Дано целое число. Если количество...
Вопрос № 103.940
Помогите, пожалуйста написать программу в PASCAL:
Дан теугогльник, полученный припересечении прямых a1x+b1y+c1=0,
a2x+b2y+c2=0,
a3x+b3y+c3=0
вершины треугольника A(x1,y1)
B (x2,y2)
C (x3,y3)
Надо определить находится ли точка D (x4,y4) внутри треугольника
Все координаты- натуральные числа.
Отправлен: 01.10.2007, 18:34
Вопрос задала: Byzly (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Verena
Здравствуйте, Byzly!
Из вашего условия не очень понятно, даны ли вершины треугольника в виде точек, или их надо искать, исходя из данных прямых. Я написала код для заданных точек, но, если их необходимо найти, это несложно сделать - просто выделить формулы для x и y, приравнивая прямые, и вычислить координаты программно.
Проверить, находится ли точка внутри треугольника, заданного своими вершинами, можно используя следующую формулу:
r = (y - y0) (x1 - x0) - (x - x0) (y1 - y0) , где x, y - координаты заданой точки, а x0, y0, x1, y1 - координаты двух соседних вершин треугольника (например, A(x1,y1) и B (x2,y2) в Вашем примере). Если точка лежит внутри треугольника, r < 0 для всех сторон. Если хоть для одной стороны r < 0, точка лежит вне треугольника. Если r=0, точка лежит на стороне. В случае треугольника это довольно просто, но можно использовать и для любого полигона. Реализацию смотрите в приложении.
Удачи!
Приложение:
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 01.10.2007, 20:33
Вопрос № 103.944
Здравствуйте! Помогите написать программу: Для одномерного массива длиной N целых чисел составить двухмерный и трёхмерный массив. Наибольшие значение индексов каждого из массивов должны быть равны. Сообщить индексы свободных мест.
Отвечает: Витек
Здравствуйте, Alex_timonov!
кажется все правильно, единственное используются статичные массивы, нет времени написать и проверить с динамичными. послезавтра буду посвободней, пиши если надо с динамичными, попробую помочь
const nm=100;nm3=20;
var
mas1:array[1..nm] of integer;
mas2:array[1..nm,1..nm] of integer;
mas3:array[1..nm3,1..nm3,1..nm3] of integer;
k,i,j,n:integer;
n3,n2,s:integer;
r:real;
begin
write('Укажите N');
readln(n);
writeln('Заполните массив:');
for i:=1 to n do readln(mas1[i]);
r:=(exp((1/2)*ln(n)));
n2:=round(r);
r:=(exp((1/3)*ln(n)));
n3:=round(r);
if n2*n2<n then inc(n2);
if n3*n3*n3<n then inc(n3);
write('Двумерный массив ',n2,' на ',n2);
s:=0;
for i:=1 to n2 do
for j:=1 to n2 do
begin
if n2*(i-1)+j<=n then mas2[i,j]:=mas1[i*(j-1)+j]
else writeln('Элемент свободен - ',i,':',j)
end;
write('Трехмерный массив ',n3,', ',n3,' на ',n3);
for i:=1 to n2 do
for j:=1 to n2 do
for k:=1 to n2 do
begin
if (n3*n3*(i-1))+n3*(j-1)+k<=n then mas3[i,j,k]:=mas1[i*(j-1)+j]
else writeln('Элемент свободен - ',i, ':', j,':', k)
end;
readln;
end.
--------- ohne fleis, keine preis
Ответ отправил: Витек (статус: 3-ий класс)
Ответ отправлен: 03.10.2007, 13:24
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Alex_timonov!
Смотрите приложение.
Программа формирует N-мерные массивы при выводе.
Ввод одномерного массива продолжается до нулевого элемента.
Удачи!
Приложение:
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Уважаемые эксперты! Помогите, пожалуйста, решить задачи:
1. Дано целое число. Получить из него новое, цифры которого идут в обратном порядке.
Определить, какое из чисел больше: исходное или полученное.
2. Дано целое число. Если количество цифр его десятичной записи четно, добавить в средину нуль, если нечетно, удалить среднюю цифру. (Пример: 3218 - 32018, 47369 - 4769).
3. Вводится последовательность чисел, признак окончания - число, оканчивающееся нулем. Подсчитать количество пар взаимно простых чисел.
4. Дана обыкновенная дробь (числитель и знаменатель вводятся как целые числа). Сократить ее, представив результат в виде 24/15 = 8/5.
Если это возможно, то в наиболее простом варианте и с комментариями. Заранее огромное спасибо! Swallow.
Отправлен: 02.10.2007, 08:03
Вопрос задала: Ласточка (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Delph
Здравствуйте, Ласточка!
Предоставляю Вам решение первой и второй задач (другим экспертам кусочек хлеба тоже не помешает) - смотрите приложение.
Приложение:
--------- Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.
Ответ отправил: Delph (статус: 10-ый класс)
Ответ отправлен: 02.10.2007, 09:00 Оценка за ответ: 5 Комментарий оценки: Большое спасибо за помощь, Delph!
Отвечает: Andreev Oleg
Здравствуйте, Ласточка!
Высылаю решения двух задач:
program rusfaq103999;
var ch,ch2:longint; st,st2:string; i,cd:integer;
begin
st2:='';
readln(ch);
str(ch,st);{Preobrazuem v stroku}
for i:=length(st) downto 1 do
st2:=st2+st[i];
val(st2,ch2,cd);
write('Vtoroe chislo:',ch2);
if ch2>ch then writeln(' bolshe pervogo')
else if ch>ch2 then writeln(' menshe pervogo') else writeln(' ravno pervomy')
end.
program rusfaq103999;
var ch:longint; st:string; cd :integer;
begin
readln(ch);
str(ch,st);{Preobrazuem v stroku}
if length(st) mod 2 =0 (*deystvuem v zavisimosti ot chetnosti dliny striki*)
then st:=copy(st,1,(length(st) div 2)) +'0'+copy(st,length(st)div 2 +1,length(st))
else st:=copy(st,1,(length(st) div 2)) +copy(st,length(st)div 2 +2,length(st));
val(st,ch,cd);
writeln(ch)
end.
Ответ отправил: Andreev Oleg (статус: Заблокирован)
Ответ отправлен: 02.10.2007, 09:04 Оценка за ответ: 5 Комментарий оценки: Большое спасибо за решения, Andreev Oleg!
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Ласточка!
В приложении 3-я и 4-я задачи.
Удачи!
Приложение:
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Специалист)
Ответ отправлен: 02.10.2007, 14:46 Оценка за ответ: 5 Комментарий оценки: Большое спасибо вам за решения, Константин Николаевич!
Отвечает: Артём1983
Здравствуйте, Ласточка!
Я решил только первые две задачи.
Код в приложении.
Приложение:
Ответ отправил: Артём1983 (статус: 3-ий класс)
Ответ отправлен: 03.10.2007, 20:33 Оценка за ответ: 5 Комментарий оценки: Большое спасибо за помощь, Артём1983!