Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Suche Hilfe für C Programmierung Konto

Empfohlene Antworten

Veröffentlicht

Hallo Informatiker,

ich habe ein kleines Problem. Ich habe ein Programm geschrieben, wobei man ein Guthaben- und Darlehenkonto anlegen kann. Und diese Berechnet werden. Man kann auch die Anfangs-Konto-Stände in eine Datei schreiben und auslesen.

Mir fehlt aber, das man den Namen des Kontoinhabers eingeben kann.

Wie könnte ich dies am besten lösen?

Der Name soll in einem eigenen Array vorbesetzt werden und alle Ausgaben aus dem Hauptprogramm, die ein Konto betreffe, sollen auch den Namen des Inhabers haben.

#include <stdio.h>

#include <stdlib.h>

#include <ctype.h>


#define KONTANZ 10

#define BANKNR 10000

#define DARLEHENSZINS 0.05

#define GUTHABENZINS 0.03


struct Konto

{

    char *namptr;                   /*Name des Besitzers */

    unsigned int kontoNr;           /*Kontonummer*/

    char artDktos;                  /*Art des kontos*/

    float kontoStd;                 /*Kontostand*/

    float zinsSz;                   /*Zinssatz*/

    unsigned int laufZt;            /*Laufzeit*/

    float annuitaet;                /*Annuität*/

};


// Globale Variablen //

struct Konto Konten[10];

int f=0;

char eingabe;

FILE *speicher;



// Funktions Prototypen //

int KontoAnlegen(void);

int getKontoByNr(int KontoNr);

int BerechneGutKonto(int);

int BerechneDaKonto(int);

void SchreibeDatei(int Kontonummer);

void oeffneDatei(char dateiname[]);


//----------------------------------------------------------------------------//


int main(int argc, char *argv[])

{

    int i;

    int zahl;

    int anfang = 1;

    int berechnung;

    float berechne;

    int nBerechnung;


    printf("\n\t Struktur Kontodaten,");  

    printf("\n\tvon xyz\n");

    printf("\tuebersetzt am %s", __DATE__);

    printf("\tum %s Uhr", __TIME__);

    printf("\n\n");


    /* Führt den Vorgang solange aus bis Exit gedrückt wurde */

    while(anfang !=0)

    {

    printf("\t(1) Konto anlegen (2) Konto berechnen (3) Exit \n\t "

    "(4) Konto in Datei schreiben (5) Konto aus Datei auslesen");

    scanf("%i",&zahl);


        if(zahl == 1)

        {

            int Ergebnis;


            do

            {

               Ergebnis = KontoAnlegen();


               switch(Ergebnis)

               {

                   case 0:

                       printf("\tGuthabenkonto wurde erfolgreich angelegt.\n\n");                                   

                   break;


                   case 1:

                       printf("\tDarlehenskonto wurde erfolgreich angelegt.\n\n");

                   break;


                   case 2:

                       printf("\tFehler beim erstellen des Kontos. \n \t"

                                "Bitte ueberpruefen sie ihre Eingabe\n\n");

                   break;

               }

            }

            while(Ergebnis == 2);

        }

        else if (zahl == 2)

        {

            printf("\tBitte kontoNr eingeben: ");

            scanf("%i",&berechnung);


            nBerechnung = BerechneGutKonto(berechnung);

            nBerechnung = BerechneDaKonto(berechnung);


            switch(nBerechnung)

            {

                case 0:

                    printf("\n\t Guthabenkonto erfolgreich berechnet.\n\n");

                break;


                case 1:

                    printf("\n\t Darlehen erfolgreich berechnet.\n\n");

                break;


                case 2:   

                    printf("\n\t Unendliche Wiederholzahlen\n\n");  

                break;


                default:

                    printf("\n\t Unbekannter Fehler\n\n");

                break;     

            }

        } 

        else if(zahl == 3)

        {

            anfang = 0;

        }

        else if(zahl ==4)

        {

            printf("\tBitte kontoNr eingeben: ");

            scanf("%i", &berechnung);

            SchreibeDatei(berechnung);

        }

        else if(zahl == 5)

        { 

            char dateiname[100];

            printf("Bitte geben Sie einen Dateinamen an ");

            scanf("%s",&dateiname);

            oeffneDatei(dateiname);

        }

        else 

        {

            printf("\tFalsche Eingabe, bitte wiederholen sie die Eingabe richtig.\n");           

        }//Ende Auswahl Prüfung

    } //while


    system("PAUSE");	

    return 0;

}


//----------------------------------------------------------------------------//


int BerechneGutKonto(int KontoNummer)

{

    // Ermittelt das Konto zur KontoNummer

    struct Konto AktKonto = Konten[getKontoByNr(KontoNummer)];


    printf("\n");


    /* Berechnung für Guthabenkonto */

    if(AktKonto.artDktos == 'g')

    {

        int i;  	/* Index */


        for(i = 1; i <= AktKonto.laufZt; i++)

        {

            AktKonto.kontoStd = AktKonto.kontoStd*(1+AktKonto.zinsSz); 

            printf("\t Zwischen-Ergebnis zinsSchl = %f\n", AktKonto.kontoStd);

        }


        printf("\n\t Endkontostandt %f",AktKonto.kontoStd);

        return 0;

    }

}// int BerechneGutKonto(int KontoNummer) 


//----------------------------------------------------------------------------//     


int BerechneDaKonto(int KontoNummer)

