Perfekte Quadratzahl bestimmen

C++C++Beginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Labyrinth (Lab) lernen Sie, wie Sie in C++ feststellen können, ob eine gegebene Zahl eine perfekte Quadratzahl ist. Eine perfekte Quadratzahl ist eine Zahl, die als Produkt einer ganzen Zahl mit sich selbst ausgedrückt werden kann. Beispielsweise sind 1, 4, 9, 16 und 25 perfekte Quadratzahlen, da sie als 1×1, 2×2, 3×3, 4×4 bzw. 5×5 ausgedrückt werden können.

Wir werden ein C++-Programm erstellen, das die sqrt()-Funktion aus der Standardbibliothek verwendet, um die Quadratwurzel einer Zahl zu berechnen und zu bestimmen, ob es sich um eine perfekte Quadratzahl handelt. In diesem Labyrinth werden Sie mit grundlegenden C++-Programmierkonzepten vertraut gemacht, einschließlich Funktionen, bedingten Anweisungen und mathematischen Operationen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/StandardLibraryGroup(["Standard Library"]) cpp/BasicsGroup -.-> cpp/data_types("Data Types") cpp/BasicsGroup -.-> cpp/operators("Operators") cpp/ControlFlowGroup -.-> cpp/conditions("Conditions") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/user_input("User Input") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/StandardLibraryGroup -.-> cpp/math("Math") subgraph Lab Skills cpp/data_types -.-> lab-96130{{"Perfekte Quadratzahl bestimmen"}} cpp/operators -.-> lab-96130{{"Perfekte Quadratzahl bestimmen"}} cpp/conditions -.-> lab-96130{{"Perfekte Quadratzahl bestimmen"}} cpp/output -.-> lab-96130{{"Perfekte Quadratzahl bestimmen"}} cpp/user_input -.-> lab-96130{{"Perfekte Quadratzahl bestimmen"}} cpp/files -.-> lab-96130{{"Perfekte Quadratzahl bestimmen"}} cpp/math -.-> lab-96130{{"Perfekte Quadratzahl bestimmen"}} end

Erstellen einer neuen C++-Datei und Einbinden der erforderlichen Bibliotheken

In diesem Schritt werden wir eine neue C++-Datei erstellen und die erforderlichen Bibliotheken für unser Programm einbinden.

Zunächst erstellen wir eine neue Datei namens main.cpp im Projektverzeichnis:

  1. Klicken Sie im WebIDE auf das Explorer-Symbol in der linken Seitenleiste.
  2. Klicken Sie mit der rechten Maustaste auf den Ordner project und wählen Sie "Neue Datei".
  3. Benennen Sie die Datei main.cpp und drücken Sie die Eingabetaste.

Jetzt fügen wir die erforderlichen Bibliotheken zu unserem Programm hinzu. Wir benötigen zwei Hauptbibliotheken:

  • iostream: Diese Bibliothek bietet Funktionen für Ein- und Ausgabeoperationen.
  • cmath: Diese Bibliothek enthält mathematische Funktionen, einschließlich der sqrt()-Funktion, die wir verwenden werden.

Fügen Sie den folgenden Code in Ihre main.cpp-Datei ein:

#include <iostream>
#include <cmath>

using namespace std;

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    // We will add more code here in the next steps

    return 0;
}

Dieser Code:

  • Bindet die erforderlichen Bibliotheken ein.
  • Nutzt den namespace std, um nicht std:: vor Standardbibliotheksfunktionen schreiben zu müssen.
  • Erstellt eine grundlegende main()-Funktion, die eine Willkommensnachricht anzeigt.
  • Gibt 0 zurück, um anzuzeigen, dass das Programm erfolgreich ausgeführt wurde.

Speichern Sie Ihre Datei, indem Sie Strg+S drücken oder im Menü "Datei > Speichern" auswählen.

Implementierung der Funktion zur Überprüfung auf perfekte Quadratzahlen

