C/C++ Programmierung

Aufgabe 2

Schreiben Sie ein Programm, welches alle darstellbaren ganzzahligen Potenzen (das sind alle Potenzen, die kleiner als 32768 sind!) einer natürlichen Zahl (>1) (Eingabe mit scanf) ausgibt.

Erzeugen Sie die Potenzen durch sukzessives Aufmultiplizieren.

Beachten Sie dabei insbesondere die Abbruchbedingung!

Lösung für die Aufgabe

/* Header-Datei einbinden */
#include <stdio.h>

int main(void) /* hier beginnt das Hauptprogramm */
{
  int zahl; /* Variable vom Typ int für die natürliche Zahl */
  int i;    /* Variable vom Typ int für den Zähler */
  int pot;  /* Variable vom Typ int für die Potenz */

  printf("Bitte eine natürliche Zahl eingeben (2-32767): ");
  scanf("%d", &zahl); /* Eingabe vom Benutzer */

  if ((zahl < 2) || (zahl > 32767))
  {                /* Wenn die natürliche Zahl zu klein oder zu groß ist,         */
                   /* dann Fehler anzeigen und Programm mit Returncode 1 beenden. */
                   /* Zahl darf nicht größer als 32767 sein, weil sich sonst      */
                   /* während der Berechnung das Vorzeichen umdrehen kann und es  */
                   /* zu Fehlern kommt!                                           */
    printf("Die eingegebene Zahl ist nicht zulässig!\n");
    return(1);
  }

  i = 0;
  pot = 1;
  while (pot <= (32767 / zahl)) /* Abbruchbedingung */
  {
    printf("%d hoch %d = %d\n", zahl, i, pot); /* Potenz ausgeben */
    pot *= zahl;    /* neue Potenz ist alte Potenz mal der eingegebenen Zahl */
    i++;
  }
  printf("%d hoch %d = %d\n", zahl, i, pot); /* letzte berechnete Potenz ausgeben */

  return(0); /* Das Hauptprogramm gibt am Ende 0 zurück, da kein Fehler aufgetreten ist. */
}


Zurück zur Übersicht