VB Problem. Parkplatz und PKW

  • Ich soll Anhand der Räder und der Anzahl der Fahrzeuge sagen können wie viele PKW´s auf dem Parkplatz stehen: Es sind nur Bikes (ohne Beiwagen und Autos da, also nur 4 oder 2 Räder)


    OK soweit so gut. Nach meiner ersten Einarbeitung habe ich beschlossen 2 Textfelder zu machen:
    m für Räderanzahl im folgenden txtm genannt
    n für Fahrzeugeanzahl im folgenden txtn genannt.
    berechnet wird nach Drücken des CommandButtons "cmdBerechnen"
    Ausgabe der PKWanzahl in einem Label lblP


    mein erster Versuch wurde direkt von meine Kollegen belächelt und zerrissen aber ohne Lösungshilfe ;(


    Private Sub cmdBerechne_Click()
    If ((2 * txtN.Text) <= txtM.Text) And txtM.Text <= (4 * txtN.Text) Then
    lblP.Caption = (txtM.Text - 2 * txtN.Text) / 2
    Else
    MsgBox ("M muss gerade UND größer N sein!")
    End If
    End Sub



    Ich habe selbst festgestellt, das da einiges an Bedingungen fehlt, wobei ich allerdings nicht weiß wie ich diese formuliere.
    Zum einen sollten keine Buchstaben eingegeben werden (weil A Räder gibst ja nicht ;))
    Zum anderen darf die Anzahl der Räder nicht ungerade sein (ich dachte das hätte ich gelöst aber 9 Räder und 3 Fahrzeuge geht ;()


    Es müssen mindestens 2 Reifen vorhanden sein (weil 1 Bike = 0 PKW aber 2 Reifen) und es sollten doppelt so viele Reifen mind wie Fahrzeuge da sein. 2 Bikes 4 Reifen.


    Kann ich denn die IF Schleife endlose mit And usw erweitern? Oder lös ich das am einfachsten anders?


    Gruß Dream


    Danke

    There are 2 rules for success...
    1) Never share all of your knowledge

  • das komplett durchzuspielen hab´ ich keine Lust, aber ein paar Tipps kann ich geben ;)


    1.) Prüfung gerade/ungerade:
    Die Modula-Funktion verwenden (gibt den Rest eine Division aus). Wenn man modulo durch 2 teilt, bekommt man bei geraden Zahlen keinen Rest, bei ungeraden Zahlen aber schon. Also kann man z.B. das machen:


    If x Mod 2 = 0 Then
    Msgbox "Das ist eine gerade Zahl."
    EndIf



    2.) nur Zahlen in Textbox eingeben:
    Im KeyPress-Ereignis einer Textbox kann man den Ascii-Code des eingegebenen
    Zeichens abprüfen. Darüber kann man dann regeln, dass z.B. nur Zahlen eingegeben werden dürfen. Das Beispiel lässt nur Zahlen und die Backspace-Taste zu:


    Private Sub txtTest_KeyPress(KeyAscii As Integer)
    If KeyAscii = 8 Then Exit Sub
    If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
    End Sub


    3.) if-then Schleifen
    Die kann man prinzipiell mit endlos vielen AND und OR´s erweitern. Manchmal ist es aber sinnvoller, Mehrfachverzweigungen mit einer Select-Case Anweisung zu bauen.


    Hoffe, das hilft ein wenig weiter.....


    d@niel

  • Du hast kein Problem mit VB. Die notwendigen Befehle kann man ja überall in den Referenzen nachschlagen. Du scheinst zu faul zu sein, das Problem strukturiert anzugehen. Vielleicht fängst du an strukturiert alle notwendigen Bedingungen auf Papier und in Deutsch aufzuschreiben.


    Und mach dir keinen Kopf, wenn du nicht auf Anhieb alle notwendigen Bedingungen findest. Das geht vielen so. Allerdings ist das wichtigste, dass du dich mit dem Problem auseinandersetzt, denn sonst ist der Lerneffekt der Übung genau gleich 0. Es wäre demnach in deinem Sinne, wenn du hier keine Lösung vergekaut bekommst.


    Viel Spaß bei der Aufgabe! :)

    Viele Menschen denken, dass sie denken, wenn sie auch lediglich ihre Vorurteile umorganisieren
    - William James

  • darum ging es eigentlich hier nicht, "popostoepsel". Wenn du selber programmieren könntest und dich im Falle, das du es kannst, an deine Anfangszeiten zurückentsinnen kannst, würdest du vielleicht wissen, das manchmal ein konkreter Tipp oder ein Beispiel mehr wert sind als graue Theorie und Befehls-Referenzen. Natürlich ist es wichtig, sich mit dem Problem auseinanderzusetzen, aber wenn man z.B. nicht weiss, was eine Sprache alles an Funktionen bietet, weiss man auch nicht, wo man suchen soll. Da kann das Problem noch so klar sein.


    d@niel


    P.S. "popostoepsel"! welch ein Nick! ;)

  • Hi,
    speziell in Deinem Fall ergibt sich eine eher simple Rechnung, um die Anzahl der PKWs zu berechnen. (Zwei Gleichungen, zwei Unbekannte)


    Aus der sich ergebenden Rechnung kannst Du sicherlich einfach sehen, was fuer Beziehungen zwischen den Eingangsgroessen gelten muessen, um sinnvolle Ergebnisse zu liefern :) .


    Von VB hab ich (gottlob) keine Ahnung, so dass ich Dir da nur wenig helfen kann, aber in manchen GUI-Sprachen gibts sowas wie "Validatoren", die da viel "automatisch" machen.


    cu
    XlF

  • Hallo,


    es gibt noch eine Möglichkeit zu prüfen, ob die Eingabe numerisch ist oder nicht und zwar mit der Funktion IsNumeric().


    IsNumeric(txtN.Text) liefert dann true bzw. false zurück.


    Gruß, Marco

    Das Tieferlegen der Festplattenköpfe erhöht keineswegs die Zugriffszeit!!

  • Hi,


    Also die Lösung der Aufgabe an sich ist eigentlich ganz simpel.


    Sei,
    m #Räder
    n #Fahrzeuge
    x #Bikes
    y #Autos


    Dann bekommst du 2 Gleichungen:


    I: 4*y+2*x=m
    II: x+y=n


    Da ja m und n bekannt sind, kannst du x und y berechnen.



    Zur Programmierung:


    Wie du testest ob die Eingabe numerisch ist, wurde ja schon gesagt. Ich würde noch testen ob die Eingabe positiv ist und eine integer-Zahl ist.
    Die Graphische Oberfläche hast du ja schon.

    r=3,16 km


    prepaidinfo.de Prepaidtarife, Roamingpreise, Preise und Einstellungen für MMS und WAP, Übernahmeformulare

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!