Akkordrechner aus QBasic (war: Brauche mal Hilfe!)

Fragen zu allen anderen Programmiersprachen.
Peddawing
Beiträge: 3
Registriert: 02.11.2004 18:10
Wohnort: Dortmund

Akkordrechner aus QBasic (war: Brauche mal Hilfe!)

Beitrag von Peddawing »

Hallo Leute.

Brauche mal Hilfe da ich ein paar Sachen nicht so ganz blicke.
Habe sonst nur in Qbasic kleine Progis geschrieben.
Kann mir mal einer das folgende Listing aus Qbasic
in PB umschreiben?
Ich habe schon nach ähnlichen Sachen gesucht aber leider vergebens.
10 cls
20 print"akkordrechner"
30 input"ruestzeit(j/n)";q$
40 if q$="j" then goto 200
50 if q$="n" then goto 100
100 input"vorgabezeit";a
110 input"anzahl teile";b
120 c=a*b
130 d=c/75
140 print"ausgabe in std. bei 75 min. verrechnung!"
150 prind d
160 goto 300
200 input"ruestzeit;a
210 input"vorgabezeit";b
220 input"anzahl teile";c
230 d=b*c
240 e=d+a
250 f=e/75
260 print"ausgabe in std. bei 75 min. verrechnung!"
270 print f
280 goto 300
300 input"neue rechnung(j/n)";v$
310 if v$="j" then goto 30
320 if v$="n" then end

Schon mal Danke.
Peddawing
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1755
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

Du willst doch lernen, oder nicht ? :wink:

Dafür schaust Du Dir mal die Befehle der Console Library in der Anleitung an, da findest Du analog den QBasic-Befehlen die fast identischen Befehle in PB.

Goto (wenn's denn sein muss) findest Du auch in der Anleitung, statt Zeilennummern (gibt's in PB wie in den meisten anderen aktuellen Programmiersprachen nicht) verwendest Du Sprungmarken.
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

und nächstes Mal versuchen wir's dann mal mit sinnvollen Überschriften (noch hast du die Chance dazu das selber schnell zu ändern, dazu einfach den Edit-Knopf über deinem Post betätigen)

cu
3dim
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
Rob
Shadow Admin
Beiträge: 258
Registriert: 26.08.2004 01:39
Kontaktdaten:

Beitrag von Rob »

> Brauche mal Hilfe!

1. Klar brauchst du Hilfe. Jeder hier braucht Hilfe, das ist der Zweck des Forums. Wähle einen aussagekräftigen Post-Titel.

2. Es gibt Code-Tags: [code] dein code [/code]. Pack deinen Code dort rein, ist besser zu lesen.

3. Da es in deinem Thread um QBasic geht, kommt er besser ins "Andere Sprachen"-Forum.

Und viel übersetzen musst du da eigentlich nicht, diese simplen QBasic-befehle gibts in ähnlicher Form auch in PB. Siehe Hilfe.

Und willkommen im PureBoard :allright:
Build a man a fire and he's warm for a day. Set a man on fire and he's warm for the rest of his life
Peddawing
Beiträge: 3
Registriert: 02.11.2004 18:10
Wohnort: Dortmund

Schreibweise der Befehle unklar!

Beitrag von Peddawing »

Hi Leute.

Versuche seit 3 Tagen das oben gelistete Progi in PB ans laufen zu bekommen.
Leider ist mir die j/n abfrage immer noch Schleierhaft.
Die korekte Schreibweise der Befehle würde mir schon weiterhelfen.
Habe mir schon etliche Tutotials angesehen, leider war nichts
passendes dabei.

Peddawing
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Ich habs ma versucht:

Code: Alles auswählen

OpenConsole()
PrintN("akkordrechner")
Line30:
PrintN("ruestzeit(j/n)")
q.s = Input():PrintN("")
If q="j":Goto Line200:EndIf
If q="n":Goto Line100:EndIf
Line100:
PrintN("vorgabezeit")
a = Val(Input()):PrintN("")
PrintN("anzahl teile")
b = Val(Input()):PrintN("")
c=a*b 
d=c/75 
PrintN("ausgabe in std. bei 75 min. verrechnung!")
PrintN(Str(d))
Goto Line300 
Line200:
PrintN("ruestzeit")
a = Val(Input()):PrintN("")
PrintN("vorgabezeit")
b = Val(Input()):PrintN("")
PrintN("anzahl teile")
c = Val(Input()):PrintN("")
d=b*c 
e=d+a 
f=e/75 
PrintN("ausgabe in std. bei 75 min. verrechnung!")
PrintN(Str(f))
Goto Line300
Line300:
PrintN("neue rechnung(j/n)")
v.s = Input():PrintN("")
If v="j":Goto Line30:EndIf
If v="n":End:EndIf
Zwar versteh ich paar Zeilen nich, z.B. "Goto Line300" wenn danach gleich Line300 kommt, aber is ja egal ;)
Hab außerdem nach jedem Input() ein :PrintN("") gehängt damit in die nächste Zeile gesprungen wird.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Aus diesen 80'er Spaghetti-Code kann man doch eine Batch-Datei machen. Dazu Bedarf es doch keiner Programmiersprache :lol:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

So, Chance vertan. Die Extraarbeit die ich damit hatte den Titel zu ändern stelle ich Dir dann in Rechnung :twisted: ;-) ;-)

Achja: Willkommen im Club. Wenn du Fragen hast kannst du sie gerne stellen und lass Dich nicht von so ein paar Forenregeln (also sinnvoller Titel usw.) erschrecken oder gar verjagen, die sind schnell gelernt und wir sind eigentlich (fast) alle ganz lieb und beißen nicht :allright:
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag von Falko »

Ich würde eher sagen, aus Beispielen kann jeder lernen :mrgreen:

Hab das mal in einer Windowsausgabe gemacht.
Kommastellen bei VorgabeZeit bitte mit den Punkt angeben.

Am Einfachsten geht das mit dem in PB enthaltenen VisualDesigner.
Man braucht dann in den Optionen nur noch die Hauptschleife und
die jeweiligen Anpassungen machen. Falls da noch in der Rechnung
falsch ist kann du das ja in der Procedure rechne() abändern.
Wir arbeiten schon seit langen nicht mehr mit Akkord sondern mit
Prämie. Deshalb kann ich nicht über die Genauigkeit garantieren :mrgreen:
MfG Falko

Code: Alles auswählen

; PureBasic Visual Designer v3.90 build 1360


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Text_0
  #Text_1
  #String_0
  #Text_2
  #String_1
  #String_2
  #Text_4
  #CheckBox_0
  #Text_5
  #Text_6
  #String_3
  #Button_1
  #Button_2
  #Text_7
  #Text_8
  #Text_9
  #String_4
  #Text_10
EndEnumeration

