Autor Thema: Eine harte Nuss für alle Tüftler  (Gelesen 7733 mal)

Offline Knodelpa

  • easy god
  • *****
  • Beiträge: 1410
  • I love easy-Forum.net
Eine harte Nuss für alle Tüftler
« am: Februar 17, 2006, 15:32:58 Nachmittag »
Hallo EASY Freunde,
heute habe ich einmal eine harte Nuss zum knacken. Ein Fall beschäftigt mich schon einige Zeit, ohne dass ich eine zufriedenstellende Lösung gefunden hätte.
Ich habe in 4 MD's vier Zählerstände (MD49..MD53). Jetzt muss ich irgendwie rausbekommen welcher der kleinste, der zweit kleinste,... bis hin zum größten ist. Das Ergebnis soll in 4 Bytes gespeichert werden, z.B. 1-4. Dies hört sich zunächst recht einfach an, ist es aber sicherlich nicht  :-\
Es kann sicherlich aber auch nicht sein, dass ich 25 Vergleicher brauche !!

Ich bin hoch gespannt auf Eure Lösungen  ??? ???

 :) ;) :D
Gruß Paul

Offline ThomasD

  • Full Member
  • ***
  • Beiträge: 238
  • Wissen ist Macht, nicht Wissen macht nichts
Re: Eine harte Nuss für alle Tüftler
« Antwort #1 am: Februar 17, 2006, 19:19:31 Nachmittag »
Hi Knodelpa,
was oder wie meinst du mit, ( das Ergebnis soll in 4 Bytes gespeichert werden).
Achtung:
Lesen gefährdet ihre Gesundheit.

Offline Martin_

  • Full Member
  • ***
  • Beiträge: 274
  • Alle Macht dem Pinguin
Re: Eine harte Nuss für alle Tüftler
« Antwort #2 am: Februar 17, 2006, 19:42:11 Nachmittag »
Hallo Paul

zum Vergleich der Werte braucht man nur 6 Vergleicher. Wofür brauchst du soviele? ???

Zum Auswerten der Vergleicher brauche ich dann noch 32 Zeilen Code.
Siehe Beispiel.

Anstelle der Merker 1 bis 28 kanst du auch mit einem DB-Datenbaustein einem Merkerbyte den entsprchenden Wert (1 bis 4) zuweisen.

Als Zählerstände habe ich die Analogeingänge genommen, damit ich das Programm einfacher testen kann.

Das einzigzt Proplem ist wenn mehrere Eingangsvariablen den gleichen Wert haben.

Martin
Für die Richtigkeit der Beispiele wird keine Gewähr übernommen.
Für Schäden, die durch Verwendung der Beispiele entstehen, wird keine Haftung übernommen.

Offline Knodelpa

  • easy god
  • *****
  • Beiträge: 1410
  • I love easy-Forum.net
Re: Eine harte Nuss für alle Tüftler
« Antwort #3 am: Februar 17, 2006, 20:00:24 Nachmittag »
Hallo ThomasD,
ich möchte in den 4 Ergenisbyte die Reihenfolge der Werte stehen haben.
z.B. 1,2,3,4 oder 3,1,4,2,

 :) ;) :D
Gruß Paul

Offline Knodelpa

  • easy god
  • *****
  • Beiträge: 1410
  • I love easy-Forum.net
Re: Eine harte Nuss für alle Tüftler
« Antwort #4 am: Februar 17, 2006, 20:08:28 Nachmittag »
Hallo Martin,

super ich bin beeindruckt. Mal sehen ob es mit weniger Zeilen geht.
Die Gleichheit muss allerdings auch zu einem Ergebnis führen  >:(
Zeit spielt übrigends keine Rolle !!! Die Auswertung kann ruhig etwas Zeit in Anspruch nehmen.

 :) ;) :D
Gruß Paul

Offline Martin_

  • Full Member
  • ***
  • Beiträge: 274
  • Alle Macht dem Pinguin
