Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Metzner
Anmeldungsdatum: 12.07.2014 Beiträge: 4
|
Verfasst am: 12.07.2014, 14:13 Titel: Ergebnisse in einer Tabelle darstellen |
|
|
Guten Tag,
ich bin neu in QBasic und würde gerne wissen wie ich meine Ergebnisse in einer Tabelle darstellen kann, damit es schön aussieht?
Ich habe so weit das Programm geschrieben und alles funktioniert.
Das Programm soll die x und y Werte einer Funktion darstellen.
Momentan gibt er die Werte folgendermaßen aus:
"y=+#.###"
"z=+#.###"
"y=+#.###"
.
.
.
und so weiter nun möchte ich aber das er diese Werte in einer Tabelle schreibt und schick aussieht.
Sprich 2 Spalten mit "Obere Grenze-Untere Grenze* Schrittweite" Zeilen
Gibt es dort eine Möglichkeit?
Ich finde leider kaum etwas im Internet darüber.
Danke und beste Grüße, Metzner |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 12.07.2014, 14:32 Titel: PRINT USING |
|
|
Hallo und willkommen im Forum!
Meinst du QBasic oder FreeBASIC? Du schreibst zwar QBasic, hast aber im FreeBASIC-Unterforum gepostet, von daher die Frage.
Hier jedenfalls mal eine FreeBASIC-Lösung: Meinst du das so?
Code: | Randomize Timer
Const Anzahl = 10
Dim As Double x(1 To Anzahl), y(1 To Anzahl), z(1 To Anzahl)
Dim As Integer i
'Zufallsdaten erzeugen:
For i = LBound(x) To UBound(x)
x(i) = RND * 10 - 5
y(i) = RND * 10 - 5
z(i) = RND * 10 - 5
Next i
' Ausgabe als Tabelle
Print "+ Daten ---------------------------+"
Print "| Index | X-Wert | Y-Wert | Z-Wert |"
Print "+----------------------------------+"
For i = LBound(x) To UBound(x)
Print Using "| ##### | +#.### | +#.### | +#.### |"; i; x(i); y(i); z(i)
Next i
Print "+----------------------------------+"
GetKey
End |
Sieht ausgeführt so aus (Bild zum Vergrößern anklicken):
Viele Grüße & ein schönes Wochenende!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
Metzner
Anmeldungsdatum: 12.07.2014 Beiträge: 4
|
Verfasst am: 12.07.2014, 17:38 Titel: |
|
|
Danke. Ich meine qbasic. kann der Thread verschoben werden oder soll ich neu öffnen? |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 12.07.2014, 17:47 Titel: |
|
|
Hallo,
der Thread ist jetzt verschoben.
In QBASIC funktioniert die spaltenweise Ausgabe von Zahlen genauso, auch da heißt der Befehl "PRINT USING".
Nur im Beispielcode "drum herum" muss man ein bisschen ändern. Zum Beispiel kann man in QB nicht schreiben:
Code: | Dim As Double x(1 To Anzahl), y(1 To Anzahl), z(1 To Anzahl) |
sondern muss die Langversion nehmen:
Code: | Dim x(1 To Anzahl) As Double, y(1 To Anzahl) As Double, z(1 To Anzahl) As Double |
Heutzutage, wo QB-Programme (DOS / 16-Bit) auf den gängigen Workstations (64-Bit-Versionen von Windows 7 aufwärts) gar nicht mehr ohne Emulator lauffähig sind, würde ich kein neues Projekt mehr mit QB anfangen / durchziehen. Da würde ich dann gleich auf FreeBASIC setzen, weil man die damit erzeugten Programme problemlos auch unter Windows 8.1 64-Bit oder sogar Linux ausführen kann - ganz ohne Emulator, sondern nativ.
Aber unabhängig vom eingesetzten Compiler: Meinst du so eine Darstellung wie auf dem Screenshot?
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
Metzner
Anmeldungsdatum: 12.07.2014 Beiträge: 4
|
Verfasst am: 12.07.2014, 17:58 Titel: |
|
|
Ja ich meine in etwa die wie im Screenshot abgebildete Darstellung. Werde ich mich jetzt mal dran versuchen. Danke!
Also schonmal Danke. Hat weitergeholfen. Am Ziel bin ich allerdings noch lange nicht!
Edit:
Problem seht ihr unten:
die X-Werte sind falsch. Stellt euch dies als Koordinatensystem vor.
Ich will mir zu den X-Werten von 0-5 in der Schrittweise s die dazugehörigen Y-Ergebnnisse anzeigen lassen.
Leider haut dies noch nicht hin und ich bin noch am suchen. Vielleicht könnt ihr die Suche ja verkürzen
http://www.bilder-space.de/bild-jpg-17608.htm
http://www.bilder-space.de/bild-jpg-17610.htm Zitat: | P = o - u
anzahl = P / s
DIM x(1 TO anzahl) AS DOUBLE, y(1 TO anzahl) AS DOUBLE
DIM i(1 TO anzahl) AS INTEGER
'Zufallsdaten erzeugen
FOR i = LBOUND(x) TO UBOUND(x)
x(i) = RND * 10 - 5
y(i) = RND * 10 - 5
NEXT i
'**************Ausgabe der Tabelle************
PRINT "+ Ergebnistabelle---------+"
PRINT "| Index I X-Wert I Y-Wert |"
PRINT "+-------------------------+"
FOR i = LBOUND(x) TO UBOUND(x)
PRINT USING "| ##### | +#.### | +#.### | +#.### |"; i; x(i); y(i)
NEXT i
PRINT "+-------------------------+" |
|
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 12.07.2014, 20:12 Titel: Wertetabelle für lineare Funktion |
|
|
Hallo,
was hältst du hiervon:
Hier der Code dazu, dieses Mal für QB:
Code: | CLS
DIM m AS DOUBLE, b AS DOUBLE, von AS DOUBLE, bis AS DOUBLE, s AS DOUBLE
PRINT "Lineare Funktion - Wertetabelle"
INPUT "m = ", m
INPUT "b = ", b
INPUT "Untere Grenze der Wertetabelle: ", von
INPUT "Obere Grenze der Wertetabelle: ", bis
INPUT "Schrittweite fuer Wertetabelle: ", s
PRINT 'Leerzeile
IF ((von > bis) OR (s <= 0)) THEN
PRINT "Fehlerhafte Eingaben. Die obere Grenze muss groesser sein"
PRINT "als die untere und die Schrittweite muss positiv sein."
SLEEP: END
END IF
PRINT "Die Funktionsvorschrift lautet: "; CHR$(159);
PRINT USING "(x) = #.### * x + #.###"; m; b
PRINT
DIM xAktuell AS DOUBLE
PRINT "ÚÄ Wertetabelle ÄÄ¿"
PRINT "³ x ³ y ³"
PRINT "ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´"
xAktuell = von
DO
PRINT USING "³ ##.### ³ ##.### ³"; xAktuell; (m * xAktuell + b)
xAktuell = xAktuell + s
LOOP UNTIL xAktuell > bis
PRINT "ÀÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÙ"
SLEEP
END |
Den Code kannst du hier direkt als BAS herunterladen: http://users.freebasic-portal.de/sebastian/qb/WERTETAB.BAS
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
Metzner
Anmeldungsdatum: 12.07.2014 Beiträge: 4
|
Verfasst am: 12.07.2014, 20:42 Titel: Re: Wertetabelle für lineare Funktion |
|
|
Grandios. Danke!
Habe so weit alles fertig.
Jetzt ist das Problem, dass ich einige Sachen erläutern muss.
1. Wo finde ich sonst die Befehle für die Tabelle?
Zitat: | PRINT "ÚÄ Wertetabelle ÄÄ¿"
PRINT "³ x ³ y ³"
PRINT "ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´"
xAktuell = von
DO
PRINT USING "³ ##.### ³ ##.### ³"; xAktuell; (m * xAktuell + b)
xAktuell = xAktuell + s
LOOP UNTIL xAktuell > bis
PRINT "ÀÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÙ"
SLEEP
END |
Ich hätte nicht gewusst bzw wusste bis zum kopieren nicht, dass die Buchstaben ÚÄ zum beispiel eine Ecke ergeben.
Ansonsten sehr cool. Das gefällt mir echt gut. Danke
EDIT:
2. Kann man etwas einbauen, dass es im program erst weiter geht wenn man etwas eintippt und man nicht durch drücken der Enter-Taste das Programm weiter laufen lassen kann? |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 12.07.2014, 20:59 Titel: Re: Wertetabelle für lineare Funktion |
|
|
Metzner hat Folgendes geschrieben: | 1. Wo finde ich sonst die Befehle für die Tabelle? |
Diese Sonderzeichen kann man in einer ASCII-Tabelle nachschlagen, zum Beispiel hier:
http://www.o-bizz.de/qbdown/qbeigen/pics/ascii_gross.gif
Das Problem dabei ist, dass die Tabellen für DOS (QB) und Windows unterschiedlich sind. Was in QB unter DOS eine Kästchen-Ecke ist, ist unter Windows irgendein fremdsprachiger Buchstabe. Und umgekehrt. Die Zahlen aus der verlinkten Tabelle oben gelten für DOS/QB und ergeben unter Windows teilweise nur komisches Zeug.
Wenn du in QB bist, kannst du über die Eingabe von ALT (gedrückt halten) und der Nummer auf dem Nummernblock (siehe verlinkte Tabelle) die Zeichen einfügen. Wichtig ist, dass man die Nummern nur über den Nummernblock rechts eingeben kann (und nicht über die Zahlen-Tastenleiste über den Buchstaben). Die Num-LED muss dabei aktiv sein.
Wenn du in QB zum Beispiel ALT gedrückt hältst und dann auf dem Nummernblock 197 eingibst, bekommst du ein Tabellenkreuz.
Metzner hat Folgendes geschrieben: | EDIT:
2. Kann man etwas einbauen, dass es im program erst weiter geht wenn man etwas eintippt und man nicht durch drücken der Enter-Taste das Programm weiter laufen lassen kann? |
Ja, das geht:
Code: | Dim Eingabe As String
Do
Input "Geben Sie WEITER ein, um fortzufahren: ", Eingabe
If (Eingabe <> "WEITER") Then
Print "Die Eingabe war ungueltig und muss wiederholt werden."
End If
Loop Until Eingabe = "WEITER"
Print "Jetzt geht's weiter!" |
_________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
|