Jetzt werden wir eine Funktion erstellen, die feststellt, ob eine Zahl eine perfekte Quadratzahl ist. Eine perfekte Quadratzahl hat eine ganzzahlige Quadratwurzel. Beispielsweise ist 16 eine perfekte Quadratzahl, weil seine Quadratwurzel genau 4 ist.

Fügen Sie die folgende Funktion über der main()-Funktion in Ihrer main.cpp-Datei hinzu:

bool isPerfectSquare(int number) {
    // Calculate the square root of the number
    double squareRoot = sqrt(number);

    // Convert the square root to an integer
    int intSquareRoot = static_cast<int>(squareRoot);

    // A number is a perfect square if squaring its integer square root gives the original number
    return (intSquareRoot * intSquareRoot == number);
}

Lassen Sie uns verstehen, wie diese Funktion funktioniert:

  1. Die Funktion nimmt einen ganzzahligen Parameter number entgegen und gibt einen booleschen Wert (true oder false) zurück.
  2. Wir verwenden die sqrt()-Funktion aus der cmath-Bibliothek, um die Quadratwurzel der eingegebenen Zahl zu berechnen.
  3. Wir konvertieren die Quadratwurzel in eine Ganzzahl mit static_cast<int>(), wodurch jeglicher Dezimalanteil entfernt wird.
  4. Wenn die Zahl eine perfekte Quadratzahl ist, dann ergibt die Multiplikation der ganzzahligen Quadratwurzel mit sich selbst die ursprüngliche Zahl.
  5. Die Funktion gibt true zurück, wenn die Zahl eine perfekte Quadratzahl ist, und false sonst.

Beispiel:

  • Für die Zahl 16:
    • sqrt(16) = 4.0
    • Die Konvertierung von 4.0 in eine Ganzzahl ergibt 4
    • 4 × 4 = 16, was der ursprünglichen Zahl entspricht, also ist 16 eine perfekte Quadratzahl.
  • Für die Zahl 10:
    • sqrt(10) ≈ 3.16227766
    • Die Konvertierung von 3.16227766 in eine Ganzzahl ergibt 3
    • 3 × 3 = 9, was nicht der ursprünglichen Zahl entspricht, also ist 10 keine perfekte Quadratzahl.

Ihr bisheriger vollständiger Code sollte wie folgt aussehen:

#include <iostream>
#include <cmath>

using namespace std;

bool isPerfectSquare(int number) {
    // Calculate the square root of the number
    double squareRoot = sqrt(number);

    // Convert the square root to an integer
    int intSquareRoot = static_cast<int>(squareRoot);

    // A number is a perfect square if squaring its integer square root gives the original number
    return (intSquareRoot * intSquareRoot == number);
}

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    // We will add more code here in the next step

    return 0;
}

Speichern Sie Ihre Datei, bevor Sie mit dem nächsten Schritt fortfahren.

Vervollständigung der Hauptfunktion mit Benutzer-Eingabe und -Ausgabe

Jetzt erweitern wir die main()-Funktion so, dass sie:

  1. Den Benutzer auffordert, eine Zahl einzugeben
  2. Die Eingabe des Benutzers erhält
  3. Unsere isPerfectSquare()-Funktion verwendet, um zu prüfen, ob die Zahl eine perfekte Quadratzahl ist
  4. Eine entsprechende Nachricht basierend auf dem Ergebnis anzeigt

Aktualisieren Sie Ihre main()-Funktion mit dem folgenden Code:

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    int userNumber;

    // Prompt the user to enter a number
    cout << "Please enter a positive integer: ";
    cin >> userNumber;

    // Check if the entered number is a perfect square
    if (isPerfectSquare(userNumber)) {
        int squareRoot = static_cast<int>(sqrt(userNumber));
        cout << "\nThe number " << userNumber << " is a perfect square!" << endl;
        cout << "It is equal to " << squareRoot << " × " << squareRoot << endl;
    } else {
        cout << "\nThe number " << userNumber << " is not a perfect square." << endl;
    }

    cout << "\nThank you for using the Perfect Square Checker Program!\n" << endl;

    return 0;
}

