C++ und ein Problematisches PROGRAMM



  • und zwar ist es bei

    void aendern() 
    { 
            char x,suche; 
            int s=1; 
            clrscr(); 
            DATEI=fopen("C:\\leasing.dat","r+"); 
            fread(&STRUKT,sizeof(STRUKT),1,DATEI); //<----------------Die sache hier
            do 
            { 
            fread(&STRUKT,sizeof(STRUKT),1,DATEI); 
            cout<<"Bitte gesuchte Kundennummer eingeben: "; 
                    cin>>suche; 
                    if(suche == STRUKT.knr); 
                    { 
                            cout<<"Leasingvertragsnummer:\t\t"<<STRUKT.lvnr<<"\n"; 
                            cout<<"Leasingobjektnummer:\t\t"<<STRUKT.lonr<<"\n"; 
                            cout<<"Leasingobjektbezeichnung:\t"<<STRUKT.lob<<"\n"; 
                            cout<<"Kundennummer:\t\t\t"<<STRUKT.knr<<"\n"; 
                            cout<<"Kundennamen:\t\t\t"<<STRUKT.kn<<"\n"; 
                            cout<<"Strasse:\t\t\t"<<STRUKT.str<<"\n"; 
                            cout<<"PLZ:\t\t\t\t"<<STRUKT.plz<<"\n"; 
                            cout<<"Ort:\t\t\t\t"<<STRUKT.ort<<"\n"; 
                            cout<<"Leasingbeginn(Tag):\t\t"<<STRUKT.lbtag<<"\n"; 
                            cout<<"Leasingbeginn(Monat):\t\t"<<STRUKT.lbmonat<<"\n"; 
                            cout<<"Leasingbeginn(Jahr):\t\t"<<STRUKT.lbjahr<<"\n"; 
                            cout<<"Leassingende(Tag):\t\t"<<STRUKT.letag<<"\n"; 
                            cout<<"Leassingende(Monat):\t\t"<<STRUKT.lemonat<<"\n"; 
                            cout<<"Leassingende(Jahr):\t\t"<<STRUKT.lejahr<<"\n"; 
                            cout<<"Rechnungsbetrag:\t\t"<<STRUKT.rb<<"\n\n"; 
                            cout<<"Alter Rechnungsbetrag: "<<STRUKT.rb<<"\n"; 
                            cout<<"Neuer Rechnungsbetrag: "; 
                            cin>>STRUKT.rb; 
             fseek(DATEI,(s-1)*sizeof(struct Programm),SEEK_SET); 
                            fwrite(&STRUKT,sizeof(STRUKT),1,DATEI); 
                    } 
          s++; 
                    cout<<"Wollen Sie weiter suchen? Ja/Nein: "; 
                    cin>>x; 
            } 
            while(x!='n'); 
            fclose(DATEI); 
            cout<<"\nWeiter mit beliebiger Taste..."; 
            getch(); 
            clrscr(); 
            return; 
    }
    


  • if(suche == STRUKT.knr); 
                           ^
    

    Schau mal da ist ein ; zu viel



  • Ich dachte Ertmall auch das der Semikolon schuld dran ist Aber er ist es nich!

    Zwar wenn ich es wegnehme dann meldet sich der Comiler Nicht!!!

    Aber dann funktioniert die Aendern Funktion nich mehr!!!

    Oder hat jemmand neen anderen Vorschlag für die Unterfunktion "Aundern"?!??! 😞



  • Fiktor schrieb:

    Ich dachte Ertmall auch das der Semikolon schuld dran ist Aber er ist es nich!

    Zwar wenn ich es wegnehme dann meldet sich der Comiler Nicht!!!

    Aber dann funktioniert die Aendern Funktion nich mehr!!!

    Oder hat jemmand neen anderen Vorschlag für die Unterfunktion "Aundern"?!??! 😞

    das problem ist das semikolon. das muss weg.

    das die funktion nicht geht, liegt daran, dass du mit

    if(suche == STRUKT.knr)
    

    einen buchstaben mit einem string vergleichst - dabei wird nichts für dich sinnvolles herauskommen.

    das die funktion geht, wenn das semikolon da ist, liegt daran, dass dann der ganze block darunter generell ausgeführt wird.



  • Mach aus char suche einfach ein int suche und das problem mit dem ändern ist gelöst.



  • stimmt ja.... knr war ja ein int und kein string.... im eifer des gefechtes übersehen :p



  • Danke Danke Danke !!!!!!!!!!!!!!!!!!!!!!!! 😃 😃 😃 #

    Was hätte ich ohne EUCH gemacht ?!?!?!?

    Nochmall Danke!!!!!



  • Fiktor schrieb:

    Das stimmt mir dem Int und Char so Ich habs Koregiert aber das Problemmist Trodzdemm da !!! 😞

    1.) Welches Problem?
    2.) Was hat das debuggen ergeben?



  • Hat sich schon Erledigt!!! 🙂

    Ich Bedanke mich nochmall !!!!



  • Ähm ja Ich bin noch auf ein Problemm Gestossen und Zwar

    Wenn ich ne eingabe 2 Datensätze mache Überschreibt er denn 1 Dantensatz mit demm 2 ?!?!

    Also z.B 1 Datensatz war (1) dann 2 Datensatz war (3)
    So bei der Ausgabe Kommt dann (3) (3)!!!
    Normalleweise musst jetzt da Stehen (1) (3)

    Hier ist der Code

    // Onkel Viktor, 16.5.2004, all rights reserved
    #include <iostream.h> 
    #include <iomanip.h> 
    #include <conio.h> 
    #include <string.h> 
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    FILE*DATEI; 
    
    void eingabe(); 
    void ausgabe(); 
    void aendern(); 
    void tagesleasing();
    
    //--------------------------------------------------------------------------------------------------
    struct Programm 
    { 
            int lvnr;               //Leasingvertragsnummer 
            int lonr;               //Leasingobjektnummer 
            char lob[20];           //Leasingobjektbezeichnung 
            int knr;                //Kundennummer 
            char kn[20];            //Kundenname 
            char str[30];           //Strasse 
            int plz;                //PLZ 
            char ort[30];           //Ort 
            char lbtag[10];         //Leasingbeginn: Tag 
            char lbmonat[9];        //Leasingbeginn: Monat 
            char lbjahr[4];         //Leasingbeginn: Jahr 
            char letag[10];         //Leassingende: Tag 
            char lemonat[9];        //Leassingende: Monat 
            char lejahr[4];         //Leassingende: Jahr 
            double rb;              //Rechnungsbetrag 
    } 
    STRUKT[100]; 
    //--------------------------------------------------------------------------------------------------
    int main() 
    { 
            int i; 
    
            do 
            {       cout<<"\n1. Tagesleasing\n";
                    cout<<"\n2. Monatsleasing\n\n\t";
                    cin>>i; 
                    switch(i) 
                    { 
                            case 1: tagesleasing();break;
    
                            default: cout<<"Fehler!\n";break; 
                    } 
            } 
            while(i!=0); 
            getch(); 
            return 0; 
    } 
    //==================================================================================================
    void tagesleasing ()
    {
    clrscr();
    cout <<"Tagesleasing  Eingabe\n\n";
     int i; 
            do 
            { 
                    cout<<"1. Eingabe\n"; 
                    cout<<"2. Ausgabe\n"; 
                    cout<<"3. Aendern\n"; 
                    cout<<"4. Loeschen\n"; 
                    cout<<"0. ENDE\n\n"; 
                    cout<<"Bitte treffen Sie eine Entscheidung: "; 
                    cin>>i; 
                    switch(i) 
                    { 
                            case 1: eingabe();break; 
                            case 2: ausgabe();break; 
                            case 3: aendern();break; 
                            case 4: loeschen();break; 
                            case 0: cout<<"\nDas Programm endet hier..";break; 
                            default: cout<<"Fehler!\n";break; 
                    } 
            } 
            while (i!=0); 
            getch(); 
            exit (1);
    }
    //--------------------------------------------------------------------------------------------------
    
    void eingabe() 
    {         for(int i=0;i<100;i++)
            { 
            char x; 
            clrscr(); 
            DATEI=fopen("C:\\leasing.dat","a+"); 
            do 
            {    
            cout<<"Bitte geben Sie die Leasingvertragsnummer ein: "; 
                    cin>>STRUKT[i].lvnr; 
                    cout<<"Bitte geben Sie die Leasingobjektnummer ein: "; 
                    cin>>STRUKT[i].lonr; 
                    cout<<"Bitte geben Sie die Leasingobjektbezeichnung ein: "; 
                    cin>>STRUKT[i].lob; 
                    cout<<"Bitte geben Sie die Kundennummer ein: "; 
                    cin>>STRUKT[i].knr; 
                    cout<<"Bitte geben Sie den Kundennamen ein: "; 
                    cin>>STRUKT[i].kn; 
                    cout<<"Bitte geben Sie die Strasse ein: "; 
                    cin>>STRUKT[i].str; 
                    cout<<"Bitte geben Sie die PLZ ein: "; 
                    cin>>STRUKT[i].plz; 
                    cout<<"Bitte geben Sie den Ort ein: "; 
                    cin>>STRUKT[i].ort; 
                    cout<<"Bitte geben Sie den Leasingbeginn(Tag) ein: "; 
                    cin>>STRUKT[i].lbtag; 
                    cout<<"Bitte geben Sie den Leasingbeginn(Monat) ein: "; 
                    cin>>STRUKT[i].lbmonat; 
                    cout<<"Bitte geben Sie den Leasingbeginn(Jahr) ein: "; 
                    cin>>STRUKT[i].lbjahr; 
                    cout<<"Bitte geben Sie das Leassingende(Tag) ein: "; 
                    cin>>STRUKT[i].letag; 
                    cout<<"Bitte geben Sie das Leassingende(Monat) ein: "; 
                    cin>>STRUKT[i].lemonat; 
                    cout<<"Bitte geben Sie das Leassingende(Jahr) ein: "; 
                    cin>>STRUKT[i].lejahr; 
                    cout<<"Bitte geben Sie den Rechnungsbetrag ein: "; 
                    cin>>STRUKT[i].rb; 
                    cout<<"\nWollen Sie abspeichern? Ja/Nein: "; 
                    cin>>x;
    
                    if(x=='j') 
                    { 
                            fwrite(&STRUKT,sizeof(STRUKT),1,DATEI); 
                    } 
                    cout<<"Wollen Sie weitermachen? Ja/Nein: "; 
                    cin>>x; 
            } 
            while(x!='n'); 
            fclose(DATEI); 
            clrscr(); 
            return; 
    }} 
    //--------------------------------------------------------------------------------------------------
    void ausgabe() 
    {    
            for(int i=0;i<100;i++)
            { 
    
            clrscr(); 
            DATEI=fopen("C:\\leasing.dat","r+"); 
            fread(&STRUKT,sizeof(STRUKT),1,DATEI); 
            cout<<"===================================================\n\n"; 
            do 
            {     
                    fread(&STRUKT,sizeof(STRUKT),1,DATEI);
    
                    cout<<"Leasingvertragsnummer:\t\t"<<STRUKT[i].lvnr<<"\n"; 
                    cout<<"Leasingobjektnummer:\t\t"<<STRUKT[i].lonr<<"\n"; 
                    cout<<"Leasingobjektbezeichnung:\t"<<STRUKT[i].lob<<"\n"; 
                    cout<<"Kundennummer:\t\t\t"<<STRUKT[i].knr<<"\n"; 
                    cout<<"Kundennamen:\t\t\t"<<STRUKT[i].kn<<"\n"; 
                    cout<<"Strasse:\t\t\t"<<STRUKT[i].str<<"\n"; 
                    cout<<"PLZ:\t\t\t\t"<<STRUKT[i].plz<<"\n"; 
                    cout<<"Ort:\t\t\t\t"<<STRUKT[i].ort<<"\n"; 
                    cout<<"Leasingbeginn(Tag):\t\t"<<STRUKT[i].lbtag<<"\n"; 
                    cout<<"Leasingbeginn(Monat):\t\t"<<STRUKT[i].lbmonat<<"\n"; 
                    cout<<"Leasingbeginn(Jahr):\t\t"<<STRUKT[i].lbjahr<<"\n"; 
                    cout<<"Leassingende(Tag):\t\t"<<STRUKT[i].letag<<"\n"; 
                    cout<<"Leassingende(Monat):\t\t"<<STRUKT[i].lemonat<<"\n"; 
                    cout<<"Leassingende(Jahr):\t\t"<<STRUKT[i].lejahr<<"\n"; 
                    cout<<"Rechnungsbetrag:\t\t"<<STRUKT[i].rb<<"\n\n"; 
                    cout<<"===================================================\n\n"; 
            }       
            while(!feof(DATEI)); 
            fclose(DATEI); 
            cout<<"Weiter mit beliebiger Taste..."; 
            getch(); 
            clrscr(); 
            return;  }
    } 
    //--------------------------------------------------------------------------------------------------
    void aendern() 
    { 
       for(int i=0;i<100;i++)
        {  
            char x; 
            int suche,s=1;
    
            clrscr(); 
            DATEI=fopen("C:\\leasing.dat","r+"); 
            fread(&STRUKT,sizeof(STRUKT),1,DATEI); 
            do 
            { 
            fread(&STRUKT,sizeof(STRUKT),1,DATEI); 
            cout<<"Bitte gesuchte Kundennummer eingeben: ";
    
                    cin>>suche;
    
                    if(suche == STRUKT[i].knr) 
                    {        
                            cout<<"Leasingvertragsnummer:\t\t"<<STRUKT[i].lvnr<<"\n"; 
                            cout<<"Leasingobjektnummer:\t\t"<<STRUKT[i].lonr<<"\n"; 
                            cout<<"Leasingobjektbezeichnung:\t"<<STRUKT[i].lob<<"\n"; 
                            cout<<"Kundennummer:\t\t\t"<<STRUKT[i].knr<<"\n"; 
                            cout<<"Kundennamen:\t\t\t"<<STRUKT[i].kn<<"\n"; 
                            cout<<"Strasse:\t\t\t"<<STRUKT[i].str<<"\n"; 
                            cout<<"PLZ:\t\t\t\t"<<STRUKT[i].plz<<"\n"; 
                            cout<<"Ort:\t\t\t\t"<<STRUKT[i].ort<<"\n"; 
                            cout<<"Leasingbeginn(Tag):\t\t"<<STRUKT[i].lbtag<<"\n"; 
                            cout<<"Leasingbeginn(Monat):\t\t"<<STRUKT[i].lbmonat<<"\n"; 
                            cout<<"Leasingbeginn(Jahr):\t\t"<<STRUKT[i].lbjahr<<"\n"; 
                            cout<<"Leassingende(Tag):\t\t"<<STRUKT[i].letag<<"\n"; 
                            cout<<"Leassingende(Monat):\t\t"<<STRUKT[i].lemonat<<"\n"; 
                            cout<<"Leassingende(Jahr):\t\t"<<STRUKT[i].lejahr<<"\n"; 
                            cout<<"Rechnungsbetrag:\t\t"<<STRUKT[i].rb<<"\n\n"; 
                            cout<<"Alter Rechnungsbetrag: "<<STRUKT[i].rb<<"\n"; 
                            cout<<"Neuer Rechnungsbetrag: "; 
                            cin>>STRUKT[i].rb; 
             fseek(DATEI,(s-1)*sizeof(struct Programm),SEEK_SET); 
                            fwrite(&STRUKT,sizeof(STRUKT),1,DATEI); 
                    } 
          s++; 
                    cout<<"Wollen Sie weiter suchen? Ja/Nein: "; 
                    cin>>x; 
            } 
            while(x!='n'); 
            fclose(DATEI); 
            cout<<"\nWeiter mit beliebiger Taste..."; 
            getch(); 
            clrscr(); 
            return; 
    }      }
    //--------------------------------------------------------------------------------------------------
    

    Ich habs versucht rauszufinden woran es Liegt aber mir ist kein Fahler Aufgefahlen 😞



  • könntest du bitte den code demnächste etwas beschränken? es is nich einfach sich da durch zukämpfen^^

    //edit sorry, ich überblicke erst jetzt, was du alles machst,und nimm meinen guten rat an, überarbeite nochmal dein ganzes programm, da sind mehrere logische fehler drin, zb was ich bis grad eben übersehen hab:

    in der eingabe hast du zuerst eine for schleife, welche bis 100 zählt.
    dazu hast du eine struktur, welche 100 einträge hat, demnach siehts auf dem ersten blick so aus, dass du die 100 strukturen füllen willst, aber dann in der do while schleife nimmst du immer nur die erste struktur und benutzt sie immer wieder, um in die datei zu schreiben, der fehler ist, das du dich scheinbar nicht entscheiden konntest, was du machen wolltest...ähnliches bei der ausgabe

    dein fehler in der ausgabe ist einfach, dass du den ersten eintrag einliest ohne ihn auszugeben


Anmelden zum Antworten