ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #41  
Старый 09.12.2008, 00:21
Аватар для login999
login999
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме:
4512757

Репутация: 973


По умолчанию

Код:
#! usr/bin/env python
#! -*- coding: utf-8 -*-
x11=3
x21=7
x31=12
x12=5
x22=7
x32=8
y11=1
y21=9
y31=1
y12=3
y22=5
y32=3

try:
	x11=float(x11)
	x21=float(x21)
	x31=float(x31)
	x12=float(x12)
	x22=float(x22)
	x32=float(x32)
	y11=float(y11)
	y21=float(y21)
	y31=float(y31)
	y12=float(y12)
	y22=float(y22)
	y32=float(y32)
except ValueError:
	print "Error!"

## проверка существования треугольников
A1_B1=((x21-x11)**2+(y21-y11)**2)**0.5 ## нахождение длины AB в первом треугольнике
B1_C1=((x31-x21)**2+(y31-y21)**2)**0.5 ## нахождение длины BC в первом треугольнике
A1_C1=((x31-x11)**2+(y31-y11)**2)**0.5 ## нахождение длины AC в первом треугольнике

A2_B2=((x22-x12)**2+(y22-y12)**2)**0.5 ## нахождение длины AB вo втором треугольнике
B2_C2=((x32-x22)**2+(y32-y22)**2)**0.5 ## нахождение длины BC во втором треугольнике
A2_C2=((x32-x12)**2+(y32-y12)**2)**0.5 ## нахождение длины AC во втором треугольнике

if A1_B1+B1_C1<=A1_C1 or A1_B1+A1_C1<=B1_C1 or A1_C1+B1_C1<=A1_B1:
	print "Error"
elif A2_B2+B2_C2<=A2_C2 or A2_B2+A2_C2<=B2_C2 or A2_C2+B2_C2<=A2_B2:
	print "Error"
else:
	a=0

## построение отрезков от вершины второго к вершинам первого
A2_A1=((x11-x12)**2+(y11-y12)**2)**0.5
A2_B1=((x21-x12)**2+(y21-y12)**2)**0.5
A2_C1=((x31-x12)**2+(y31-y12)**2)**0.5

## вычисление площадей треугольников
S_A1_B1_C1=(((A1_B1+B1_C1+A1_C1)/2)*(((A1_B1+B1_C1+A1_C1)/2)-A1_B1)*(((A1_B1+B1_C1+A1_C1)/2)-B1_C1)*(((A1_B1+B1_C1+A1_C1)/2)-A1_C1))**0.5 ## площадь первого треугольника по формуле Герона
S_A2_B2_C2=(((A2_B2+B2_C2+A2_C2)/2)*(((A2_B2+B2_C2+A2_C2)/2)-A2_B2)*(((A2_B2+B2_C2+A2_C2)/2)-B2_C2)*(((A2_B2+B2_C2+A2_C2)/2)-A2_C2))**0.5 ## площадь второго треугольника по формуле Герона

S_A2_A1_C1=(((A2_A1+A1_C1+A2_C1)/2)*(((A2_A1+A1_C1+A2_C1)/2)-A2_A1)*(((A2_A1+A1_C1+A2_C1)/2)-A1_C1)*(((A2_A1+A1_C1+A2_C1)/2)-A2_C1))**0.5 ## площадь треугольника A2_A1_C1 по формуле Герона
S_A2_A1_B1=(((A2_A1+A1_B1+A2_B1)/2)*(((A2_A1+A1_B1+A2_B1)/2)-A2_A1)*(((A2_A1+A1_B1+A2_B1)/2)-A1_B1)*(((A2_A1+A1_B1+A2_B1)/2)-A2_B1))**0.5 ## площадь треугольника A2_A1_B1 по формуле Герона
S_A2_C1_B1=(((A2_C1+B1_C1+A2_B1)/2)*(((A2_C1+B1_C1+A2_B1)/2)-A2_C1)*(((A2_C1+B1_C1+A2_B1)/2)-B1_C1)*(((A2_C1+B1_C1+A2_B1)/2)-A2_B1))**0.5 ## площадь треугольника A2_C1_B1 по формуле Герона

## построение отрезков от вершины первого к вершинам второго
A2_A1=((x11-x12)**2+(y11-y12)**2)**0.5
A1_B2=((x11-x22)**2+(y11-y22)**2)**0.5
A1_C2=((x11-x32)**2+(y11-y32)**2)**0.5