Lassen Sie uns verstehen, was dieser Code tut:

  1. Wir deklarieren eine Ganzzahlvariable userNumber, um die Eingabe des Benutzers zu speichern.
  2. Wir fordern den Benutzer auf, eine positive Ganzzahl einzugeben, indem wir cout verwenden.
  3. Wir lesen die Eingabe des Benutzers mit cin und speichern sie in userNumber.
  4. Wir rufen unsere isPerfectSquare()-Funktion auf, wobei userNumber als Argument übergeben wird.
  5. Wenn die Zahl eine perfekte Quadratzahl ist:
    • Wir berechnen ihre Quadratwurzel und speichern sie in squareRoot.
    • Wir zeigen eine Nachricht an, die darauf hinweist, dass die Zahl eine perfekte Quadratzahl ist.
    • Wir zeigen an, welche zwei identischen Ganzzahlen multipliziert werden müssen, um die ursprüngliche Zahl zu erhalten.
  6. Wenn die Zahl keine perfekte Quadratzahl ist:
    • Wir zeigen eine Nachricht an, die darauf hinweist, dass die Zahl keine perfekte Quadratzahl ist.
  7. Schließlich zeigen wir eine Dankesnachricht an und verlassen die main()-Funktion.

Ihr vollständiges Programm sollte jetzt wie folgt aussehen:

#include <iostream>
#include <cmath>

using namespace std;

bool isPerfectSquare(int number) {
    // Calculate the square root of the number
    double squareRoot = sqrt(number);

    // Convert the square root to an integer
    int intSquareRoot = static_cast<int>(squareRoot);

    // A number is a perfect square if squaring its integer square root gives the original number
    return (intSquareRoot * intSquareRoot == number);
}

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    int userNumber;

    // Prompt the user to enter a number
    cout << "Please enter a positive integer: ";
    cin >> userNumber;

    // Check if the entered number is a perfect square
    if (isPerfectSquare(userNumber)) {
        int squareRoot = static_cast<int>(sqrt(userNumber));
        cout << "\nThe number " << userNumber << " is a perfect square!" << endl;
        cout << "It is equal to " << squareRoot << " × " << squareRoot << endl;
    } else {
        cout << "\nThe number " << userNumber << " is not a perfect square." << endl;
    }

    cout << "\nThank you for using the Perfect Square Checker Program!\n" << endl;

    return 0;
}

Speichern Sie Ihre Datei, bevor Sie mit dem nächsten Schritt fortfahren.

Kompilieren und Testen des Programms

Nachdem wir unser C++-Programm fertiggestellt haben, ist es Zeit, es zu kompilieren und auszuführen. Das Kompilieren wandelt unseren menschenlesbaren Code in ein maschinenausführbares Programm um.

Das Programm kompilieren

Öffnen Sie ein Terminal im WebIDE, indem Sie auf "Terminal" im Menü klicken und "Neues Terminal" auswählen.

Navigieren Sie im Terminal zum Projektverzeichnis:

cd ~/project

Kompilieren Sie das Programm mit dem g++-Compiler:

g++ main.cpp -o perfect_square_checker

Dieser Befehl teilt dem Compiler mit:

  • Die Quelldatei main.cpp zu nehmen
  • Sie in ein ausführbares Programm namens perfect_square_checker zu kompilieren

Wenn die Kompilierung erfolgreich ist, sehen Sie keine Ausgabe. Wenn es Fehler gibt, lesen Sie die Fehlermeldungen, beheben Sie die Probleme in Ihrem Code und versuchen Sie es erneut, das Programm zu kompilieren.

Das Programm ausführen

Nach erfolgreicher Kompilierung des Programms führen Sie es aus, indem Sie Folgendes eingeben:

./perfect_square_checker

Das Programm startet und fordert Sie auf, eine positive Ganzzahl einzugeben.

Mit verschiedenen Eingaben testen

