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
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.
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.