Re: Eine harte Nuss für alle Tüftler
« Antwort #5 am: Februar 17, 2006, 20:39:51 Nachmittag »
Hallo Paul

ich habe das Programm etwas überarbeitet.

Ergeniss in Merkerbyte 60, 61, 62, 63. Bei gleichen Eingangswerten wird die vorherige Position beibehalten. Teste doch ob es deinen Bedürfnissen entspricht.

Erst wolte ich MD10 auswerten, aber dazu ist mir nichts eingefallen. Da könte ich genauso gut MB 1, 2, 3 und 4 benutzen.

Man kann natürlich auch noch den EQ-Ausgang der Vergleicher einarbeiten.

Martin
« Letzte Änderung: Februar 17, 2006, 20:52:34 Nachmittag von Martin_ »
Für die Richtigkeit der Beispiele wird keine Gewähr übernommen.
Für Schäden, die durch Verwendung der Beispiele entstehen, wird keine Haftung übernommen.

Offline Knodelpa

  • easy god
  • *****
  • Beiträge: 1410
  • I love easy-Forum.net
Re: Eine harte Nuss für alle Tüftler
« Antwort #6 am: Februar 17, 2006, 20:50:31 Nachmittag »
Hallo Martin,

das Programm fehlt  :'(

Gruß Paul

Offline Martin_

  • Full Member
  • ***
  • Beiträge: 274
  • Alle Macht dem Pinguin
Re: Eine harte Nuss für alle Tüftler
« Antwort #7 am: Februar 17, 2006, 20:54:08 Nachmittag »
Hallo Paul

kleiner Fehler von mir. :-[  :'(
Schon geändert. 8)

Martin
Für die Richtigkeit der Beispiele wird keine Gewähr übernommen.
Für Schäden, die durch Verwendung der Beispiele entstehen, wird keine Haftung übernommen.

Offline Knodelpa

  • easy god
  • *****
  • Beiträge: 1410
  • I love easy-Forum.net
Re: Eine harte Nuss für alle Tüftler
« Antwort #8 am: Februar 17, 2006, 21:06:27 Nachmittag »
Hallo Martin,
das kommt dem Ziel recht nahe. Ich denke aber es muss doch eigentlich viel einfacher gehen, Zeit spielt fast keine Rolle.
Ich zermatere mir schon Tage den Kopf  ??? ??? :'( :'(
- Gibt es vielleicht eine Lösung in einer Schleife ?
- indirekte Adressierung mit BT ?
- einfach Zählen bis alle gleich ?
- Sortieren durch Tauschen ?
- Schieberegister, Multiplexer, Tabelle ?

 ??? ??? ??? ??? ??? ??? ??? ???
Gruß Paul

Offline Hansi

  • Jr. Member
  • **
  • Beiträge: 43
    • Boehling's 80C32 Control Computer, Amstrad NC100, Casio PB1000 website
Re: Eine harte Nuss für alle Tüftler - Bubblesort
« Antwort #9 am: Februar 18, 2006, 01:18:50 Vormittag »
Hallo Paul!

Ich habe mal den Bubblesort (Sortieren durch Tauschen) für die easy800 versucht. Verbraucht nur drei Vergleicher! Ist es das was Du suchst?

@Martin: Leider kann ich Dein Programm nicht öffnen, ich bekomme immer die Fehlermeldung: Basisgerät nicht verfügbar! ???

Gruß Hansi
« Letzte Änderung: Februar 18, 2006, 13:09:45 Nachmittag von Hansi »

Offline Knodelpa

  • easy god
  • *****
  • Beiträge: 1410
  • I love easy-Forum.net
Re: Eine harte Nuss für alle Tüftler
« Antwort #10 am: Februar 18, 2006, 10:57:23 Vormittag »
Hallo Hansi,

auch eine tolle Lösung. Schade das es kein Swap Baustein gibt, so braucht man doch recht viele DB's. Was jetzt leider noch fehlt ist das Ergebnis. In vier Bytes sollte stehen welcher Wert der kleinste, z.B. 1,
...., der größte z.B.4 steht. Es sollte auch dann ein Ergebnis geben, wenn alle Werte gleich sind. Wie ich schon sagte, etwas zum tüfteln  :o :o

 :) ;) :D
Gruß Paul


Offline Knodelpa

  • easy god
  • *****
  • Beiträge: 1410
  • I love easy-Forum.net
Re: Eine harte Nuss für alle Tüftler
« Antwort #11 am: Februar 18, 2006, 10:58:51 Vormittag »
Hallo Hansi,
Hallo Martin,

eure Lösungen kommen meinem Ziel schon recht nahe  :D

Gruß Paul

Offline Hansi

  • Jr. Member
  • **
  • Beiträge: 43
    • Boehling's 80C32 Control Computer, Amstrad NC100, Casio PB1000 website
Re: Eine harte Nuss für alle Tüftler
« Antwort #12 am: Februar 18, 2006, 13:08:44 Nachmittag »
Hallo Paul!

In meinem Programm werden die Werte ja in absteigender Größe in die MD51 bis MD54 sortiert. Wenn Du wissen möchtest von welchem Analogeingang sie sind, mußt Du nur vor dem sortieren den Wert 1 bis 4 in das betreffende niederwertigste Byte der MD51 bis MD54 schreiben.  Wertgleichheit ist für Bubblesort kein Problem, wie Du leicht ausprobieren kannst. Wird die Nummer des Analogeingangs in die MD`s geschrieben wird bei Wertgleichheit natürlich der Analogeingang berücksichtigt - Ist doch auch ein Vorteil.
Dabei gehen natürlich diese Bytes für den Meßwert verloren! Sonnst könntest Du nur zu den MD51 bis MD54 korespondierende Bytes (Zeiger) verwenden und diese mitsortieren. Dabei brauchst Du natürlich noch mehr DB`s und das Ganze wird etwas größer, aber wenn man es braucht! ;D

Gruß Hansi

Offline Martin_

  • Full Member
  • ***
  • Beiträge: 274
  • Alle Macht dem Pinguin
Re: Eine harte Nuss für alle Tüftler
« Antwort #13 am: Februar 18, 2006, 18:36:12 Nachmittag »

@Martin: Leider kann ich Dein Programm nicht öffnen, ich bekomme immer die Fehlermeldung: Basisgerät nicht verfügbar! ???

Gruß Hansi

Hallo Hansi

Ich habe das Programm mit EASY-Soft Pro Ver 5.11 geschrieben.
Als Gerät habe ich ein MFD-80-B+CP8-NT+TA-17 verwendet.

Im Anhang das Proramm als PDF-Ausduck.

Martin
« Letzte Änderung: Februar 18, 2006, 19:12:25 Nachmittag von Martin_ »
Für die Richtigkeit der Beispiele wird keine Gewähr übernommen.
Für Schäden, die durch Verwendung der Beispiele entstehen, wird keine Haftung übernommen.

Offline Hansi

  • Jr. Member
  • **
  • Beiträge: 43
    • Boehling's 80C32 Control Computer, Amstrad NC100, Casio PB1000 website
Re: Harte Nuss? Ist doch easy - easy800!
« Antwort #14 am: Februar 18, 2006, 21:58:40 Nachmittag »
Hallo Martin!

Sowas habe ich mir auch schon gedacht. Kannst du das Programm nicht für die easy800 abspeichern? Ich habe leider nicht die Pro Version und so kann ich es leider nicht ausprobieren.  :'(

@Paul: Ja so ein Swap-Baustein wäre nicht schlecht, genauso wie ein Shift-Baustein oder ein Baustein mit dem sich die Uhr stellen ließe! ;D

Gruß Hansi
« Letzte Änderung: Februar 18, 2006, 22:24:44 Nachmittag von Hansi »