| "Autor" |
Hilfe bei vb |
|
|
|
geschrieben am: 28.10.2002 um 10:04 Uhr
|
|
helft mir mal brauch mal hilfe
Ein Land gibt Briefmarken, 5,10, 20, 50 100, 200, 500 heraus. Schreiben sie ein Programm für einen Briefmarkenautomaten, Der Biss zu einer Eingabe von 10000, Brief Marken so ausgibt das es sich immer um die minnimale anzahl .
das hab ich schon :
Option Explicit
Dim i As Integer
Dim cent5, cent10, cent20, cent50, cent100, cent200, cent500 As Integer
Private Sub cmdende_Click()
Unload Me
End Sub
Private Sub cmdNeu_Click()
For i = 1 To 7
txtAusgabe.Text = " "
Next i
txtEingabe.Text = " "
End Sub
Private Sub cmdStart_Click()
Do
End Sub
|
|
|
|
|
|
|
Top
|
| "Autor" |
|
|
|
|
geschrieben am: 28.10.2002 um 11:00 Uhr
|
|
habs nun:
Option Explicit
Dim i As Integer
Dim cent5, cent10, cent20, cent50, cent100, cent200, cent500 As Integer
Dim Geld As Single
Private Sub cmdende_Click()
Unload Me
End Sub
Private Sub cmdNeu_Click()
For i = 1 To 7
txtAusgabe.Text = " "
Next i
txtEingabe.Text = " "
End Sub
Private Sub cmdStart_Click()
Geld = CSng(txtEingabe.Text)
Select Case Geld
Case Is >= 500
Do While Geld >= 500
Geld = Geld - 500
cent500 = cent500 + 1
Loop
Case Is >= 200
Do While Geld >= 200
Geld = Geld - 200
cent200 = cent200 + 1
Loop
Case Is >= 100
Do While Geld >= 100
Geld = Geld - 100
cent100 = cent100 + 1
Loop
Case Is >= 50
Do While Geld >= 50
Geld = Geld - 50
cent50 = cent50 + 1
Loop
Case Is >= 20
Do While Geld >= 20
Geld = Geld - 20
cent20 = cent20 + 1
Loop
Case Is >= 10
Do While Geld >= 10
Geld = Geld - 10
cent10 = cent10 + 1
Loop
Case Is >= 5
Do While Geld >= 5
Geld = Geld - 5
cent5 = cent5 + 1
Loop
End Select
txtAusgabe(7).Text = CStr(cent500)
txtAusgabe(6).Text = CStr(cent200)
txtAusgabe(5).Text = CStr(cent100)
txtAusgabe(4).Text = CStr(cent50)
txtAusgabe(3).Text = CStr(cent20)
txtAusgabe(2).Text = CStr(cent10)
txtAusgabe(1).Text = CStr(cent5)
End Sub
Private Sub Form_Load()
txtEingabe.SelStart = 0
txtEingabe.SelLength = Len(txtEingabe.Text)
End Sub
Private Sub txtEingabe_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57, 44, 8
Case Else
KeyAscii = 0
End Select
End Sub
|
|
|
|
|
|
|
Top
|
| "Autor" |
|
|
|
|
geschrieben am: 28.10.2002 um 12:37 Uhr
|
|
(zitat)#!/usr/bin/perl
my $betrag = int($ARGV[0]);
foreach my $wert(500, 200, 100, 50, 20, 10, 5) {
my $anzahl = int($betrag / $wert);
$betrag -= $anzahl * $wert;
print "$anzahl Briefmarken zu $wert Cent, ";
}
print "und $betrag Cent Wechselgeld.";
exit;(/zitat)
...warum ist VB nur so umständlich? *grinsel*
Tipp an Shaft:
Mit einer for-Schleife würdest Du Dir viel Tippaufwand sparen. foreach ist allerdings perl - ggf. musst Du die Markenwerte erst in ein Array schreiben und dieses dann durchlaufen. Das gäbe Dir auch die Möglichkeit, ganz fix neue Markenwerte zu bestimmen, ohne den gesamten Code umschreiben zu müssen. (Euro-Umstellung lässt grüssen *fg*)
Die Anzahl der Marken durch Division bzw. Division ohne Rest (div) herauszufinden, dürfte imho auch schneller sein als Deine while-Schleifen. Da Dir in VB eigentlich div zur Verfügung stehen sollte, dürfte sich die erste Zeile der perl-Schleife durch (Pseudo-Code!) "Anzahl = Betrag div Wert" ersetzen lassen.
Ach ja... und Wechselgeld gibts nich? *mecker* ;-)
[edit: s/quote/zitat/g;] Geändert am 28.10.2002 um 12:39 Uhr von Brünette22 |
|
|
|
|
|
|
Top
|