Lassen Sie uns unser Programm mit verschiedenen Eingaben testen, um sicherzustellen, dass es korrekt funktioniert:

Testfall 1: Eine perfekte Quadratzahl

Geben Sie 16 ein, wenn Sie dazu aufgefordert werden. Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Please enter a positive integer: 16

The number 16 is a perfect square!
It is equal to 4 × 4

Thank you for using the Perfect Square Checker Program!

Testfall 2: Keine perfekte Quadratzahl

Führen Sie das Programm erneut aus und geben Sie 10 ein, wenn Sie dazu aufgefordert werden. Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Please enter a positive integer: 10

The number 10 is not a perfect square.

Thank you for using the Perfect Square Checker Program!

Testfall 3: Eine andere perfekte Quadratzahl

Führen Sie das Programm erneut aus und geben Sie 25 ein, wenn Sie dazu aufgefordert werden. Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Please enter a positive integer: 25

The number 25 is a perfect square!
It is equal to 5 × 5

Thank you for using the Perfect Square Checker Program!

Durch das Testen mit verschiedenen Eingaben können Sie sich vergewissern, dass Ihr Programm korrekt zwischen perfekten Quadratzahlen und nicht-perfekten Quadratzahlen unterscheidet.

Herzlichen Glückwunsch! Sie haben erfolgreich ein C++-Programm erstellt, das feststellt, ob eine Zahl eine perfekte Quadratzahl ist.

Zusammenfassung

In diesem Lab haben Sie erfolgreich ein C++-Programm erstellt, das feststellt, ob eine Zahl eine perfekte Quadratzahl ist. Lassen Sie uns zusammenfassen, was Sie erreicht haben:

  1. Sie haben gelernt, wie man notwendige Bibliotheken in ein C++-Programm einbindet:

    • iostream für Ein- und Ausgabeoperationen
    • cmath für mathematische Funktionen wie sqrt()
  2. Sie haben die isPerfectSquare()-Funktion implementiert, die einen mathematischen Ansatz verwendet, um zu bestimmen, ob eine Zahl eine perfekte Quadratzahl ist:

    • Berechnen Sie die Quadratwurzel der Zahl.
    • Prüfen Sie, ob das Quadrat des ganzzahligen Teils der Quadratwurzel der ursprünglichen Zahl entspricht.
  3. Sie haben in der main()-Funktion eine benutzerfreundliche Schnittstelle erstellt, die:

    • Den Benutzer auffordert, eine Zahl einzugeben
    • Die isPerfectSquare()-Funktion verwendet, um zu prüfen, ob die Zahl eine perfekte Quadratzahl ist
    • Eine entsprechende Nachricht basierend auf dem Ergebnis anzeigt
  4. Sie haben Ihr Programm mit verschiedenen Eingaben kompiliert und getestet, um seine Funktionalität zu überprüfen.

Durch dieses Lab haben Sie praktische Erfahrung mit mehreren wichtigen C++-Programmierkonzepten gesammelt:

  • Erstellen und Aufrufen von Funktionen
  • Verwenden von bedingten Anweisungen (if-else)
  • Arbeiten mit Benutzer-Eingabe und -Ausgabe
  • Durchführen von Typkonvertierungen
  • Verwenden von mathematischen Funktionen aus der Standardbibliothek
  • Kompilieren und Ausführen eines C++-Programms

Sie können dieses Programm weiter verbessern, indem Sie Funktionen hinzufügen, wie z. B.:

  • Eingabevalidierung, um sicherzustellen, dass der Benutzer eine positive Ganzzahl eingibt
  • Die Möglichkeit, mehrere Zahlen zu prüfen, ohne das Programm neu zu starten
  • Finden der nächsten perfekten Quadratzahl zu einer nicht-perfekten Quadratzahl

Indem Sie diese grundlegenden Konzepte weiter üben und erweitern, werden Sie stärkere C++-Programmierfähigkeiten entwickeln, die Sie auf komplexere Probleme anwenden können.