## вычисление площадей треугольников
S_A1_A2_B2=(((A2_A1+A1_B2+A2_B2)/2)*(((A2_A1+A1_B2+A2_B2)/2)-A2_A1)*(((A2_A1+A1_B2+A2_B2)/2)-A1_B2)*(((A2_A1+A1_B2+A2_B2)/2)-A2_B2))**0.5 ## площадь треугольника A2_A1_B2 по формуле Герона
S_A1_B2_C2=(((A1_B2+A1_C2+B2_C2)/2)*(((A1_B2+A1_C2+B2_C2)/2)-A1_B2)*(((A1_B2+A1_C2+B2_C2)/2)-A1_C2)*(((A1_B2+A1_C2+B2_C2)/2)-B2_C2))**0.5 ## площадь треугольника A1_B2_C2 по формуле Герона
S_A1_A2_C2=(((A2_A1+A1_C2+A2_C2)/2)*(((A2_A1+A1_C2+A2_C2)/2)-A2_A1)*(((A2_A1+A1_C2+A2_C2)/2)-A1_C2)*(((A2_A1+A1_C2+A2_C2)/2)-A2_C2))**0.5 ## площадь треугольника A1_A2_C2 по формуле Герона

## сравнение площадей треугольников
if S_A1_B1_C1==S_A2_A1_C1+S_A2_A1_B1+S_A2_C1_B1:
    print "Second triangle in first"
elif S_A2_B2_C2==S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2:
    print "First triangle in second"
else:
    print "%f | %f" %(S_A2_B2_C2, S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2)
оТработал нормально, вышло 3.000000 | 9.000000 блин, в упор не вижу проблемы у себя, ткни носом плиз, цикл то работает норм, проверял то уже, где проблема ?
 
Ответить с цитированием

  #42  
Старый 09.12.2008, 00:21
Аватар для VIP
VIP
Участник форума
Регистрация: 29.12.2004
Сообщений: 105
Провел на форуме:
89596

Репутация: 21
Отправить сообщение для VIP с помощью ICQ
По умолчанию

Цитата:
Сообщение от login999  
Короче, читаю твой цикл, как его вижу я :
Код:
if S_A1_B1_C1==S_A2_A1_C1+S_A2_A1_B1+S_A2_C1_B1:
    print "Second triangle in first"
elif S_A2_B2_C2==S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2:
    print "First triangle in second"
else:
    print "%f | %f" %(S_A2_B2_C2, S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2)
ЕСЛИ
S_A1_B1_C1==S_A2_A1_C1+S_A2_A1_B1+S_A2_C1_B1, то : напечатать "Second triangle in first"
ЕЩЕ ЕСЛИ
S_A2_B2_C2==S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2, то : напечатать "First triangle in second"
ЕЩЕ (во всех остальных случаях)
НАПЕЧАТАТЬ "%f | %f" %(S_A2_B2_C2, S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2) - где здесь сравнение ?
в первых двух ветках сравнение есть, в третьей же ветке сравнения нету, есть только задание вывода на печать, цикл отрабатывает все так как ему указано, скажи, что должна делать третья ветка ?
Дело в том, что если убрать третью ветку, то прога вообще ничего не выдаёт (то есть, она выполняет первое сравнение - оно у неё почему-то не выполняется, выполняет второе сравнение - оно не выполняется (это правильно, так как там и должны получаться разные числа)), а затем она тупо встаёт и ничего не делает... Последнюю ветку я сделал, для того, чтобы понять почему она встаёт и заодно просмотреть значения переменных во время выполнения проги (это пока просто для тестирования сделано).
 
Ответить с цитированием

  #43  
Старый 09.12.2008, 00:27
Аватар для login999
login999
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме:
4512757

Репутация: 973


По умолчанию

По заданным тобой данным выполняется только 3 условие, все она нормально работает, я в ней в упор не вижу того что видишь ты, хз короче
 
Ответить с цитированием

  #44  
Старый 09.12.2008, 00:32
Аватар для VIP
VIP
Участник форума
Регистрация: 29.12.2004
Сообщений: 105
Провел на форуме:
89596

Репутация: 21
Отправить сообщение для VIP с помощью ICQ
По умолчанию

