float "leer"?
Übersicht

![]() |
KnykBetreff: float "leer"? |
![]() Antworten mit Zitat ![]() |
---|---|---|
hallo,
Ich möchte ein Programm schreiben, in das man Werte eingibt und die fehlenden Werte automatisch errechnet werden. Das Rechnen ist kein Problem, aber die Eingabe: Wenn ich nämlich bei der Eingabe z.B. x# leer lasse. ist x nicht leer, sondern "0.0". Dadurch kann das Programm ja aber nicht ersehen was fehlt und rechnet nicht. (Denn 0 ist ja auch ein möglicher Wert) Gibt es da ne Lösung? |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
lass dir den input-Wert nicht direkt in eine int casten, sondern speicher ihn zuerst in eine string (z.B. xstring$). Dann überprüfe ob xstring$="0", und wenns das nicht ist, aber x# schon, dann weißt du, es gab einen Fehler.
BlitzBasic: [AUSKLAPPEN]
|
||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
Knyk |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke,
Das Problem ist so erst mal gelöst. Jetzt habe ich ein neues: Ich mache das ganze für ein Programm für den Physikunterricht und muss nun vom Programm eine Gleichung lösen lassen. z.B: 7=2+2x Ich habe keine Ahnung, ich die Lösung als Programmablauf ausdrücken soll. Habe mir dazu schon das hier (bmax): https://www.blitzforum.de/foru...hp?t=31646 und ein wenig übers Gaußsche Eliminationsverfahren gelesen, aber ich versteh das Prinzip irgendwie nicht... auf die Gefahr hin, mich zu blamieren: kann jemand das vielleicht mal ganz von vorn erklären?^^ Danke |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Machs wie du's manuell machen würdest: Strichrechnungen zuerst wegmachen, dann die Punktrechnungen auflösen. Alles weitere ist dein Job. Schließlich willst du's ja programmieren (wenn du mir nen 10er zahlen willst, dann schreib ich's für dich). | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
Knyk hat Folgendes geschrieben: z.B: 7=2+2x
Das is alles eine Frage von den möglichen Rechenoperatoren und den Anzahl der Variablen. Bei einer sollte es nicht soo schwer sein. Ich hab zwar keine Ahnung, wie man es in der Informatik tatsächlich umsetzen würde, aber ich würde so vorgehen, dass ich die Gleichung erstmal als Polynom beschreibe, also in deinem Beispiel: Zitat: 7x^0 = 2x^0 + 2x^1 Dann könnte man die Gleichung durchgehen und alle Terme mit gleichem Exponenten suchen und davon die Summe bilden (eine Summe wird dabei immer durch einen Koeffizienten, einer Variablen und einen Exponenten beschrieben). Hier muss dann natürlich der Term, abhängig davon, ob er links oder rechts vom Gleichheitszeichen steht, mit dem richtigen Vorzeichen versehen werden.
In deinem Beispiel ergibt sich unter der Voraussetzung, dass die Terme, die rechts stehen, mit einem Minus versehen werden: Zitat: Summe1 => ( 7 - 2 ) * x^0 = 5 * x^0
Dann muss man natürlich wissen, nach was man auflösen will. Hier im einfachsten Fall steht natürlich nur x^1 zur Verfügung. Damit der Koeffizient bei der zu auflösenden Variablen verschwindet, teilt man einfach die Koeffizienten aller Summen durch den Koeffizient eben dieser Variable:
Summe2 => (-2) * x^1 = -2 * x^1 Zitat: Summe1 => (5 / (-2) ) x^0 = -2.5 * x^0
Aus diesen Summen kann man die neue Gleichung
Summe2 => ( (-2) / (-2) ) x^1 = 1 * x^1 Zitat: Summe1 + Summe2 = 0 betrachten, bei der sich als gesuchte Lösung die Restsumme (also Gesamtsumme aller "Summen" ohne der gesuchten Summe) mit gewechseltem Vorzeichen, ergibt:
Zitat: Gesamtsumme = Summe1 * (-1) = 2.5 * x^0
Und schon hat man die Lösung:
Summe2 => Gesamtsumme Zitat: 1* x^1 = 2.5 * x^0 Die Schreibweise als x = 2.5 ist dann reine Ökonomie der Ausgabe. ![]() Diese Methode ist, wie schon gesagt, die Vorgehensweise dir mir spontan eingefallen ist. Da gibt es sicher korrektere, optimiertere Algorithmen. Und das funktioniert auch nur für Polynome 1. Grades. Bei Polynomen 2. Grades gibt es andere Sachen, die berücksichtigt werden müssen. Aber rein für das Verständnis, wie man solche Probleme angehen kann, sollte das doch ganz anschaulich sein. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group