Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Taschenrechner

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Alprausch



Anmeldungsdatum: 24.10.2009
Beiträge: 47
Wohnort: Schweiz

BeitragVerfasst am: 24.10.2009, 21:04    Titel: Taschenrechner Antworten mit Zitat

Hallo

Habe heute Abend noch einen kleinen Taschenrechner programmiert. Ist nichts grossartiges. Doch für mich war es nicht leicht. Musste ziemlich fest grübeln bis es endlich klappte.

Habe es dieses mal mit SUB's gemacht. Nicht so wie beim Währungsrechner.

Bitte gebt eure Meinungen und evtl. Tipps zu meinem Proggi ab.
Vielen Dank im voraus.

----------------------
Quelltext start:
----------------------
Code:

DECLARE SUB Subtraktion ()
DECLARE SUB multiplikation ()
DECLARE SUB division ()
DECLARE SUB quadratwurzel ()
DECLARE SUB kreisflaeche ()
DECLARE SUB dreiecksflaeche ()
DECLARE SUB rechteck ()
DECLARE SUB fuenfeck ()
DECLARE SUB addition ()
' **************************************************************************
' *                                                                        *
' *                          Taschenrechner V1.0                           *
' *                                                                        *
' *                                  geschrieben von Reto Marty 24.10.2009 *
' **************************************************************************

CLS
PRINT "***********************"
PRINT "* Taschenrechner V1.0 *"
PRINT "***********************"
PRINT " 1 = Addition"
PRINT " 2 = Subtraktion"
PRINT " 3 = Multiplikation"
PRINT " 4 = Division"
PRINT " 5 = Quadratwurzel"
PRINT " 6 = Kreisflaeche"
PRINT " 7 = Dreiecksflaeche (Rechtwinkliges Dreieck)"
PRINT " 8 = Quadrat- / Rechtecksflaeche"
INPUT "Geben Sie die gewuenschte Nummer ein: ", eingabe
IF eingabe = 1 THEN CALL addition
IF eingabe = 2 THEN CALL Subtraktion
IF eingabe = 3 THEN CALL multiplikation
IF eingabe = 4 THEN CALL division
IF eingabe = 5 THEN CALL quadratwurzel
IF eingabe = 6 THEN CALL kreisflaeche
IF eingabe = 7 THEN CALL dreiecksflaeche
IF eingabe = 8 THEN CALL rechteck
PRINT ""
PRINT ""
PRINT TAB(60);
COLOR 1
PRINT "24.10.2009 Reto Marty"
SLEEP




SUB addition
INPUT "Geben Sie die erste Zahl (a) ein: "; a
INPUT "Geben Sie die zweite Zahl (b) ein: "; b
c = a + b
PRINT "Resultat:"; c
END SUB

SUB division
INPUT "Geben Sie die erste Zahl (a) ein: "; a
INPUT "Geben Sie die zweite Zahl (b) ein: "; b
c = a / b
PRINT "Resultat:"; c
END SUB

SUB dreiecksflaeche
INPUT "Geben Sie die erste Zahl (Kathete) ein: "; a
INPUT "Geben Sie die zweite Zahl (Hypotenuse) ein: "; b
c = (a * b) / 2
PRINT "Resultat:"; c
END SUB

SUB kreisflaeche
INPUT "Geben Sie den Radius (r) ein: "; a
c = (a ^ 2 * 3.14159) / 2
PRINT "Resultat:"; c
END SUB

SUB multiplikation
INPUT "Geben Sie die erste Zahl (a) ein: "; a
INPUT "Geben Sie die zweite Zahl (b) ein: "; b
c = a * b
PRINT "Resultat:"; c
END SUB

SUB quadratwurzel
INPUT "Geben Sie die Zahl (a) ein: "; a
c = SQR(a)
PRINT "Resultat:"; c
END SUB

SUB rechteck
INPUT "Geben Sie die erste Seitenlaenge (a) ein: "; a
INPUT "Geben Sie die zweite Seitenlaenge (b) ein: "; b
c = a * b
PRINT "Resultat:"; c
END SUB

SUB Subtraktion
INPUT "Geben Sie die erste Zahl (a) ein: "; a
INPUT "Geben Sie die zweite Zahl (b) ein: "; b
c = a - b
PRINT "Resultat:"; c
END SUB


----------------------
Quelltext ende:
----------------------