Цитата:
Сообщение от login999  
По заданным тобой данным выполняется только 3 условие, все она нормально работает, я в ней в упор не вижу того что видишь ты, хз короче
Код:
#! usr/bin/env python
#! -*- coding: utf-8 -*-
x11=3
x21=7
x31=12
x12=5
x22=7
x32=8
y11=1
y21=9
y31=1
y12=3
y22=5
y32=3

try:
	x11=float(x11)
	x21=float(x21)
	x31=float(x31)
	x12=float(x12)
	x22=float(x22)
	x32=float(x32)
	y11=float(y11)
	y21=float(y21)
	y31=float(y31)
	y12=float(y12)
	y22=float(y22)
	y32=float(y32)
except ValueError:
	print "Error!"

## проверка существования треугольников
A1_B1=((x21-x11)**2+(y21-y11)**2)**0.5 ## нахождение длины AB в первом треугольнике
B1_C1=((x31-x21)**2+(y31-y21)**2)**0.5 ## нахождение длины BC в первом треугольнике
A1_C1=((x31-x11)**2+(y31-y11)**2)**0.5 ## нахождение длины AC в первом треугольнике

A2_B2=((x22-x12)**2+(y22-y12)**2)**0.5 ## нахождение длины AB вo втором треугольнике
B2_C2=((x32-x22)**2+(y32-y22)**2)**0.5 ## нахождение длины BC во втором треугольнике
A2_C2=((x32-x12)**2+(y32-y12)**2)**0.5 ## нахождение длины AC во втором треугольнике

if A1_B1+B1_C1<=A1_C1 or A1_B1+A1_C1<=B1_C1 or A1_C1+B1_C1<=A1_B1:
	print "Error"
elif A2_B2+B2_C2<=A2_C2 or A2_B2+A2_C2<=B2_C2 or A2_C2+B2_C2<=A2_B2:
	print "Error"
else:
	a=0

## построение отрезков от вершины второго к вершинам первого
A2_A1=((x11-x12)**2+(y11-y12)**2)**0.5
A2_B1=((x21-x12)**2+(y21-y12)**2)**0.5
A2_C1=((x31-x12)**2+(y31-y12)**2)**0.5

## вычисление площадей треугольников
S_A1_B1_C1=(((A1_B1+B1_C1+A1_C1)/2)*(((A1_B1+B1_C1+A1_C1)/2)-A1_B1)*(((A1_B1+B1_C1+A1_C1)/2)-B1_C1)*(((A1_B1+B1_C1+A1_C1)/2)-A1_C1))**0.5 ## площадь первого треугольника по формуле Герона
S_A2_B2_C2=(((A2_B2+B2_C2+A2_C2)/2)*(((A2_B2+B2_C2+A2_C2)/2)-A2_B2)*(((A2_B2+B2_C2+A2_C2)/2)-B2_C2)*(((A2_B2+B2_C2+A2_C2)/2)-A2_C2))**0.5 ## площадь второго треугольника по формуле Герона

S_A2_A1_C1=(((A2_A1+A1_C1+A2_C1)/2)*(((A2_A1+A1_C1+A2_C1)/2)-A2_A1)*(((A2_A1+A1_C1+A2_C1)/2)-A1_C1)*(((A2_A1+A1_C1+A2_C1)/2)-A2_C1))**0.5 ## площадь треугольника A2_A1_C1 по формуле Герона
S_A2_A1_B1=(((A2_A1+A1_B1+A2_B1)/2)*(((A2_A1+A1_B1+A2_B1)/2)-A2_A1)*(((A2_A1+A1_B1+A2_B1)/2)-A1_B1)*(((A2_A1+A1_B1+A2_B1)/2)-A2_B1))**0.5 ## площадь треугольника A2_A1_B1 по формуле Герона
S_A2_C1_B1=(((A2_C1+B1_C1+A2_B1)/2)*(((A2_C1+B1_C1+A2_B1)/2)-A2_C1)*(((A2_C1+B1_C1+A2_B1)/2)-B1_C1)*(((A2_C1+B1_C1+A2_B1)/2)-A2_B1))**0.5 ## площадь треугольника A2_C1_B1 по формуле Герона

## построение отрезков от вершины первого к вершинам второго
A2_A1=((x11-x12)**2+(y11-y12)**2)**0.5
A1_B2=((x11-x22)**2+(y11-y22)**2)**0.5
A1_C2=((x11-x32)**2+(y11-y32)**2)**0.5

## вычисление площадей треугольников
S_A1_A2_B2=(((A2_A1+A1_B2+A2_B2)/2)*(((A2_A1+A1_B2+A2_B2)/2)-A2_A1)*(((A2_A1+A1_B2+A2_B2)/2)-A1_B2)*(((A2_A1+A1_B2+A2_B2)/2)-A2_B2))**0.5 ## площадь треугольника A2_A1_B2 по формуле Герона
S_A1_B2_C2=(((A1_B2+A1_C2+B2_C2)/2)*(((A1_B2+A1_C2+B2_C2)/2)-A1_B2)*(((A1_B2+A1_C2+B2_C2)/2)-A1_C2)*(((A1_B2+A1_C2+B2_C2)/2)-B2_C2))**0.5 ## площадь треугольника A1_B2_C2 по формуле Герона
S_A1_A2_C2=(((A2_A1+A1_C2+A2_C2)/2)*(((A2_A1+A1_C2+A2_C2)/2)-A2_A1)*(((A2_A1+A1_C2+A2_C2)/2)-A1_C2)*(((A2_A1+A1_C2+A2_C2)/2)-A2_C2))**0.5 ## площадь треугольника A1_A2_C2 по формуле Герона

## сравнение площадей треугольников
if S_A1_B1_C1==S_A2_A1_C1+S_A2_A1_B1+S_A2_C1_B1:
    print "Second triangle in first"
elif S_A2_B2_C2==S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2:
    print "First triangle in second"
else:
    print "%f | %f" %(S_A1_B1_C1, S_A2_A1_C1+S_A2_A1_B1+S_A2_C1_B1)
Вот этот код не работает. Когда он сравнивает числа, которые получаются в первой ветке цикла они получаются 36 и 36, а он уходит в ELSE.

В этом коде он на печать выдаёт переменные из первой ветки цикла
 
Ответить с цитированием

  #45  
Старый 09.12.2008, 00:38
Аватар для login999
login999
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме:
4512757

Репутация: 973


По умолчанию

ЫЫ (вырезано цензурой), (вырезано цензурой), (вырезано цензурой), понял, в чем срань - ты походу сравниваешь разные типы данных, попробуй первый if написать так :
if str(S_A1_B1_C1)==str(S_A2_A1_C1+S_A2_A1_B1+S_A2_C1 _B1)rint "Second triangle in first" - то есть, перевести его в строку, походу у тебя сравниваются int и float - что для интерпритатора походу разные вещи

Хотя это какие-то бакапоры самого if - он сцуко не хочет нормально сравнивать никакие значения, кроме тех случаев когда они не str() - пробовал и
if int(S_A1_B1_C1)==int(S_A2_A1_C1+S_A2_A1_B1+S_A2_C1 _B1)rint "Second triangle in first"
и
if float(S_A1_B1_C1)==float(S_A2_A1_C1+S_A2_A1_B1+S_A 2_C1_B1)rint "Second triangle in first"
корректно работает только если
if str(S_A1_B1_C1)==str(S_A2_A1_C1+S_A2_A1_B1+S_A2_C1 _B1)rint "Second triangle in first"

Последний раз редактировалось login999; 09.12.2008 в 00:47..
 
Ответить с цитированием

  #46  
Старый 16.12.2008, 12:27
Аватар для VIP
VIP
Участник форума
Регистрация: 29.12.2004
Сообщений: 105
Провел на форуме:
89596

Репутация: 21
Отправить сообщение для VIP с помощью ICQ
По умолчанию

Сегодня мне объяснили в чём проблема: оказывается там не ровно 36 получается, а с хвостиком, поэтому надо было вводить погрешность =)

Спасибо тем, кто мне помогал!
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books Python FRAGNATIC PHP, PERL, MySQL, JavaScript 1 01.11.2009 18:20
Начинаем программировать на PHP, Python, AS3 nerezus PHP, PERL, MySQL, JavaScript 0 19.08.2008 10:42
TCL/TK and PYTHON... Rejjin С/С++, C#, Delphi, .NET, Asm 9 25.07.2008 22:03
[Immunity Dbg Python Scripting] 0x0c0de Реверсинг 5 28.06.2008 15:32
Python быть или не быть procedure PHP, PERL, MySQL, JavaScript 28 24.01.2008 21:19



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