C Summe einer Summe aus einer Anzahl multipliziert mit dem Preis!

TheReJecT

Newbie
Registriert
Nov. 2016
Beiträge
5
Hallo,

Ich habe eine Konsolenanwendung geschrieben! Nun komm ich nicht weiter.
Mein Problem: Ich habe mehrere Ergebnisse, die sich aus dem Preis multipliziert mit der Anzahl zusammensetzen.
Nun will ich diese Ergebnisse zusammenzählen. Ich habe das ganze mit Arrays und for-Schleifen berechnet.
Danke im vorraus!

Hier der Code:


Code:
#include <stdio.h>
#include <stdlib.h>

void char_aufgabe(){

    //Deklarierung
    int index;
    int rechnungsposten;

    //Abfrage der Rechnungsposten, wenn eingabe kleiner 1 oder groesser 5 dann zum anfang
    printf("Rechnungsposten(min. 1, max.5): ");
    scanf("%d", &rechnungsposten);

    //Deklaration von weiteren Variablen
    char bezeichnung[rechnungsposten][11];
    int anzahl[rechnungsposten];
    double preis[rechnungsposten];

    //Weiterleitung zur Funktion
    if(rechnungsposten < 1 || rechnungsposten > 5){
        char_aufgabe();
    } else {

        //Abfrage
        for(index = 0; index < rechnungsposten; index++){

                printf("Artikel %d, Bezeichnung: ", index+1);
                scanf("%s", bezeichnung[index]);
                printf("Artikel %d, Anzahl: ", index+1);
                scanf("%d", &anzahl[index]);
                printf("Artikel %d, Preis: ", index+1);
                scanf("%lf", &preis[index]);

        }
        printf("\n");
        printf("Posten  Bezeichnung     Anzahl  Preis einzeln  Preis gesamt\n");

        for(index = 0; index < rechnungsposten; index++){
        double preisGesamt = anzahl[index] * preis[index];

        printf("%6d  %-11s %10d %9.2f Euro %8.2f Euro\n", index+1, bezeichnung[index], anzahl[index], preis[index], preisGesamt);
        }
    }

}

Das ist die Ausgabe
Code:
Rechnungsposten(min. 1, max.5): 5
Artikel 1, Bezeichnung: Handy
Artikel 1, Anzahl: 3
Artikel 1, Preis: 4
Artikel 2, Bezeichnung: Computer
Artikel 2, Anzahl: 2
Artikel 2, Preis: 3
Artikel 3, Bezeichnung: Laptop
Artikel 3, Anzahl: 2
Artikel 3, Preis: 4
Artikel 4, Bezeichnung: Uhr
Artikel 4, Anzahl: 7
Artikel 4, Preis: 8
Artikel 5, Bezeichnung: Tablet
Artikel 5, Anzahl: 3
Artikel 5, Preis: 9.20

Posten  Bezeichnung     Anzahl  Preis einzeln  Preis gesamt
     1  Handy                3      4.00 Euro    12.00 Euro
     2  Computer             2      3.00 Euro     6.00 Euro
     3  Laptop               2      4.00 Euro     8.00 Euro
     4  Uhr                  7      8.00 Euro    56.00 Euro
     5  Tablet               3      9.20 Euro    27.60 Euro
Summe der Rechnung                                0.00 Euro
Jedoch möchte ich dass bei Summe der Rechnung, Preis gesamt so oft addiert wird, wie es Posten gibt!
 
Zuletzt bearbeitet:
Und was ist jetzt das Problem?

Und du kannst Code in
HTML:
[CODE][/CODE]
packen, dann kann man ihn besser lesen und auf Zeilennummer verweisen.

Spontan fallen mir zwei Zeilen auf:

1.
Code:
if(rechnungsposten < 1 || rechnungsposten > 5){
char_aufgabe();
} else {

Damit rufst du deine Funktion in der Funktion auf und springt damit nicht wirklich zum Anfang. Besser die Eingabe und Abfrage in eine Schleife packen und die erst verlassen, wenn die Eingabe gültig ist.

2.
Code:
double preisGesamt = anzahl[index] * preis[index];

Damit wird bei jedem Schleifendurchlauf die Variable neu deklariert. Zum anderen überschreibst du jedes Mal den Inhalt.
 
Zuletzt bearbeitet:
Code:
#include <stdio.h>
#include <stdlib.h>

void char_aufgabe() {
    //Deklarierung
    int index;
    int rechnungsposten;

    //Abfrage der Rechnungsposten, wenn eingabe kleiner 1 oder groesser 5 dann zum anfang
    printf("Rechnungsposten(min. 1, max.5): ");
    scanf("%d", &rechnungsposten);

    //Deklaration von weiteren Variablen
    char bezeichnung[rechnungsposten][11];
    int anzahl[rechnungsposten];
    double preis[rechnungsposten];

    //Weiterleitung zur Funktion
    if(rechnungsposten < 1 || rechnungsposten > 5) {
        char_aufgabe();
    } else {

        //Abfrage
        for(index = 0; index < rechnungsposten; index++) {

            printf("Artikel %d, Bezeichnung: ", index+1);
            scanf("%s", bezeichnung[index]);
            printf("Artikel %d, Anzahl: ", index+1);
            scanf("%d", &anzahl[index]);
            printf("Artikel %d, Preis: ", index+1);
            scanf("%lf", &preis[index]);

        }
        printf("\n");
        printf("Posten Bezeichnung Anzahl Preis einzeln Preis gesamt\n");

        double preisAlleRechnungen = 0;
        for(index = 0; index < rechnungsposten; index++) {
            double preisGesamt = anzahl[index] * preis[index];
            preisAlleRechnungen += preisGesamt;
            printf("%6d %-11s %10d %9.2f Euro %8.2f Euro\n", index+1, bezeichnung[index], anzahl[index], preis[index], preisGesamt);
        }
        printf("Summe der Rechnung %35.2f Euro", preisAlleRechnungen);

    }

}
 
Danke =)! Hat geklappt. Jedoch versteh ich nicht wie preisAlleRechnungen mit sich selber und preisGesamt addiert werden kann und schließlich das richtige Ergebnis herauskommt ^^! Es wäre dann ja sozusagen 0 + preisGesamt und das würde ja preisGesamt ausgeben :O


Ah, hat sich geklärt! Mir ist eingefallen, dass es ja in einer ForSchleife stattfindet :D
 
Zuletzt bearbeitet:
Bei jedem Durchlauf der Schleife wird auf 'preisAlleRechnungen' der 'preisGesamt' addiert. Alle 'preisGesamt' zusammen ergeben dann 'preisAlleRechnungen'.
Mach einfach in der Schleife, in der du 'preisGesamt' berechnest jedes mal eine Ausgabe von 'preisAlleRechnungen'. Dann kannst du beobachten, wie 'preisAlleRechnungen' langsam wächst.

//EDIT

Ops, zu langsam ;)
 
Zurück
Oben