Berechnung des Net Present Value (NPV) in C

CCBeginner
Jetzt üben

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

Einführung

In diesem Labor lernen Sie, wie man den Net Present Value (NPV) in C berechnet. Das Labor führt Sie durch den Prozess des Einlesens einer Reihe von Cashflows und des Diskontsatzes, der Diskontierung jedes Cashflows und der anschließenden Summierung, um den NPV zu berechnen. Sie erstellen ein C-Programm, das es Benutzern ermöglicht, die notwendigen Daten einzugeben und anschließend den berechneten NPV anzeigt. Dieses Labor behandelt die grundlegenden Konzepte der Finanzmathematik und der Zinsberechnungen unter Verwendung der C-Programmierung.

Lesen einer Reihe von Cashflows und des Zinssatzes

In diesem Schritt lernen Sie, wie Sie eine Reihe von Cashflows und den Zinssatz zum Berechnen des Net Present Value (NPV) in C einlesen. Wir erstellen ein Programm, das es Benutzern ermöglicht, mehrere Cashflows und den Diskontsatz einzugeben.

Erstellen Sie zunächst eine neue C-Datei für unsere NPV-Berechnung:

cd ~/project
nano npv_calculator.c

Fügen Sie nun folgenden Code in die Datei ein:

#include <stdio.h>

#define MAX_CASH_FLOWS 10

int main() {
    double cash_flows[MAX_CASH_FLOWS];
    double discount_rate;
    int num_cash_flows;

    // Eingabe der Anzahl der Cashflows
    printf("Geben Sie die Anzahl der Cashflows ein (max %d): ", MAX_CASH_FLOWS);
    scanf("%d", &num_cash_flows);

    // Anzahl der Cashflows validieren
    if (num_cash_flows <= 0 || num_cash_flows > MAX_CASH_FLOWS) {
        printf("Ungültige Anzahl der Cashflows.\n");
        return 1;
    }

    // Eingabe der Cashflows
    for (int i = 0; i < num_cash_flows; i++) {
        printf("Geben Sie den Cashflow %d ein: ", i);
        scanf("%lf", &cash_flows[i]);
    }

    // Eingabe des Diskontsatzes
    printf("Geben Sie den Diskontsatz (als Dezimalzahl) ein: ");
    scanf("%lf", &discount_rate);

    // Ausgabe der Eingabe zur Überprüfung
    printf("\nZusammenfassung der Eingabe:\n");
    printf("Anzahl der Cashflows: %d\n", num_cash_flows);
    printf("Diskontsatz: %.2f%%\n", discount_rate * 100);

    printf("\nCashflows:\n");
    for (int i = 0; i < num_cash_flows; i++) {
        printf("Cashflow %d: $%.2f\n", i, cash_flows[i]);
    }

    return 0;
}

Kompilieren Sie das Programm:

gcc -o npv_calculator npv_calculator.c

Führen Sie das Programm aus, um die Eingabe zu testen:

./npv_calculator

Beispielausgabe:

Geben Sie die Anzahl der Cashflows ein (max 10): 3
Geben Sie den Cashflow 0 ein: -1000
Geben Sie den Cashflow 1 ein: 500
Geben Sie den Cashflow 2 ein: 600
Geben Sie den Diskontsatz (als Dezimalzahl) ein: 0.1

Zusammenfassung der Eingabe:
Anzahl der Cashflows: 3
Diskontsatz: 10.00%

Cashflows:
Cashflow 0: $-1000.00
Cashflow 1: $500.00
Cashflow 2: $600.00

Dieser Code zeigt, wie man:

  1. Eine maximale Anzahl von Cashflows definiert
  2. Die Anzahl der Cashflows über die Benutzereingabe liest
  3. Einzelne Cashflow-Werte eingibt
  4. Den Diskontsatz eingibt
  5. Die Eingabe validiert und zur Überprüfung ausgibt

Das Programm legt den Grundstein für die NPV-Berechnung, indem es die wesentlichen Eingabeparameter erfasst.

Diskontierung jedes Cashflows und Summierung

In diesem Schritt lernen Sie, wie Sie jeden Cashflow diskontieren und den Net Present Value (NPV) berechnen, indem Sie die diskontierten Cashflows in C summieren.

Ändern wir die vorherige Datei npv_calculator.c, um die NPV-Berechnung hinzuzufügen:

cd ~/project
nano npv_calculator.c

Ersetzen Sie den vorherigen Code durch die folgende Implementierung:

#include <stdio.h>
#include <math.h>