mfg Reto
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 24.10.2009, 21:08    Titel: Antworten mit Zitat

Ist zwar nichts besonderes, aber wie auch beim Währungsrechner erstaunlich sauberer Code für einen Anfänger (nicht böse gemeint)! zwinkern Daumen rauf!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Alprausch



Anmeldungsdatum: 24.10.2009
Beiträge: 47
Wohnort: Schweiz

BeitragVerfasst am: 24.10.2009, 21:12    Titel: Antworten mit Zitat

Das klingt doch gut.

Ich möchte mich nur nicht von Anfang an ins Volle stürzen. Sonst wird es mir noch zu viel, ich verlier den Durchblick komplett und werfe die Flinte ins Korn. Und das will ich vermeiden in dem ich mich langsam steigere.

Hat jemand eine Idee an was ich mich als nächstes wagen könnte? grinsen
Es fällt mir grad nichts schlaues ein.

mfg Reto
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Manuel



Anmeldungsdatum: 23.10.2004
Beiträge: 1271
Wohnort: Bayern

BeitragVerfasst am: 24.10.2009, 21:40    Titel: Antworten mit Zitat

Ganz für den Anfang würde ich sagen: Momentan beendet sich dein Programm sofort, wenn man eine Rechenaufgabe macht. Wie wäre es, wenn du z.B. das Programm in einer Schleife laufenlässt und das Programm erst dann beendet wird, wenn der Benutzer dies auch will. Als Beispiel könntest du im "Hauptmenü" zusätzlich einen Punkt
Code:
PRINT " 9 = Programm beenden"
einfügen, und das Programm darf sich nur dann beenden, wenn eben die 9 gedrückt wurde.

Das würde dir eben die Grundlagen von Schleifen beibringen, die für wiederkehrende Aufgaben nicht wegzudenken sind zwinkern .
_________________
DL Walk (Denkspiel) | DL Malek (Denkspiel) | DL Warrior (ASCII-Adventure) | DL Sokodos (Sokoban-Klon)
---
www.astorek.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger
Alprausch



Anmeldungsdatum: 24.10.2009
Beiträge: 47
Wohnort: Schweiz

BeitragVerfasst am: 24.10.2009, 22:03    Titel: Antworten mit Zitat

Das mit dem LOOP funktioniert irgendwie noch nicht so wie ich will. Muss das morgen mal anschauen. Bin jetzt zu müde nach ca 8 stunden QBasic anstarren und knobeln.

PS: Meine .exe beendet sich nicht gleich selbst. Man muss immer noch eine Taste drücken zwinkern

mfg Reto
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 24.10.2009, 23:21    Titel: Antworten mit Zitat

Meine .exe beendet sich nicht gleich selbst. Man muss immer noch eine Taste drücken


Bei mir steigt es auch sofort aus missbilligen

Als :
Taschenrechner V1.0
würde ich es nicht einstufen lächeln

Gruss


Zuletzt bearbeitet von funkeld am 24.10.2009, 23:30, insgesamt 3-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 24.10.2009, 23:23    Titel: Antworten mit Zitat

Hat jemand eine Idee an was ich mich als nächstes wagen könnte?

Jahaaa...

http://forum.qbasic.at/viewtopic.php?t=6817

Kannst du das lösen?grinsen

Jojo wusste leider nicht weiter. mit den Augen rollen
Suche immer noch nach einer Lösung... happy
Ist eine Knobelei weinen

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 25.10.2009, 01:52    Titel: Antworten mit Zitat

funkeld hat Folgendes geschrieben:
Jojo wusste leider nicht weiter. mit den Augen rollen

Jaah, dazu braucht's auch jemanden, der Irrlicht wirklich benutzt, weil ich werde ganz bestimmt nicht für dich die manuals durchlesen.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 25.10.2009, 09:35    Titel: Antworten mit Zitat

Schau dich mal hier um. Da gibt's jede Menge - z.T. auch knifflige - Übungsaufgaben.

VG!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Alprausch



Anmeldungsdatum: 24.10.2009
Beiträge: 47
Wohnort: Schweiz

BeitragVerfasst am: 25.10.2009, 11:41    Titel: Antworten mit Zitat

