Xcode / Swift?

2 Antworten

Offenbar ist das Dreieck gesucht, für das die Seiten c und b sowie der Winkel beta gegeben sind.

Für den ersten Datensatz läßt sich ein solches Dreieck konstruieren. Tatsächlich lassen sich mit den gegebenen Stücken sogar zwei Dreiecke konstruieren, aber das wird im dem Programm wohl nicht berücksichtigt.

Für den zweiten Datensatz gibt es kein Dreieck, weil die Seite b zu kurz ist. Dass die im Programm verwendeten Formeln dann Not-a-Number-Werte liefern, ist interessant.

Um zu verstehen, warum mit den Werten des zweiten Datensatzes kein Dreieck konstruiert werden kann, ist es zweckmäßig, Zirkel und Lineal zur Hand zu nehmen und das Dreieck mit den in der Mittelstufe (bei mir war es in der 8. Klasse dran) gelernten Verfahren zu konstruieren. Die Konstruktionsanweisung lautet:

  1. Strecke AB mit c = 4 Längeneinheiten zeichnen, Endpunkte mit A und B beschriften.
  2. Im Punkt B den Winkel beta = 53,4° an die Strecke AB antragen. Es ergibt sich eine Gerade g durch den Punkt B.
  3. Kreis um A mit Radius b = 3. Die Schnittpunkte des Kreises mit der Gerade g sind genau die möglichen Punkte C des Dreiecks ABC mit den gegebenen Stücken b, c, beta.

Bei der Ausführung des dritten Konstruktionsschritts ist zu beobachten, dass das Dreieck nicht konstruierbar ist, wenn der Kreisradius b zu klein ist. Bei ausreichend großem Radius erhalten wir zwei mögliche Punkte C und C'. Die beiden Dreiecke ABC und ABC' sind in dieser Situation weder kongruent noch ähnlich.

Woher ich das weiß:Berufserfahrung – Berufstätigkeit als Software-Entwickler
gtfrgtestacc 
Fragesteller
 19.08.2022, 11:41

Vielen Dank! Weisst du zufaelligerweise wie man der App mit einer If Abfrage sagt, dass wenn in einer Textbox sich "nan" befindet, einen error anzeigen soll? Den UIAlertController habe ich schon vorbereitet. Sowas wie:

if !(seitea.text?.isNaN)! {

showError()

}

(funktioniert so natuerlich nicht)

0

Anhand der Bilder kann man das Problem nicht erkennen. NaN heißt Not a Number, es kommt also kein reguläres Ergebnis bei der Berechnung raus.

Das tritt zum Beispiel bei einer Fließkommadivision durch null (die ergibt unendlich) auf:

let x = (42.0 / 0.0) * 0.0  // = NaN

42.0 / 0.0 ist .infinity und 0.0 * .infinity ist NaN

Du musst halt schauen, wo es bei dir zu einer Division durch Null oder zu Unendlich im Code kommt.

Für einen UIAlertController gibt es zig Tutorials. Da du wie ich annehme UIKit verwendete (und nicht wie in meinem Beispiel SwiftUI) hier verschiedene Beispiel für UIKit:

https://medium.com/swift-india/uialertcontroller-in-swift-22f3c5b1dd68

Woher ich das weiß:Berufserfahrung – Nutze Apple-Geräte seit über 20 Jahren beruflich und privat.
gtfrgtestacc 
Fragesteller
 19.08.2022, 10:38

Hey wir kennen uns doch :D Den UIAlertController habe ich schon verwendet, nur wie man den benutzt wenn dort "nan" im textfeld steht weiss ich nicht. Moeglicherweise: wenn irgentein textfeld NaN anzeigt: fehlermeldung

0
Babelfish  19.08.2022, 11:57
@gtfrgtestacc

Das hat ja nichts mit deinem Textfeld zu tun, sondern mit deinem Rechnenergebnis. Deine Ergebnisse musst du überprüfen und wenn dort NaN rauskommt, dann zeigst du einen Alert an und schreibst was lesbares (bspw. „undefiniert“) in das TextFeld.

let x = (42.0 / 0.0) * 0.0

if x.isNaN {
	showAlertDialog()
}

Natürlich musst du schauen, ob der NaN nicht durch einen Fehler von dir kommt.

0
gtfrgtestacc 
Fragesteller
 19.08.2022, 13:23
@Babelfish

Habe schon ueberprueft wann der NaN auftaucht. Nur bei Dreiecken die sowieso nicht moeglich waeren. Danke!

1