#define MAX_CASH_FLOWS 10

double calculate_npv(double cash_flows[], int num_cash_flows, double discount_rate) {
    double npv = 0.0;

    for (int i = 0; i < num_cash_flows; i++) {
        // Diskontierung jedes Cashflows: CF / (1 + r)^t
        double discounted_cash_flow = cash_flows[i] / pow(1 + discount_rate, i);
        npv += discounted_cash_flow;
    }

    return npv;
}

int main() {
    double cash_flows[MAX_CASH_FLOWS];
    double discount_rate;
    int num_cash_flows;

    // Eingabe der Anzahl der Cashflows
    printf("Geben Sie die Anzahl der Cashflows ein (max %d): ", MAX_CASH_FLOWS);
    scanf("%d", &num_cash_flows);

    // Anzahl der Cashflows validieren
    if (num_cash_flows <= 0 || num_cash_flows > MAX_CASH_FLOWS) {
        printf("Ungültige Anzahl der Cashflows.\n");
        return 1;
    }

    // Eingabe der Cashflows
    for (int i = 0; i < num_cash_flows; i++) {
        printf("Geben Sie den Cashflow %d ein: ", i);
        scanf("%lf", &cash_flows[i]);
    }

    // Eingabe des Diskontsatzes
    printf("Geben Sie den Diskontsatz (als Dezimalzahl) ein: ");
    scanf("%lf", &discount_rate);

    // NPV berechnen
    double npv = calculate_npv(cash_flows, num_cash_flows, discount_rate);

    // Ergebnisse ausgeben
    printf("\nZusammenfassung der Eingabe:\n");
    printf("Anzahl der Cashflows: %d\n", num_cash_flows);
    printf("Diskontsatz: %.2f%%\n", discount_rate * 100);

    printf("\nCashflows:\n");
    for (int i = 0; i < num_cash_flows; i++) {
        double discounted_cf = cash_flows[i] / pow(1 + discount_rate, i);
        printf("Cashflow %d: $%.2f (Diskontiert: $%.2f)\n",
               i, cash_flows[i], discounted_cf);
    }

    printf("\nNet Present Value (NPV): $%.2f\n", npv);

    return 0;
}

Kompilieren Sie das Programm mit der Mathematikbibliothek:

gcc -o npv_calculator npv_calculator.c -lm

Führen Sie das Programm aus, um die NPV-Berechnung zu testen:

./npv_calculator

Beispielausgabe:

Geben Sie die Anzahl der Cashflows ein (max 10): 3
Geben Sie den Cashflow 0 ein: -1000
Geben Sie den Cashflow 1 ein: 500
Geben Sie den Cashflow 2 ein: 600
Geben Sie den Diskontsatz (als Dezimalzahl) ein: 0.1

Zusammenfassung der Eingabe:
Anzahl der Cashflows: 3
Diskontsatz: 10.00%

Cashflows:
Cashflow 0: $-1000.00 (Diskontiert: $-1000.00)
Cashflow 1: $500.00 (Diskontiert: $454.55)
Cashflow 2: $600.00 (Diskontiert: $495.87)

Net Present Value (NPV): $-49.58

Wichtige Punkte in dieser Implementierung:

  1. Hinzufügen der Funktion calculate_npv() zur Berechnung des NPV
  2. Verwendung der Funktion pow() zur Diskontierung der Cashflows
  3. Anzeige sowohl der ursprünglichen als auch der diskontierten Cashflows
  4. Berechnung und Anzeige des endgültigen NPV

Hinweis: Der Flag -lm wird verwendet, um die Mathematikbibliothek für die Funktion pow() zu verknüpfen.

Ausgabe des NPV-Wertes

In diesem letzten Schritt lernen Sie, wie Sie die Ergebnisse der Net Present Value (NPV)-Berechnung in einem benutzerfreundlichen Format interpretieren und präsentieren.

Ändern wir das Programm npv_calculator.c, um die Ausgabe zu verbessern:

cd ~/project
nano npv_calculator.c

Aktualisieren Sie den Code mit einer verbesserten Ausgabeformatierung:

#include <stdio.h>
#include <math.h>

#define MAX_CASH_FLOWS 10

double calculate_npv(double cash_flows[], int num_cash_flows, double discount_rate) {
    double npv = 0.0;

    for (int i = 0; i < num_cash_flows; i++) {
        double discounted_cash_flow = cash_flows[i] / pow(1 + discount_rate, i);
        npv += discounted_cash_flow;
    }

    return npv;
}

