Informationen zu den Datenschutzerklärungen

Übersetzung von Python zu C++

Übersetzung von Python zu C++

 

  • Zu Aufgabe 1 - Umsetzung der Python-Klasse 'BankAccount' für die Verwaltung von Kontoständen, Einzahlungen und Abhebungen
  • Zu Aufgabe 2 - Einfacher Taschenrechner in C++: Übersetzung der Python-Klasse 'Calculator' mit den Grundrechenarten
  • Zu Aufgabe 3 - Lösung quadratischer Gleichungen
  • Zu Aufgabe 4 - Sichtbarkeit der Bühne
  • Fazit

 

Aufgabe 1: Umsetzung der Python-Klasse 'BankAccount' für die Verwaltung von Kontoständen, Einzahlungen und Abhebungen

Gegeben ist eine Python-Klasse namens "BankAccount", die ein Bankkonto repräsentiert. Die Klasse besitzt eine Konstruktor welche, den Kontostand des Kontos auf 0 setzt. Die Klasse hat ebenfalls Methoden, um den Kontostand abzufragen, Einzahlungen zu tätigen und Abhebungen vorzunehmen. Übersetzen Sie dann diese Klasse in C++ und implementieren Sie die gleiche Funktionalität:

Promt: Übersetze diesen Python Code in C++:

class BankAccount:
    def __init__(self):
        self.balance = 0
    
    def get_balance(self):
        return self.balance
    
    def deposit(self, amount):
        self.balance += amount
    
    def withdraw(self, amount):
        if amount > self.balance:
            raise ValueError("Insufficient balance")
        self.balance -= amount

Ergebnis:

Hier ist der übersetzte C++ Code:

#include <iostream>
using namespace std;

class BankAccount {
private:
    double balance;
public:
    BankAccount() {
        balance = 0;
    }
    double get_balance() {
        return balance;
    }
    void deposit(double amount) {
        balance += amount;
    }
    void withdraw(double amount) {
        if (amount > balance) {
            throw "Insufficient balance";
        }
        balance -= amount;
    }
};
int main() {
    BankAccount account;
    cout << "Initial balance: " << account.get_balance() << endl;
    account.deposit(100);
    cout << "After deposit: " << account.get_balance() << endl;
    account.withdraw(50);
    cout << "After withdrawal: " << account.get_balance() << endl;
    return 0;
}

Der C++ Code definiert eine Klasse "BankAccount", die ähnliche Funktionalität wie die Python-Klasse bereitstellt. Die Klasse hat eine private Variable "balance", die den Kontostand des Bankkontos speichert. Der Konstruktor setzt den Kontostand auf 0. Die Methoden "get_balance", "deposit" und "withdraw" entsprechen den entsprechenden Python-Methoden.

In der "withdraw" Methode wird eine Ausnahme ausgelöst, wenn der Kontostand nicht ausreichend ist, um den angeforderten Betrag abzuheben. Die main-Funktion demonstriert die Verwendung der BankAccount-Klasse durch Erstellen eines Bankkontos, Einzahlen von Geld und Abheben von Geld.

Überprüfung mit converter Python | C++ Converter:

#include <iostream>
using namespace std;

