![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Nemesis-201 |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Написал код, но программа явно работает некорректно: выдаёт неверный четырёхугольник
Пожалуйста помогите найти ошибку Код Program nktvch; type tk = record x:integer; y:integer; end; var tx1, tx2, tx3, tx4, ty1, ty2, ty3, ty4: integer; m: array[1..100] of tk; s: array [1..4] of integer; i,j,k,l,a,n,q,max:integer; begin writeln('Введите кол-во точек'); repeat readln(n); if (n<4) or (n>20) then writeln('Недопустимое кол-во'); until (n>=4) and (n<=20); for i:=1 to n do begin writeln('Введите ',i,' точку'); write (' X[',i,']= '); readln(m[i].x); write (' Y[',i,']= '); readln(m[i].y) end; max:=0; for i:=1 to n do begin for j:=1 to n do begin for k:=1 to n do begin for l:=1 to n do begin if (i<>j) and (i<>k) and (i<>l) and (j<>k) and (j<>l) and (k<>l) then begin q:=0; for a:=1 to n do begin S[1]:=(m[a].x-m[i].x)*(m[j].y-m[i].y)-(m[a].y-m[i].y)*(m[j].x-m[i].x); S[2]:=(m[a].x-m[j].x)*(m[k].y-m[j].y)-(m[a].y-m[j].y)*(m[k].x-m[j].x); S[3]:=(m[a].x-m[k].x)*(m[l].y-m[k].y)-(m[a].y-m[k].y)*(m[l].x-m[k].x); S[4]:=(m[a].x-m[l].x)*(m[i].y-m[l].y)-(m[a].y-m[l].y)*(m[i].x-m[l].x); if (s[1]*s[2]*s[3]*s[4])>0 then q:=q+1; end; if q>max then begin max:=q; tx1:=m[i].x; ty1:=m[i].y; tx2:=m[j].x; ty2:=m[j].y; tx3:=m[k].x; ty3:=m[k].y; tx4:=m[l].x; ty4:=m[l].y; end; end; end; end; end; end; writeln ('Четырехугольник с наибольшем кол-вом точек(',max,'):'); writeln (tx1,',',ty1); writeln (tx2,',',ty2); writeln (tx3,',',ty3); writeln (tx4,',',ty4); readln; end. Сообщение отредактировано: Nemesis-201 - 24.12.2007 20:55 |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:53 |