;- Fonts
;
Global FontID1
FontID1 = LoadFont(1, "Arial", 14)
Global FontID2
FontID2 = LoadFont(2, "Arial", 8, #PB_Font_Bold)
Global VorgabeZeit.f
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 360, 19, 351, 262, #PB_Window_SizeGadget | #PB_Window_TitleBar , "Akkordberechnung created by Falko")
    If CreateGadgetList(WindowID())
      TextGadget(#Text_0, 80, 10, 190, 29, "Akkordrechner", #PB_Text_Center | #PB_Text_Border)
      SetGadgetFont(#Text_0, FontID1)
      TextGadget(#Text_1, 30, 60, 68, 20, "Vorgabezeit")
      SetGadgetFont(#Text_1, FontID2)
      StringGadget(#String_0, 38, 80, 50, 20, "")
      TextGadget(#Text_2, 140, 60, 58, 14, "Anz. Teile")
      SetGadgetFont(#Text_2, FontID2)
      StringGadget(#String_1, 135, 80, 60, 20, "")
      StringGadget(#String_2, 230, 80, 32, 20, "75")
      TextGadget(#Text_4, 230, 59, 82, 14, "Akkord-Faktor")
      SetGadgetFont(#Text_4, FontID2)
      CheckBoxGadget(#CheckBox_0, 91, 111, 14, 15, "")
      TextGadget(#Text_5, 40, 111, 41, 13, "Rüsten")
      SetGadgetFont(#Text_5, FontID2)
      TextGadget(#Text_6, 32, 150, 227, 14, "Ausgabe in std. bei 75 min. Verrechnung:")
      SetGadgetFont(#Text_6, FontID2)
      StringGadget(#String_3, 264, 147, 46, 20, "")
      ButtonGadget(#Button_1, 40, 180, 120, 50, "Berechnen")
      SetGadgetFont(#Button_1, FontID1)
      ButtonGadget(#Button_2, 200, 180, 110, 50, "Beenden")
      SetGadgetFont(#Button_2, FontID1)
      TextGadget(#Text_7, 93, 88, 20, 13, "min.")
      TextGadget(#Text_8, 270, 87, 19, 13, "min.")
      TextGadget(#Text_9, 166, 111, 47, 15, "Rüstzeit")
      SetGadgetFont(#Text_9, FontID2)
      StringGadget(#String_4, 220, 104, 42, 20, "")
      TextGadget(#Text_10, 270, 110, 19, 14, "min.")
      
    EndIf
  EndIf
EndProcedure

Procedure.s rechne(Vorgabe.f, Anz_Teile, Faktor, Ruestzeit,Checked)
   If Checked=0
      Ergebnis.f=(Vorgabe*Anz_Teile)/Faktor
      Debug Ergebnis
   Else
      Ergebnis.f=((Vorgabe*Anz_Teile)+Ruestzeit)/Faktor
   EndIf
   ProcedureReturn StrF(Ergebnis,2)
EndProcedure

;------- Mainfile
Open_Window_0()

Repeat
  
  Event = WaitWindowEvent()
  
  If Event = #PB_EventGadget
    
    ;Debug "WindowID: " + Str(EventWindowID())
    
    GadgetID = EventGadgetID()
    
    If GadgetID = #String_0
      ;Debug "GadgetID: #String_0"
      VorgabeZeit = ValF(GetGadgetText(#String_0))
    ElseIf GadgetID = #String_1
      ;Debug "GadgetID: #String_1"
      Anz_Teile = Val(GetGadgetText(#String_1))
    ElseIf GadgetID = #String_2
      ;Debug "GadgetID: #String_2"
      Faktor = Val(GetGadgetText(#String_2))
    ElseIf GadgetID = #CheckBox_0
      ;Debug "GadgetID: #CheckBox_0"
      If GetGadgetState(#Checkbox_0)=1
         Checked=1
      Else
         checked=0
      EndIf
    ElseIf GadgetID = #String_3 ; Da dieses nur für die Ausgabe ist bleibt es hier offen
      ;Debug "GadgetID: #String_3"
      
    ElseIf GadgetID = #Button_1
      ;Debug "GadgetID: #Button_1"
     SetGadgetText(#String_3,rechne(VorgabeZeit, Anz_Teile, Faktor, Ruestzeit,Checked))
    ElseIf GadgetID = #Button_2
      ;Debug "GadgetID: #Button_2"
      End ; Beenden
    ElseIf GadgetID = #String_4 
      ;Debug "GadgetID: #String_4"
      Ruestzeit = Val(GetGadgetText(#String_4))
    EndIf
    
  EndIf
  
Until Event = #PB_EventCloseWindow

End
;
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Peddawing
Beiträge: 3
Registriert: 02.11.2004 18:10
Wohnort: Dortmund

Beitrag von Peddawing »

Hallo Leute.

Ich möchte mich ganz Herzlich für eure Hilfe bedanken.
Anhand der Listings verstehe ich schon mal den einen oder anderen Fehler den ich beim Versuch des umscheibens gemacht habe.
Habe so zumindest einen Anfang auf den ich aufbauen kann.

Gruss aus Dortmund.

Peddawing
Antworten