class BankAccount {
    private:
        int balance;
    public:
        BankAccount() {
            balance = 0;
        }
        int get_balance() {
            return balance;
        }
        void deposit(int amount) {
            balance += amount;
        }
        void withdraw(int amount) {
            if (amount > balance) {
                throw "Insufficient balance";
            }
            balance -= amount;

 

Aufgabe 2: Einfacher Taschenrechner in C++: Übersetzung der Python-Klasse 'Calculator' mit den Grundrechenarten

Gegeben ist eine Python-Klasse die einen einfachen Taschenrechner darstellt. Die Klasse besitzt die vier Grundrechenarten (Addition, Subtraktion, Multiplikation und Division). Schreiben Sie eine Übersetzung dieser Klasse in C++.

class Calculator:
    def add(self, a, b):
        return a + b

    def subtract(self, a, b):
        return a - b

    def multiply(self, a, b):
        return a * b

    def divide(self, a, b):
        if b == 0:

Promt: Übersetze diesen Python Code in C++:

class Calculator:
    def add(self, a, b):
        return a + b

    def subtract(self, a, b):
        return a - b

    def multiply(self, a, b):
        return a * b

    def divide(self, a, b):
        if b == 0:
            raise ValueError("Division by zero is not allowed")
        return a / b

Ergebnis:

Hier ist eine Übersetzung der Python-Klasse Calculator in C++:

class Calculator:
    def add(self, a, b):
        return a + b

    def subtract(self, a, b):
        return a - b

    def multiply(self, a, b):
        return a * b

    def divide(self, a, b):
        if b == 0:
            raise ValueError("Division by zero is not allowed")
        return a / b

In C++ wird die throw-Anweisung verwendet, um eine Ausnahme zu erzeugen, wenn die Division durch Null aufgerufen wird. Die Ausnahme wird durch die Klasse std::invalid_argument dargestellt, die in der stdexcept-Bibliothek definiert ist.

Beachte, dass in C++ Methoden standardmäßig nicht virtual sind. Wenn Sie Polymorphismus in Ihrer Klasse verwenden möchten, sollten Sie die Methoden als virtual deklarieren.

Überprüfung mit converter Python | C++ Converter:

class Calculator {
public:
    double add(double a, double b) {
        return a + b;
    }
    double subtract(double a, double b) {
        return a - b;
    }
    double multiply(double a, double b) {
        return a * b;
    }
    double divide(double a, double b) {
        if (b == 0) {
            throw std::invalid_argument("Division by zero is not allowed");
        }
        return a / b;
    }
};

w2 

 

Aufgabe 3: Lösung quadratischer Gleichungen

Eine quadratische Gleichung a x² + b x + c = 0 hat entweder 0, 1 oder 2 verschiedene Lösungen für reelle Werte von x. Wenn a, b und c gegeben sind, sollten Sie die Anzahl der Lösungen für die Gleichung zurückgeben. Übersetzen Sie diesen Python Code anschließend in C++.

Beispiel:
solutions(1, 0, -1) ➞ 2
// x² - 1 = 0 has two solutions

solutions(1, 0, 0) ➞ 1
// x² = 0 has one solution

solutions(1, 0, 1) ➞ 0
// x² + 1 = 0 has no real solutions.

Prompt:
Übersetze diesen Python Code in C++:

def solutions(a, b, c):
    discriminant = b**2 - 4*a*c
    if discriminant > 0:
        return 2
    elif discriminant == 0:
        return 1
    else:
        return 0

Ergebnis:

Hier ist der Code in C++:

#include <cmath>

int solutions(int a, int b, int c) {
    int discriminant = pow(b, 2) - 4 * a * c;
    if (discriminant > 0) {
        return 2;
    } else if (discriminant == 0) {
        return 1;
    } else {
        return 0;
    }
}

In C++ verwenden wir die Funktion pow() aus der Bibliothek <cmath>, um das Quadrat von b zu berechnen. Der Rest des Codes bleibt gleich.

Überprüfung mit converter Python | C++ Converter:

w6

  

Aufgabe 4: Sichtbarkeit der Bühne

Erstellen Sie eine Funktion, die bestimmt, ob jeder Sitz die vordere Bühne „sehen“ kann. Eine Zahl kann die vordere Stufe „sehen“, wenn sie größer als die Zahl davor ist.

Beispiel:
# FRONT STAGE
[[1, 2, 3, 2, 1, 1],
[2, 4, 4, 3, 2, 2],
[5, 5, 5, 5, 4, 4],
[6, 6, 7, 6, 5, 5]]
# Starting from the left, the 6 > 5 > 2 > 1, so all numbers can see.
# 6 > 5 > 4 > 2 - so all numbers can see, etc.

# FRONT STAGE
[[1, 2, 3, 2, 1, 1],
[2, 4, 4, 3, 2, 2],
[5, 5, 5, 10, 4, 4],
[6, 6, 7, 6, 5, 5]]
# The 10 is directly in front of the 6 and blocking its view.

Prompt: Übersetze diesen Python Code in C++

def can_see_stage(seats):
    num_rows = len(seats)
    num_cols = len(seats[0])

    for col in range(num_cols):
        for row in range(1, num_rows):
            if seats[row][col] <= seats[row - 1][col]:
                return False
    return True

Ergebnis ChatGPT:

Hier ist der Code in C++, der die Funktion can_see_stage übersetzt:

#include <vector>

bool can_see_stage(std::vector<std::vector<int>>& seats) {
    int num_rows = seats.size();
    int num_cols = seats[0].size();

    for (int col = 0; col < num_cols; col++) {
        for (int row = 1; row < num_rows; row++) {
            if (seats[row][col] <= seats[row - 1][col]) {
                return false;
            }
        }
    }

    return true;
}

Diese Übersetzung verwendet einen Vektor, um die Sitzplätze zu repräsentieren. Die Funktion überprüft jede Spalte und jede Zeile, um zu prüfen, ob die Zahl in jeder Zeile streng größer ist als die Zahl in der darunterliegenden Zeile. Wenn an irgendeiner Stelle eine Verletzung gefunden wird, wird sofort false zurückgegeben. Wenn die Schleifen ohne Verletzungen abgeschlossen werden, bedeutet dies, dass jeder Sitzplatz die Bühne sehen kann, und die Funktion gibt true zurück.

Bitte beachten Sie, dass diese Übersetzung voraussetzt, dass die Sitzplätze als zweidimensionaler Vektor von Ganzzahlen (int) übergeben werden. Stellen Sie sicher, dass Sie den entsprechenden Header vector eingebunden haben, um Vektoren zu verwenden.

Überprüfung mit converter Python | C++ Converter:

w8.png

Fazit

Das Übersetzen von Python nach C++ mithilfe von ChatGPT ermöglicht die Umwandlung von Python-Code in äquivalenten C++-Code. ChatGPT kann dabei helfen, die Unterschiede in der Schreibweise zu berücksichtigen, erforderliche Anpassungen vorzunehmen und den Code korrekt zu übersetzen. Durch die Umwandlung von Python-Funktionen, Klassen und anderen Elementen in äquivalente C++-Konstrukte können Python-Programme in C++-Programme überführt werden. Die Übersetzung wurde auch mit dem "Python | C++ Converter" überprüft und das Ergebnis war identisch mit der manuellen Übersetzung. Es ist dennoch empfehlenswert, die ChatGPT-Übersetzung durch einen Converter prüfen zu lassen.

 

 

Weitere Artikel

pmk logo 2 footer 300x

PMKi steht für Projekt Methoden und Kreativität mit einer Anspielung auf Künstliche Intelligenz. Wir sind ein innovatives Projektteam der Hochschule Pforzheim, bestehend aus fünf Personen, das sich im Rahmen des Kurses PMK (Projekt Methoden und Kreativität) mit der Analyse von Programmcode und den Möglichkeiten der Künstlichen Intelligenz (KI) beschäftigt. Unser Fokus liegt dabei auf der genauen Untersuchung der Leistungsfähigkeit von ChatGPT am Beispiel der Programmiersprache Python. 

 icons8-facebook-48.png  icons8-youtube-48.png  icons8-instagram-48.png
 icons8-twitter-48.png  icons8-xing-48.png  icons8-linkedin-48.png

 HS_PF_Logo_Grau-PNG_weiss_footer.png