@ funkeld: Warum dass sich bei der das Programm von selbst beendet kann ich nicht sagen. Bei mir geht es als .exe oder im QBasic ohne Probleme. Und danke für die Aufgabe, aber ich denke da verstehe ich im Moment nur Bahnhof. Ach ja, der Name "Taschenrechner V1.0" ist mir nur grade so in den Sinn gekommen. Will das Ganze ja nicht vermarkten. Dann ist der Name ja auch egal zwinkern

@ croco97: Danke für den Link. Ich werde das einmal genauer anschauen. Habe auf den ersten Blick grade nichts gesehen.

@ all: Ich werde mich jetzt noch an die LOOP Funktion machen. Ich hoffe ich schaffe das irgendwie. Sonst hätte ich noch eine Idee mit GOTO gehabt die mir in der Nacht eingefallen ist. Ja, ich weiss, GOTO sollte man nicht benutzen. Diese Funktion soll das ganze ziemlich unübersichtlich machen.
Na ja, mal schauen wie ich es schaffe. Werde das Ergebnis dann hier posten bevor ich mein Projekt als fertig bezeichne.

mfg Reto
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Alprausch



Anmeldungsdatum: 24.10.2009
Beiträge: 47
Wohnort: Schweiz

BeitragVerfasst am: 25.10.2009, 12:13    Titel: Antworten mit Zitat

Habe jetzt meinen Taschenrechner so weit dass nach jeder Berechnung die Frage kommt ob man weiter rechnen möchte oder beenden.

Für mich ist es ok so. Werde daran nicht mehr weitermachen. Es funktioniert so wie ich möchte.

Ich sage aber nicht dass ich nicht irgendwann eine Weiterentwicklung vom Rechner machen werde grinsen

Nur Taschenrechner V1.0 ist so fertig.

Code:
DECLARE SUB Subtraktion ()
DECLARE SUB multiplikation ()
DECLARE SUB division ()
DECLARE SUB quadratwurzel ()
DECLARE SUB kreisflaeche ()
DECLARE SUB dreiecksflaeche ()
DECLARE SUB rechteck ()
DECLARE SUB fuenfeck ()
DECLARE SUB addition ()
' **************************************************************************
' *                                                                        *
' *                          Taschenrechner V1.0                           *
' *                                                                        *
' *                                  geschrieben von Reto Marty 25.10.2009 *
' **************************************************************************

CLS
anfang:
PRINT "***********************"
PRINT "* Taschenrechner V1.0 *"
PRINT "***********************"
PRINT " 1 = Addition"
PRINT " 2 = Subtraktion"
PRINT " 3 = Multiplikation"
PRINT " 4 = Division"
PRINT " 5 = Quadratwurzel"
PRINT " 6 = Kreisflaeche"
PRINT " 7 = Dreiecksflaeche (Rechtwinkliges Dreieck)"
PRINT " 8 = Quadrat- / Rechtecksflaeche"
PRINT " 9 = Programm beenden"
INPUT "Geben Sie die gewuenschte Nummer ein: ", eingabe
IF eingabe = 1 THEN CALL addition
IF eingabe = 2 THEN CALL Subtraktion
IF eingabe = 3 THEN CALL multiplikation
IF eingabe = 4 THEN CALL division
IF eingabe = 5 THEN CALL quadratwurzel
IF eingabe = 6 THEN CALL kreisflaeche
IF eingabe = 7 THEN CALL dreiecksflaeche
IF eingabe = 8 THEN CALL rechteck
IF eingabe = 9 THEN END
PRINT ""
PRINT " 0 = nochmal von vorne"
PRINT " 9 = Ende"
INPUT "Welche Option Wuenschen Sie?: ", eingabe
IF eingabe = 0 THEN GOTO anfang
IF eingabe = 9 THEN GOTO ende
ende:
PRINT ""
PRINT ""
PRINT TAB(60);
COLOR 1
PRINT "25.10.2009 Reto Marty"
SLEEP



SUB addition
INPUT "Geben Sie den ersten Summand ein: "; a
INPUT "Geben Sie den zweiten Summand ein: "; b
c = a + b
PRINT "Resultat:"; c
END SUB

SUB division
INPUT "Geben Sie den Dividend ein: "; a
INPUT "Geben Sie den Divisor ein: "; b
c = a / b
PRINT "Resultat:"; c
END SUB

