- 3D-Druck Einstieg und Tipps         
Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 46

Thema: Zahl in Ziffern zerlegen

  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.07.2005
    Ort
    127.0.0.1
    Alter
    32
    Beiträge
    824
    Anzeige

    Powerstation Test
    Hallo
    Danke Digitali für das Beispiel.
    Auch wenn dass für euch ein bisschen nervig ist, leider habe ich nicht sehr viel Ahnung von Basic, darum frage ich so viel.

    Nur zur Kontrolle ob ich denn Code von Digitali richtig verstanden habe:
    Zahl_String = Anfangs Zahl, nachher String Zahl
    LZ = Länge der Zahl
    EZ(A) = Einzelne Zeichen
    Ew(a) = Endgültige Ziffer

    Zahl ist meine ZAhl
    Zahl_String muss ich als String definieren?
    Lz muss ich als Integer definieren?
    Ez ebenso?
    Ew auch als Integer?

    Stimmt das?

    Wenn ich jetzt Zahl_String als String definiere, dann muss man da noch “* (eine Zahl)“ eingeben, für was ist dass? Was muss ich beim obigem Beispiel einstellen?

    Wenn ich nun alles so wie oben eingestellt habe, dann meldet Bascom 3 Fehler:
    EZ(a) = Mid( Zahl_String, A , 1) Fehler: String expected for assignment [EZ(A)]
    Ew(a) = val(EZ(a)) Fehler: Variable is not dimensioned as an array [EZ(A)]/[EW(A)]

    Was muss ich ändern, dass diese Fehler verschwinden

    mfg Luca

    Ps: Sorry für die endlose Fragerei.
    Sollte ein Bild von mir nicht angezeigt werden, einfach eine PM schicken!

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.07.2005
    Ort
    127.0.0.1
    Alter
    32
    Beiträge
    824
    @ Lynux 80

    Wie kann ich dann die länge bestimmen? In welcher variabel sind dann meine Zahlen?

    @Bruno Pisarek

    Kann ich dass so einfach ins Bascom übernehmen? Als was muss ich "A" definieren?

    Also das Beispiel von Bruno Pisarek gefällt mir am besten, da es einfach ist.

    mfg Luca
    Sollte ein Bild von mir nicht angezeigt werden, einfach eine PM schicken!

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.11.2005
    Ort
    QTH: JO43BC
    Alter
    56
    Beiträge
    112
    Nimm das Beispiel von Bruno. Er hat's wesentlich eleganter geloest. :)

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied Avatar von DIYLAB
    Registriert seit
    31.10.2004
    Ort
    Berlin
    Beiträge
    156
    Zitat Zitat von Spion
    Kann ich dass so einfach ins Bascom übernehmen? Als was muss ich "A" definieren?
    Hi Luca,

    ja - ist alles 100% Bascom, ich benutze diese Variante in sehr vielen Projekten. Wenn Du bei 4 Stellen bleibst, dann deklariere alle Variablen als Typ "Word".

    Viele Grüße,
    Bruno

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Nimm das Beispiel von Bruno. Er hat's wesentlich eleganter geloest.
    Wenn Du das so machst, wie der Hanni es beschrieben hat, ist es nicht nur elegant, sondern noch effektiv.

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    16.07.2006
    Alter
    38
    Beiträge
    18
    Zitat Zitat von Bruno Pisarek
    Moin,

    A = 1354

    tausender = A / 1000
    tausender = tausender mod 10
    hunderter = A / 100
    hunderter = hunderter mod 10
    zehner = A / 10
    zehner = zehner mod 10
    einer = A mod 10
    Meiner Meinung nach effizienter müsste folgender Code sein:
    Code:
     
    A = 1354
    einer = A mod 1
    zehner = A mod 10
    zehner = zehner - einer
    hunderter = A mod 100
    hunderter = hunderter - zehner
    tausender = A mod 1000
    tausender = tausender - hunderter
    Eine Division wird im Controller ja nur als mehrfache Subtraktion durchgeführt (behauptet zumindest unser Lehrer), deshalb sollten hier weniger Schritte benötigt werden.
    lg Matthias

  7. #17
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.07.2005
    Ort
    127.0.0.1
    Alter
    32
    Beiträge
    824
    Hallo

    Dann werde ich wohl die variante von Bruno gebrauchen, da sie wie schon erwähnt einfach, elegant und effektiv ist.
    Ich danke hier aber auch allen anderen, die mir helfen wollten =D>

    Eine Frage noch an Bruno, was ist wenn ich es erweiter will auf z.B. 6 Ziffern? Wass muss ich alles abändern?

    mfg Luca
    Sollte ein Bild von mir nicht angezeigt werden, einfach eine PM schicken!

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    16.07.2006
    Alter
    38
    Beiträge
    18
    bei Brunos Lösung wüsste ich es nicht, allerdings bei meiner kann man leicht erweitern, einfach unten
    zehntausender = A mod 10000
    zehntausender = zehntausender - tausender
    usw. anfügen =)
    lg Matthias

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied Avatar von DIYLAB
    Registriert seit
    31.10.2004
    Ort
    Berlin
    Beiträge
    156
    Zitat Zitat von Spion
    Eine Frage noch an Bruno, was ist wenn ich es erweiter will auf z.B. 6 Ziffern? Wass muss ich alles abändern?
    Hi Luca,

    die Prozedur ist so einfach, dass sich eigentlich mehr als 4 Stellen daraus ableiten lassen sollten - oder ?
    Ich bin der Meinung, dass Du auch selbst ein bisschen denken solltest und natürlich probieren!

    Z.B. hat mich das Posting von Sebastian dazu veranlasst, Morgen auch mal die Hanni/Sebastian Version zu probieren. Wenn es ein paar Byte spart - prima! Ist mir nie in den Sinn gekommen..

    Aber in Deinem Fall kommst Du mit meinem leicht zu erweiternden Beispiel auch ressourcenschonend und schnell ans Ziel.

    Viele Grüße,
    Bruno

  10. #20
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Zitat Zitat von Bruno Pisarek
    Moin,

    A = 1354

    tausender = A / 1000
    tausender = tausender mod 10
    hunderter = A / 100
    hunderter = hunderter mod 10
    zehner = A / 10
    zehner = zehner mod 10
    einer = A mod 10

    In den Variablen tausender, hunderter, zehner und einer stehen dann Deine einzelnen Ziffern.

    Viele Grüße,
    Bruno
    Nunja. die Modulo Operatoren wären insofern sehr effektiv, wenn man sie direkt isn duale Zahlensystem übernehem könnte. Kann man aber leider nicht ... daher ist der Code eher sehr ineffizent und langsam.

    Effektiv und Elegant ist es nicht deswegen, weil der Code schön aussieht. Effektiv wird es erst dann, wenn eine Aufgabe mit minimalem Aufwand an Ressourcen erledigt wird. Die Eleganz kommt meiner Meinung nach daher, dieses ganze Gebilde in eine kleinen Subroutine zu verbannen, damit ich sie immer, wann ich sie brauche nutzen kann.

    Sicherlich kann man auf einem PC mit endlos krassen Resourcen derartige Codemonster realisieren (mach ich selbst gerne aber halt in ner Skriptsprache) aber auf einem Microcontroller ist dieses eher fehl am Platz.

    Mir scheint es daher, das das Programmieren in einer Hochsprache zuweilen vergessen lässt, das man nur sehr geringe Ressourcen im µC zur Verfügung hat.

    Zitat Zitat von izaseba
    Wenn Du das so machst, wie der Hanni es beschrieben hat, ist es nicht nur elegant, sondern noch effektiv.
    Danke für die zustimmenden Worte.

    Grüße,

    da Hanni.

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests