0
"p"または "q"が見つからないときにXcodeが何度も何度も解決し、結果を得てもそれはやり続けます。ループは戻ってはならない場所に戻ります。
アプリのポイントは、三角形の欠けている辺を計算することです。 ので、同じように:
import UIKit
import Darwin
var i = 0
var ch = ""
var ac = false
var bc = false
var cc = false
var pc = false
var qc = false
var mc = false
var a: Double = 0
var b: Double = 0
var c: Double = 0
var p: Double = 0
var q: Double = 0
var m: Double = 0
a
b = 8
c
p
q = 5
m
if (a > 0) {ac = true}
if (b > 0) {bc = true}
if (c > 0) {cc = true}
if (p > 0) {pc = true}
if (q > 0) {qc = true}
if (m > 0) {mc = true}
//sqrt(p)*b/sqrt(q)
while (ac == false && bc == false && cc == false && pc == false && qc == false && mc == false || i < 20){
//------------------------------------------ a
if (ac == false){
/*
> a = sqrt(p*c)
> a = sqrt(c) - sqrt(b)
> a = sqrt(m) + sqrt(p)
*/
if(pc == true && cc == true){
a = sqrt(c*p)
ac = true
ch = ch + "a.1; "
} else if (cc == true && bc == true){
a = sqrt(c) - sqrt(b)
ac = true
ch = ch + "a.2; "
} else if (mc == true && pc == true){
a = sqrt(m) + sqrt(p)
ac = true
ch = ch + "a.3; "
}
/* else if (b>0 && p>0 && q>0){
a = sqrt(p)*b/sqrt(q)
}*/
}
//------------------------------------------- b
if (bc == false){
/*
> b = sqrt(q*c)
> b = sqrt(c) - sqrt(a)
> b = sqrt(m) + sqrt(q)
*/
if (qc == true && cc == true){
b = sqrt(q * c)
bc = true
ch = ch + "b.1; "
} else if (cc == true && ac == true){
b = sqrt(c) - sqrt(a)
bc = true
ch = ch + "b.2; "
} else if (cc == true && qc == true){
b = sqrt(m) + sqrt(q)
bc = true
ch = ch + "b.3; "
}
}
//----------------------------------------------- c
if (cc == false){
/*
> c = q + p
> c = sqrt(a) + sqrt(b)
> c = pow(a, 2)/p
> c = pow(b, 2)/q
*/
if (pc == true && qc == true){
c = p + q
cc = true
ch = ch + "c.1; "
} else if (ac == true && bc == true){
c = sqrt(a) + sqrt(b)
cc = true
ch = ch + "c.2; "
} else if (ac == true && pc == true){
c = pow(a, 2)/p
cc = true
ch = ch + "c.3; "
} else if (bc == true && qc == true){
c = pow(b, 2)/q
cc = true
ch = ch + "c.4; "
}
}
//--------------------------------------------- q
if (qc == false){
/*
> q = c - p
> q = sqrt(b) - sqrt(m)
> q = pow(b, 2)/c
*/
if (pc == true && cc == true){
q = c - p
qc == true
ch = ch + "q.1; "
qc == true
} else if (bc == true && mc == true){
q = sqrt(b) - sqrt(m)
qc = true
ch = ch + "q.2; "
}else if (bc == true && cc == true){
q = pow(b, 2)/c
qc = true
ch = ch + "q.3; "
}
}
//------------------------------------------------ p
if (pc == false){
/*
> p = c - q
> p = sqrt(a) - sqrt(m)
> p = pow(a, 2)/c
*/
if (qc == true && cc == true){
p = c - q
pc == true
ch = ch + "p.1; "
} else if (ac == true && mc == true){
p = sqrt(a) - sqrt(m)
pc == true
ch = ch + "p.2; "
} else if (ac == true && cc == true){
p = pow(a, 2)/c
pc == true
ch = ch + "p.3; "
}
}
//------------------------------------------------- m
if (mc == false){
/*
> m = p * q
> m = sqrt(a) - sqrt(p)
> m = sqrt(b) - sqrt(q)
*/
if (pc == true && qc == true){
m = p * q
mc = true
ch = ch + "m.1; "
} else if (ac == true && pc == true){
m = sqrt(a) - sqrt(p)
mc = true
ch = ch + "m.2; "
} else if (bc == true && qc == true){
m = sqrt(b) - sqrt(q)
mc = true
ch = ch + "m.3; "
}
}
i += 1
}
i = 0
if (a+b > c && a+c > b && c+b > a){
a
b
c
p
q
m
m
}else{
"incorrect triangle"
}