{

    // Ermittelt das Konto zur KontoNummer

    struct Konto AktKonto = Konten[getKontoByNr(KontoNummer)];


    printf("\n");         


    // Berechnung für Darlehenskonto //

    if(AktKonto.artDktos == 'd')

    { 

        // Fehlerbehandlung von Endlosschleifen //

        if(AktKonto.kontoStd*(AktKonto.zinsSz + 0.01) >= AktKonto.annuitaet)

        {

            return 2;

        } 

        if(AktKonto.kontoStd*(AktKonto.zinsSz + 0.01) <= AktKonto.annuitaet)

        {                              

            float i;                   /* zaehlt Jahre */

            float zinsBez = 0;         /* bis dahin bezahlten Zinsen */


            for(i=1;AktKonto.kontoStd >= AktKonto.annuitaet;i++)

            {

                zinsBez = zinsBez + AktKonto.kontoStd * AktKonto.zinsSz;

                AktKonto.kontoStd = AktKonto.kontoStd * (1 + AktKonto.zinsSz) - AktKonto.annuitaet;

               	printf("\n\t ZwischenErg: Restdarlehen = %.2f, bez.Zinsen gesamt = %.2f", 

                AktKonto.kontoStd,zinsBez); 

            }

            printf("\n\t Tilgung im %.1f ten Jahr\n",i);

            return 1;               

        }

        else

        {

             return 3;

        }

    }


} // int BerechneDaKonto(int KontoNummer)


// --------------------------------------------------------------------------- //      


// Ermittelt Konto mithilfe der KontoNummer //

int getKontoByNr(int KontoNr)

{

    int i;


    //Durchläuft alle Konten bis die Kontonummer gefunden wurde //

    for(i=0; i < sizeof(Konten); i++)

    {

        if(KontoNr == Konten[i].kontoNr)

        {

            return i;     // Gibt dann Konten Index aus //

        }

    }

} // Ende int getKontoByNr(int KontoNr)


// -------------------------------------------------------------------------- //


// Funktion zum Anlegen der Konten.Gibt je nach Status eine Prüfziffer wieder //

int KontoAnlegen(void)

{      

    printf("\n\tKontoart g fuer Guthaben, d fuer Darlehen = "); 

    scanf("%s",&eingabe);


    int NameIndex;

    char Name[25];


    switch(eingabe)

    { 

        // Bei Wahl eines Guthabenkontos //

        case 'g':

            Konten[f].artDktos ='g';     

            printf("\n\t\tKontonummer = "); 

            scanf("%i",&Konten[f].kontoNr);                 

            printf("\n\t\tKontostand = ");

            scanf("%f",&Konten[f].kontoStd);   

            Konten[f].zinsSz= GUTHABENZINS;   

            printf("\n\t\tLaufzeit= ");

            scanf("%i",&Konten[f].laufZt);       

            Konten[f].annuitaet=0;


            f++;

            printf("\n\n");

            return 0;

            break;


        // Bei Wahl eines Darlehenkontos //

        case 'd':

            Konten[f].artDktos='d';

            printf("\n\t\tKontonummer = "); 

            scanf("%i",&Konten[f].kontoNr);                 

            printf("\n\t\tKontostand = ");

            scanf("%f",&Konten[f].kontoStd);   

            Konten[f].zinsSz=DARLEHENSZINS;   

            Konten[f].laufZt=0;       

            printf("\n\t\tAnnuitaet  = ");  

            scanf("%f",&Konten[f].annuitaet); 


            f++; 

            printf("\n\n");

            return 1;

            break;


            // Bei sonstigen Eingaben //

            default:

                return 2;

                break;                                                             

    }

} // Ende int KontoAnlegen(void)


//----------------------------------------------------------------------------//


//Funktion zum schreiben von Kontaktdaten in eine Datei //

void SchreibeDatei(int Kontonummer)

{

    struct Konto AktKonto = Konten[getKontoByNr(Kontonummer)];

    speicher = fopen("Kontodaten.txt","a");


    system("cls");


    if(AktKonto.artDktos == 'g')

    {

        fprintf(speicher, "Kontonummer:\t%i\n",  AktKonto.kontoNr);

        fprintf(speicher, "Kontostand:\t%.2f\n",  AktKonto.kontoStd);

        fprintf(speicher, "KontoArt:\t%c\n",  AktKonto.artDktos);

        fprintf(speicher, "Zinsen:\t%.2f\n",  AktKonto.zinsSz);

        fprintf(speicher, "Laufzeit:\t%i\n",  AktKonto.laufZt);

        fclose(speicher); 

    }

    else if(AktKonto.artDktos == 'd')

    {

        fprintf(speicher, "Kontonummer:\t%i\n",  AktKonto.kontoNr);

        fprintf(speicher, "Kontostand:\t%.2f\n",  AktKonto.kontoStd);

        fprintf(speicher, "KontoArt:%c\n",  AktKonto.artDktos);

        fprintf(speicher, "Zinsen:\t%.2f\n",  AktKonto.zinsSz);

        fprintf(speicher, "Annuität:\t%i\n",  AktKonto.annuitaet);

        fclose(speicher);

    }

} 


//---------------------------------------------------------------------------//


//Öffnet eine Datei und gibt sie am Bildschrim wieder//

void oeffneDatei(char dateiname[])

{

    FILE *stream;


    if((stream = fopen(dateiname,"r")) == NULL)

    {

        printf("Fehler beim oeffnen");

        exit(1);

    }


    int ch;

    ch = fgetc(stream);


    while(!feof(stream))

    {

        putchar(ch);

        ch = fgetc(stream);

    }

    fclose(stream);

}  

Ich wäre auf eure Hilfe sehr Dankbar.

Mir geht es jetzt nur noch darum, das man den Namen des Kontoinhabers eingeben kann.

LG Musti

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.