Zum neuen Informatik-Forum >>
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Rechnen
Gehe zu Seite 1, 2  Weiter
 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> QBasic und andere Basic-Dialekte
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Logit



Anmeldungsdatum: 22.03.2005
Beiträge: 27

BeitragVerfasst am: 06. Apr 2005 17:22    Titel: Rechnen Antworten mit Zitat

hi,
mach ich also mal wieder den anfang in einem der basic Theard.

Also, wenn ich einem Benutzer zwei Zahle eingeben lasse und sie dann quasi also Variable gesichert habe, will ich diese beiden Zahlen multiplizieren.

Normal kann ich es ja so anstellen:
? 2 * 3

Aber wenn ich ja Variablen habe, muss ich ja so was ähnliches eingeben:
? zahl1$ * zahl2$

Aber der kann das nicht.

Der kann ja nur +, und das nur, wenn er die beiden zusammenfügt.
Also wenn zahl1$ = 1; und zahl2$ = 2 ....
... schreibt er ja dann auch nur 12.


Kann ich nur die 2 Variablen zusammenfügen?
Ich hoffe ihr versteht, was ich will.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Tobias



Anmeldungsdatum: 15.02.2005
Beiträge: 149

BeitragVerfasst am: 06. Apr 2005 18:00    Titel: Antworten mit Zitat

Der Fluch von Basic, dass man die Variablen nicht dimensionieren muss.

Dein Problem ist, dass Basic die variablen als Strings (Zeichenketten) einliest. Auf Zeichenketten ist aber keine Operation "*" definiert. (Du kannst ja auch nicht "Kuh"*Pferd" multiplizieren).

Mit dem "$" Zeichen sagst du Basic, dass die Variable eine String-Variable ist. Wir brauchen aber einen ganzzahligen Datentyp.

Dim zahl1 as Int
Dim zahl2 as Int

Input "Gib Zahl1 ein", zahl1
Input "Gib Zahl2 ein", zahl2

Print "Das Ergebnis lautet ", (zahl1+zahl2)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Logit



Anmeldungsdatum: 22.03.2005
Beiträge: 27

BeitragVerfasst am: 06. Apr 2005 18:11    Titel: Antworten mit Zitat

klappt es denn dann?

Soll ich alles so eingeben, wie du es geschreiben hast?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Tobias



Anmeldungsdatum: 15.02.2005
Beiträge: 149

BeitragVerfasst am: 06. Apr 2005 18:20    Titel: Antworten mit Zitat

Ich muss doch jetzt nicht extra erwähnen, dass man es evt. ausprobieren könnte? geschockt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Logit



Anmeldungsdatum: 22.03.2005
Beiträge: 27

BeitragVerfasst am: 07. Apr 2005 14:18    Titel: Antworten mit Zitat

ich war auf einem Geburtstag und hatte vergessen mir qb mitzunehmen.

Trotzdem Danke für deine Antwort.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Logit



Anmeldungsdatum: 22.03.2005
Beiträge: 27

BeitragVerfasst am: 07. Apr 2005 14:36    Titel: Antworten mit Zitat

aber kann ich den auch dazu bringen, dass er 16a² ausrechnet?

also, dass man jetzt sagen kann 4a*4a.
Sodass er die Zahl mit a angeben kann und die angegebene Zahl dann ^2 gerechnet werden kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gast






BeitragVerfasst am: 07. Apr 2005 15:26    Titel: Antworten mit Zitat

Auf nicht überaus komplizierte Art nicht.
Nach oben
Logit



Anmeldungsdatum: 22.03.2005
Beiträge: 27

BeitragVerfasst am: 07. Apr 2005 17:19    Titel: Antworten mit Zitat

schade
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Logit



Anmeldungsdatum: 22.03.2005
Beiträge: 27

BeitragVerfasst am: 07. Apr 2005 17:20    Titel: Antworten mit Zitat

aber geht das auch komplizerit.

Ich meine mann muss ja "nur" a² oder anderes herausbekommen können.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ME



Anmeldungsdatum: 07.04.2005
Beiträge: 4
Wohnort: Mainz

BeitragVerfasst am: 07. Apr 2005 18:08    Titel: Antworten mit Zitat

Ich weiß nicht genau, was du vorhast. Wenn der Benutzer lediglich einen Wert für a angeben soll, mit dem dann intern weitergerechnet wird, ist es kein Problem.

Willst du allerdings Eingaben vom Schema Rechenterm = "4a * 4a", die dann vom Programm als "16a²" errechnet und ausgegeben werden sollen, müsstest du dir einen eigenen Parser dafür programmieren (oder mal im Internet suchen, ob sich jemand bereits die Mühe gemacht hat), was allerdings schon nur für Terme ohne variable Ausdrücke einen erheblichen Aufwand darstellt.

Ein Beispiel:

Der Rechenterm ist "4+4". Dieser Term wird als Variable des Datentyps String eingegeben und muss nun entsprechend mathematischer Regeln interpretiert werden. In diesem Fall würde der String von links nach rechts Zeichen für Zeichen durchlaufen, wobei der Parser feststellen müsste, dass er mit einer Zahl beginnt (4), auf die ein Rechenzeichen (+) und schließlich eine weitere Zahl (4) folgt. Diese beiden Zahlen müssten nun in einen numerischen Datentyp umgewandelt und per Bedingung entsprechend des dazwischen stehenden Rechenzeichens zusammengerechnet werden.

Logisch formuliert also etwa so:

wenn rechenzeichen = "+" dann ergebnis = zahl1 + zahl2

Das ist allerdings nur die Spitze des Eisbergs, da ein Term schließlich auch so aussehen könnte: "8+4*(-4/(2+8))"

Selbst diese Aufgabe ist noch verhältnismäßig leicht zu lösen, wenn man rekursive Programmierung einsetzt, um der Klammerausdrücke Herr zu werden. Ich möchte das hier nicht weiter vertiefen.

Möchtest du nun Variablen in einen Term einfügen ("(4a+17b*2-7a)*a"), müsstest du vermutlich allein zur Speicherung einer Zahl aus diesem Term einen komplexen Datentyp einsetzen, der beispielsweise "4a" als

zahl1.wert = 4
zahl1.variable = "a"

speichert.

Eine Addition dürfte dann beispielsweise nur ausgeführt werden, wenn beide beteiligten Zahlen in ihrer "variable"-Eigenschaft übereinstimmten.

wenn zahl1.variable = zahl2.variable und rechenzeichen = "+" dann
{
ergebnis.wert = zahl1.wert + zahl2.wert
ergebnis.variable = zahl1.variable
}

Einen Termparser zu programmieren, stellt sicherlich eine interessante Herausforderung dar. Meine Gedanken dazu können zudem nicht mehr als ein grundlegender Ansatz sein, der nicht unbedingt praktikabel sein muss.

Ein solches Programm ist jedoch ganz sicher nicht nebenbei aus dem Stehgreif zu schreiben. Ich persönlich könnte mir vorstellen, dass man sich daran ganz schön die Zähne ausbeißen kann und das eher ein Thema für die Diplomarbeit in Informatik ist.

In der Hoffnung, etwas mehr Klarheit in die Problematik gebracht zu haben
Marc
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> QBasic und andere Basic-Dialekte Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen