Lerne und übe ABAP – Armstrong-Nummern

Lerne und übe ABAP. In der ABAP-Übung „Armstrong Numbers“ implementierst Du ein ABAP-Programm, um festzustellen, ob eine Zahl eine Armstrong-Zahl ist. Es gibt 40 geniale ABAP Übungen auf exercism. Du kannst diese Übung entweder in Deinem SAP-System ausprobieren oder Dich kostenlos auf der Plattform anmelden und die Übung absolvieren. Du kannst Dir sogar Lösungen von anderen Nutzen ansehen und dadurch Deine Lösung vergleichen.

Aufgabenstellung

Eine Armstrong-Zahl ist eine Zahl, die sich aus der Summe ihrer einzelnen Ziffern ergibt, die jeweils mit der Anzahl der Ziffern potenziert werden.

Zum Beispiel:

  • 9 ist eine Armstrong-Zahl, denn 9 = 9^1 = 9
  • 10 ist keine Armstrong-Zahl, weil 10 != 1^2 + 0^2 = 1
  • 153 ist eine Armstrong-Zahl, weil: 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
  • 154 ist keine Armstrong-Zahl, weil: 154 != 1^3 + 5^3 + 4^3 = 1 + 125 + 64 = 190

Schreibe einen Code, um festzustellen, ob eine Zahl eine Armstrong-Zahl ist.

Beispiel Programmierung

CLASS zcl_armstrong_numbers DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.

    METHODS is_armstrong_number IMPORTING num           TYPE i
                                RETURNING VALUE(result) TYPE abap_bool.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.



CLASS zcl_armstrong_numbers IMPLEMENTATION.
  METHOD is_armstrong_number.
    "Implement solution
    DATA lv_text TYPE string.
    DATA lv_total TYPE i.
    DATA lv_offset TYPE i.
    lv_text = num.
    DATA(lv_count) = strlen( condense( val = lv_text ) ).
    DO lv_count TIMES.
      DATA(lv_num) = lv_text+lv_offset(1).
      lv_total += lv_num ** lv_count.
      lv_offset += 1.
    ENDDO.

    result = COND #(
      WHEN lv_total EQ num
        THEN abap_true
      ELSE abap_false  ).
  ENDMETHOD.
ENDCLASS.

Erklärung

Die Methode is_armstrong_number ist eine öffentliche Methode der Klasse zcl_armstrong_numbers. Sie nimmt einen Eingabeparameter num vom Typ „i“ (Integer) entgegen und gibt das Ergebnis als result vom Typ abap_bool zurück.

Innerhalb der Methode wird zunächst die Eingabezahl in einen String umgewandelt und die Länge des Strings bestimmt. Anschließend wird jede Ziffer des Strings in eine separate Zahl umgewandelt und deren Potenzen berechnet, wobei die Potenz jeweils so groß ist wie die Anzahl der Ziffern des Strings. Die berechneten Potenzen werden dann addiert, um das Ergebnis zu erhalten.

Schließlich wird geprüft, ob das Ergebnis gleich der Eingabezahl ist. Ist dies der Fall, wird das Ergebnis auf abap_true gesetzt, andernfalls auf abap_false.

Über den Autor

Andreas Geiger

Mein Name ist Andreas Geiger und ich bin ein erfahrener Senior SAP Berater. Mit mehr als 10 Jahren Berufserfahrung habe ich mehrere SAP-Projekte erfolgreich abgeschlossen und umfangreiche Kenntnisse in verschiedenen Bereichen wie SAP FI, SAP MM und ABAP erworben. Nun möchte ich mein Wissen mit Dir teilen, um Dir einen Mehrwert zu bieten und Dich bei Deiner täglichen Arbeit mit dem SAP-System zu unterstützen.

Mehr zu ERP UP

ERP UP unterstützen

Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.

Schreibe einen Kommentar