Помогите написать программу
Модератор: Модераторы
Помогите написать программу
Задан n треугольников координатами своих вершин на плоскости. Напечатать номер треугольника с наибольшей площадью (произведения катета). Вычисление сторон и площадей, организовать с помощью подпрограмм. PS. Определить гипотенузу как самую длинную сторону площади треугольника, как определить произведения 2 сторон катетов
sathal
1. Для треугольников, заданных "координатами своих вершин на плоскости", нет таких понятий, как "катет" и "гипотенуза". Это - характеристики только прямоугольных треугольников, а их задавать "координатами вершин на плоскости" крайне некорректно, ввиду неизбежных искажений геометрии из-за исходных данных.
2. "Напечатать номер треугольника с наибольшей площадью (произведения катета)" - Задача некорректна, поскольку площадь треугольника в общем смысле не есть "произвдениея катетов". Более того, площадь прямоугольного треугольника также не есть "произведение катетов".
3. "Определить гипотенузу как самую длинную сторону площади треугольника" - Какая сторона вообще может быть у площади, вы вообще о чем?
Это ваша формулировка задачи? Или ее так вам задали? Если второе - мне искрене жаль вас за безграмотного преподавателя.
В любом случае, пока не поймете, как это решается вручную - нечего лезть в программирование алгоритма.
1. Для треугольников, заданных "координатами своих вершин на плоскости", нет таких понятий, как "катет" и "гипотенуза". Это - характеристики только прямоугольных треугольников, а их задавать "координатами вершин на плоскости" крайне некорректно, ввиду неизбежных искажений геометрии из-за исходных данных.
2. "Напечатать номер треугольника с наибольшей площадью (произведения катета)" - Задача некорректна, поскольку площадь треугольника в общем смысле не есть "произвдениея катетов". Более того, площадь прямоугольного треугольника также не есть "произведение катетов".
3. "Определить гипотенузу как самую длинную сторону площади треугольника" - Какая сторона вообще может быть у площади, вы вообще о чем?
Это ваша формулировка задачи? Или ее так вам задали? Если второе - мне искрене жаль вас за безграмотного преподавателя.
В любом случае, пока не поймете, как это решается вручную - нечего лезть в программирование алгоритма.
-
NTFS
- постоялец
- Сообщения: 388
- Зарегистрирован: 05.11.2007 13:57:50
- Откуда: Краснодар
- Контактная информация:
300 руб, работа в течении 2-х часов после подтверждения готовности оплаты заказа (здесь или в личное сообщение). Бинарник высылаю сразу, исходники - после оплаты. Оплата через Qiwi, Yandex или картой, на крайний случай - перевод на номер телефона.
В задании нет сортировки треугольников по площади периметра?
SSerge писал(а):sathal
1. Для треугольников, заданных "координатами своих вершин на плоскости", нет таких понятий, как "катет" и "гипотенуза". Это - характеристики только прямоугольных треугольников, а их задавать "координатами вершин на плоскости" крайне некорректно, ввиду неизбежных искажений геометрии из-за исходных данных.
2. "Напечатать номер треугольника с наибольшей площадью (произведения катета)" - Задача некорректна, поскольку площадь треугольника в общем смысле не есть "произвдениея катетов". Более того, площадь прямоугольного треугольника также не есть "произведение катетов".
3. "Определить гипотенузу как самую длинную сторону площади треугольника" - Какая сторона вообще может быть у площади, вы вообще о чем?
Это ваша формулировка задачи? Или ее так вам задали? Если второе - мне искрене жаль вас за безграмотного преподавателя.
В любом случае, пока не поймете, как это решается вручную - нечего лезть в программирование алгоритма.
да я с вами согласен не правильно задачу написал
"Заданно n треугольников с координатами своих вершин на плоскости. Напечатать номер треугольника с наибольшей площадью. Вычисления сторон и площадей организовать с помощью процедур и функций, воспользовавшись теоремой пифагора и формулой герона."
написал программу
program Project1;
procedure dlina(x1,x2,y1,y2:integer; var d:real);
begin
d:=sqrt(sqr(x1-x2)+sqr(y1-y2));
end;
function plosh (a,b,c:real):real;
var p,s:real;
begin
s:=0;
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
plosh:=s;
end;
var xa,ya,xb,yb,xc,yc:integer;
a,b,c:real;
begin
writeln('Vvedite koordinaty tochki a');
readln(xa,ya);
writeln('Vvedite koordinaty tochki b');
readln(xb,yb);
writeln('Vvedite koordinaty tochki c');
readln(xc,yc);
dlina(xa,xb,ya,yb,a);
dlina(xb,xc,yb,yc,b);
dlina(xc,xa,yc,ya,c);
writeln(plosh(a,b,c));
readln;
end.
но не могу сделать цикл если надо будет вводить несколько треугольников
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
sathal, как бы нужен будет массив для хранения координат.
Лекс Айрин писал(а):sathal, как бы нужен будет массив для хранения координат.
мне кажется все намного проще чем вы думаете, не уверен но кажется должно получится так
Программа Project1;
процедура dlina (x1, x2, y1, y2: целое; вар г: реальный);
начинают
д: = SQRT (SQR (x1-x2) + SQR (Y1-Y2));
конец;
функция plosh (а, б, в: реальный): реальная;
вар P, S: реальная;
начать
S: = 0;
р: = (A + B + C) / 2;
ы: = КОРЕНЬ (р * (годовых) * (Pb) * (шт));
plosh: = S;
конец;
вар ха, уа, XB, YB, XC, YC, я, п, J: целое;
, б, в, с, не более: в режиме реального;
начать
WriteLn ('Vvedite kolichestvo treugolnikov ');
ReadLn (п);
макс: = 0;
для I: = 1 до п у
начать
WriteLn ('Vvedite koordinaty vershin', я, '-ого treugolnika');
WriteLn ('Vvedite koordinaty tochki') ;
ReadLn (ха, уа);
WriteLn ('Vvedite koordinaty tochki б');
ReadLn (ВБ, г.р.);
WriteLn ('Vvedite koordinaty tochki с');
ReadLn (хс, ус);
dlina (ха, XB, я, г.р.,);
dlina (ВБ, хс, г.р., ус, б);
dlina (хс, ха, ус, я, в);
WriteLn (',', б "," в);
WriteLn (plosh ( а, б, в));
с: = plosh (а, б, в);
если с> макс затем
начать
макс: = S;
J: = я;
конец;
конец;
WriteLn ('Naibolshuyu Площадь imeyet', J, '-й Треугольник');
ReadLn;
конец.
- Little_Roo
- энтузиаст
- Сообщения: 639
- Зарегистрирован: 27.02.2009 18:56:36
- Откуда: Санкт-Петербург
sathal писал(а):Программа Project1;
процедура dlina (x1, x2, y1, y2: целое; вар г: реальный);
начинают
д: = SQRT (SQR (x1-x2) + SQR (Y1-Y2));
конец;
Это на каком языке??? На фарджунском, или на ламерском?
Так ведь известно еще с фидошных времен, что LAMERZZZ MUST DIE !
И откройте для себя тег code
Little_Roo писал(а):sathal писал(а):Программа Project1;
процедура dlina (x1, x2, y1, y2: целое; вар г: реальный);
начинают
д: = SQRT (SQR (x1-x2) + SQR (Y1-Y2));
конец;
Это на каком языке??? На фарджунском, или на ламерском?![]()
![]()
![]()
Так ведь известно еще с фидошных времен, что LAMERZZZ MUST DIE !![]()
И откройте для себя тег code
Извините гугл хром стоит на авто перевод текста стоит вот видимо и получилась такая белеберда. А аот сама программа
program Project1; procedure dlina(x1,x2,y1,y2:integer; var d:real); begin d:=sqrt(sqr(x1-x2)+sqr(y1-y2)); end; function plosh (a,b,c:real):real; var p,s:real; begin s:=0; p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); plosh:=s; end; var xa,ya,xb,yb,xc,yc,i,n,j:integer; a,b,c,s,max:real; begin writeln('Vvedite kolichestvo treugolnikov'); readln(n); max:=0; for i:=1 to n do begin writeln('Vvedite koordinaty vershin ',i,'-ogo treugolnika'); writeln('Vvedite koordinaty tochki a'); readln(xa,ya); writeln('Vvedite koordinaty tochki b'); readln(xb,yb); writeln('Vvedite koordinaty tochki c'); readln(xc,yc); dlina(xa,xb,ya,yb,a); dlina(xb,xc,yb,yc,b); dlina(xc,xa,yc,ya,c); writeln(a,' ',b,' ',c); writeln(plosh(a,b,c)); s:=plosh(a,b,c); if s>max then begin max:=s; j:=i; end; end; writeln('Naibolshuyu ploshchad imeyet ',j,'-y treugolnik'); readln; end.
Добавлено спустя 1 минуту 7 секунд:
Хотя с андроида тоже как то не получилось адекватно написать
- Little_Roo
- энтузиаст
- Сообщения: 639
- Зарегистрирован: 27.02.2009 18:56:36
- Откуда: Санкт-Петербург
sathal писал(а):rogram Project1; procedure dlina(x1,x2,y1,y2:integer; var d:real); begin d:=sqrt(sqr(x1-x2)+sqr(y1-y2)); end; function plosh (a,b,c:real):real; var p,s:real; begin s:=0; p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); plosh:=s; end; var xa,ya,xb,yb,xc,yc,i,n,j:integer; a,b,c,s,max:real; begin writeln('Vvedite kolichestvo treugolnikov'); readln(n); max:=0; for i:=1 to n do begin writeln('Vvedite koordinaty vershin ',i,'-ogo treugolnika'); writeln('Vvedite koordinaty tochki a'); readln(xa,ya); writeln('Vvedite koordinaty tochki b'); readln(xb,yb); writeln('Vvedite koordinaty tochki c'); readln(xc,yc); dlina(xa,xb,ya,yb,a); dlina(xb,xc,yb,yc,b); dlina(xc,xa,yc,ya,c); writeln(a,' ',b,' ',c); writeln(plosh(a,b,c)); s:=plosh(a,b,c); if s>max then begin max:=s; j:=i; end; end; writeln('Naibolshuyu ploshchad imeyet ',j,'-y treugolnik'); readln; end.
Смотрите ВЫШЕ - оформляйте свои исходники в теги CODE
На опобликованное смотреть, увы, "...желудочный сок не вырабатывается..." (с)моя жена
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
sathal писал(а):мне кажется все намного проще чем вы думаете,
Можно, конечно, и сравнивать сразу же при вводе, но правильнее все же было ввести все данные, а потом их обрабатывать.Это в учебном примере еще можно разобраться, а в реальном, ткогда обработка сложная...
А зациклить пример легко. И не одним способом. но, сам подфорум намекает, что нет смысла дергаться даром.