void print_npv_analysis(double cash_flows[], int num_cash_flows, double discount_rate, double npv) {
    printf("\n--- NPV-Analysebericht ---\n");
    printf("Diskontsatz: %.2f%%\n", discount_rate * 100);

    printf("\nZusammensetzung der Cashflows:\n");
    printf("--------------------\n");
    for (int i = 0; i < num_cash_flows; i++) {
        double discounted_cf = cash_flows[i] / pow(1 + discount_rate, i);
        printf("Periode %d: $%.2f (Diskontiert: $%.2f)\n",
               i, cash_flows[i], discounted_cf);
    }

    printf("\nNet Present Value (NPV): $%.2f\n", npv);

    // Interpretation des NPV-Ergebnisses
    if (npv > 0) {
        printf("Investitionsempfehlung: AKZEPTIEREN\n");
        printf("Das Projekt wird voraussichtlich Wert schaffen.\n");
    } else if (npv < 0) {
        printf("Investitionsempfehlung: ABLEHNEN\n");
        printf("Das Projekt wird voraussichtlich Wert vernichten.\n");
    } else {
        printf("Investitionsempfehlung: NEUTRAL\n");
        printf("Das Projekt ist zum gegebenen Diskontsatz ausgeglichen.\n");
    }
}

int main() {
    double cash_flows[MAX_CASH_FLOWS];
    double discount_rate;
    int num_cash_flows;

    printf("Net Present Value (NPV)-Rechner\n");
    printf("==================================\n");

    // Eingabe der Anzahl der Cashflows
    printf("Geben Sie die Anzahl der Cashflows ein (max %d): ", MAX_CASH_FLOWS);
    scanf("%d", &num_cash_flows);

    // Anzahl der Cashflows validieren
    if (num_cash_flows <= 0 || num_cash_flows > MAX_CASH_FLOWS) {
        printf("Ungültige Anzahl der Cashflows.\n");
        return 1;
    }

    // Eingabe der Cashflows
    for (int i = 0; i < num_cash_flows; i++) {
        printf("Geben Sie den Cashflow für Periode %d ein: ", i);
        scanf("%lf", &cash_flows[i]);
    }

    // Eingabe des Diskontsatzes
    printf("Geben Sie den Diskontsatz (als Dezimalzahl) ein: ");
    scanf("%lf", &discount_rate);

    // NPV berechnen
    double npv = calculate_npv(cash_flows, num_cash_flows, discount_rate);

    // NPV-Analyse ausgeben
    print_npv_analysis(cash_flows, num_cash_flows, discount_rate, npv);

    return 0;
}

Kompilieren Sie das Programm:

gcc -o npv_calculator npv_calculator.c -lm

Führen Sie das Programm aus, um die verbesserte NPV-Ausgabe zu testen:

./npv_calculator

Beispielausgabe:

Net Present Value (NPV)-Rechner
==================================
Geben Sie die Anzahl der Cashflows ein (max 10): 3
Geben Sie den Cashflow für Periode 0 ein: -1000
Geben Sie den Cashflow für Periode 1 ein: 500
Geben Sie den Cashflow für Periode 2 ein: 600
Geben Sie den Diskontsatz (als Dezimalzahl) ein: 0.1

--- NPV-Analysebericht ---
Diskontsatz: 10.00%

Zusammensetzung der Cashflows:
--------------------
Periode 0: $-1000.00 (Diskontiert: $-1000.00)
Periode 1: $500.00 (Diskontiert: $454.55)
Periode 2: $600.00 (Diskontiert: $495.87)

Net Present Value (NPV): $-49.58
Investitionsempfehlung: ABLEHNEN
Das Projekt wird voraussichtlich Wert vernichten.

Wichtige Verbesserungen in dieser Version:

  1. Hinzufügen einer dedizierten Funktion print_npv_analysis()
  2. Verbesserte Ausgabeformatierung
  3. Hinzufügen einer Investitionsbewertung basierend auf dem NPV
  4. Verbesserte Benutzeroberfläche mit klaren Überschriften

Zusammenfassung

In diesem Labor haben Sie gelernt, wie man eine Reihe von Cashflows und den Zinssatz zur Berechnung des Net Present Value (NPV) in C liest. Sie haben ein Programm erstellt, das es Benutzern ermöglicht, mehrere Cashflows und den Diskontsatz einzugeben, und das Programm gibt die Eingabe zur Überprüfung aus.

Als Nächstes lernen Sie, wie Sie jeden Cashflow diskontieren und summieren, um den NPV zu berechnen, und dann das Endergebnis auszugeben.