SUB dreiecksflaeche
INPUT "Geben Sie die erste Seitenlaenge (Kathete) ein: "; a
INPUT "Geben Sie die zweite Seitenlaenge (Hypotenuse) ein: "; b
c = (a * b) / 2
PRINT "Resultat:"; c
END SUB

SUB kreisflaeche
INPUT "Geben Sie den Radius ein: "; a
c = (a ^ 2 * 3.14159) / 2
PRINT "Resultat:"; c
END SUB

SUB multiplikation
INPUT "Geben Sie den ersten Faktor ein: "; a
INPUT "Geben Sie den zweiten Faktor ein: "; b
c = a * b
PRINT "Resultat:"; c
END SUB

SUB quadratwurzel
INPUT "Geben Sie den Radikand ein: "; a
c = SQR(a)
PRINT "Resultat:"; c
END SUB

SUB rechteck
INPUT "Geben Sie die erste Seitenlaenge ein: "; a
INPUT "Geben Sie die zweite Seitenlaenge ein: "; b
c = a * b
PRINT "Resultat:"; c
END SUB

SUB Subtraktion
INPUT "Geben Sie den Minuend ein: "; a
INPUT "Geben Sie den Subtrahend ein: "; b
c = a - b
PRINT "Resultat:"; c
END SUB


PS: Bin immer noch auf der Suche nach einer Aufgabe die ein Anfänger auch bewältigen kann. Ein bisschen knoblen sollte schon drin sein, aber nicht so viel dass ich nicht mehr weiss wo was ist...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 25.10.2009, 14:48    Titel: Antworten mit Zitat

Code:
DO
PRINT "***********************"
PRINT "* Taschenrechner V1.0 *"
PRINT "***********************"
[...]
PRINT " 0 = nochmal von vorne"
PRINT " 9 = Ende"
INPUT "Welche Option Wuenschen Sie?: ", eingabe
LOOP WHILE eingabe = 0


So könnte man das ohne GOTO machen zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 25.10.2009, 15:27    Titel: Antworten mit Zitat

Warum überhaupt " 0: nochmal von vorn"? Ich würde sowieso wieder von vorn anfangen, weil ich da ja (nochmal) das Beenden als Auswahlmöglichkeit habe.

Zitat:
Warum dass sich bei der das Programm von selbst beendet kann ich nicht sagen.

Vielleicht lässt sich das Problem mit einem GETKEY statt eines SLEEP am Ende lösen. Sollte zwar eigentlich nicht das Problem sein, ist es aber manchmal.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 28.10.2009, 10:31    Titel: Antworten mit Zitat

MOD hat Folgendes geschrieben:

So könnte man das ohne GOTO machen zwinkern

Das kann ich nicht unkommentiert lassen zwinkern
@MOD: gut gemacht.. vor lachen auf dem Boden rollen
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 28.10.2009, 22:35    Titel: Antworten mit Zitat

GOTO hat auch seine Vorteile. Zum Beispiel kann man dadurch auch mal wieder was von totgeglaubten Mitglieder lesen. lachen
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OdinX



Anmeldungsdatum: 29.07.2005
Beiträge: 253
Wohnort: SG Schweiz

BeitragVerfasst am: 06.01.2010, 13:38    Titel: Antworten mit Zitat

Ja ja, die guten alten GOTOs...

Ich weiss jetzt nicht, ob es am Code-Feld im Forum liegt, aber du solltest deinen Code einrücken, um die Übersichtlichkeit zu verbessern.

Code:
SUB addition
    INPUT "Geben Sie die erste Zahl (a) ein: "; a
    INPUT "Geben Sie die zweite Zahl (b) ein: "; b
    c = a + b
    PRINT "Resultat:"; c
END SUB


nur so alt Tipp.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
k4rsten



Anmeldungsdatum: 01.01.2010
Beiträge: 18
Wohnort: Dortmund

BeitragVerfasst am: 06.01.2010, 14:21    Titel: Antworten mit Zitat

Code:
Hat jemand eine Idee an was ich mich als nächstes wagen könnte? 


Eine History-Funktion, die die vorangegangen Rechnungen anzeigt, sofern man mit dem Ergebnis weitergerechnet hat. Das könntest du gut mit einem Array lösen.

//Edit: Funktion ist hierbei als Feature zu sehen, nicht als definierte Funktion.
_________________
you cannot kill what you did not create
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
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.

 Impressum :: Datenschutz