Brauche unbedingt hilfe !!!



  • Hallo Leute,brauche dringends eure hilfe da ich wirklich verzweifelt bin mit meinem programm!

    Also fehlermeldung während der eingabe:

    "ntdll.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\system32\kernel32.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\system32\user32.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\system32\gdi32.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\Programme\Kaspersky Lab\Kaspersky Internet Security 6.0\adialhk.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\system32\advapi32.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\system32\rpcrt4.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\system32\msvcrt.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\system32\uxtheme.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\system32\msvcrt.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\system32\advapi32.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\system32\rpcrt4.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\system32\msctf.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\Programme\Typhoon\Notebook Mouse\5.0\MOUDL32A.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    Nicht abgefangene Ausnahme in projek1.exe: 0xC0000005: Access Violation.
    Das Programm "C:\Studium\2.Semester\Programmieren C++\Übungen\Übung2\Debug\projek1.exe" wurde mit Code 0 (0x0) beendet.

    nun mein headerm.h:

    #include <iostream>
    
    #ifndef HEADERM
    #define HEADERM
    
    using namespace std;
    
    const int n=15;
    
    const int breite=12;
    
    class CMedium {
    
    protected:    // Vererbte klassen dürfen drauf zugreifen!
    	int signatur;
    	char typ[7];
    	char titel[15];
    	bool bstatus;
    
    public:
    	void init();
    	void anzeigen();
    	void entleihen();
    	void rueckgabe();
    	int getsig();
    };
    
    class Buch:public CMedium{
          int seitenzahl;
    
          public:
          void init();
    	  void anzeigen();
          };
    
    class Video:public CMedium{
    
          double spieldauer;
    
          public:
          void init();
    	  void anzeigen();       
    
          };
    
    #endif
    

    main.cpp :

    #include <iostream>
    #include <iomanip>
    #include <stdlib.h>
    
    #include "headerM.h"
    
    using namespace std;
    
    int main ()
    {
    
    	char wahl;
    
    	CMedium *array_medium [n]={NULL};					
        Buch *array_buch [n]={NULL};
        Video *array_video [n]={NULL};
        int l=0; //zählvariable für die schleife
        int i=0,j=0,k=0; //counter für die klassen
        int sig_suche;
    
        cout << '\t' <<'\t' << "M E D I E N V E R W A L T U N G" ;
    	while(1)
        {
    	cout<< endl<<"\tm Hinzufuegen und Initialisieren eines neuen Mediums\n"
    	    <<"\tb Hinzufuegen und Initialisieren eines neuen Buchs\n"
            <<"\tv Hinzufuegen und Initialisieren eines neuen Videos\n"   
    		<< "\tl Anzeige der Medieneigenschaften\n"
    		<< "\te Entleihen des zuletzt angelegten Mediums\n"
    		<< "\tr Rueckgabe des Zuletzt angelegten Mediums\n"
    		<< "\tq Programmende\n"
    		<< "\tEingabe:  ";
    	cin.sync();		//Eingabebuffer löschen
    	cin >> wahl;
    
    	switch (wahl)
        {
    
    		case 'm':
            case 'M':
    
                if (i<n){
    
    			array_medium[i] = new CMedium;							//Dereferenziert Speichplatz angefordert
    			array_medium[i]->init();
    			i++;
                }
                else{
    			cout <<"Es steht kein Speicherplatz mehr zu Verfuegung"<<endl;
    			}
    			break;
    
            case 'b':
            case 'B':
                 if (j<n){
                 array_buch[j] = new Buch;							//Dereferenziert Speichplatz angefordert
    			 array_buch[j]->init();
                 j++;
                 }
                 else{
    				 cout <<"Es steht kein Speicherplatz mehr zu Verfuegung"<<endl;
                 }
    			break;
            case 'v':
            case 'V':        
                 if (k<n){
                 array_video[k]= new Video;							//Dereferenziert Speichplatz angefordert
    			 array_video[k]->init();
                 k++;
                 }
    			 else{
    				 cout <<"Es steht kein Speicherplatz mehr zu Verfuegung"<<endl;
                 }
    			 break;
    		case 'L':
    		case 'l':
    
                   	if (array_medium==NULL && array_buch ==NULL && array_video==NULL){
    				cout<<"Bitte legen sie erst ein medium an"<<endl;
    				break;
    			    }
    
    			cout <<endl<<'\t'<< setw(breite) << left << "Titel" ;
    			cout << setw(breite) << right << "Signatur" ;
    			cout << setw(breite) << right << "Typ" ;
    			cout << setw(breite) << right << "Seitenzahl"; 
    			cout << setw(breite) << right << "Spieldauer";
    			cout << setw(breite) << right << "Status";
    			cout <<'\t'<<"------------------------------------------------------------------------"<<endl;
    
              for(l=0; l < i; l++)
    			{
    			array_medium[l] -> anzeigen();
    			}
    		  for(l=0; l < j; l++)
    			{
    			array_buch[l] -> anzeigen();
    			}
    		  for(l=0; l < k; l++)
    			{
    			array_video[l] -> anzeigen();
    			}
    
    			break;
    
    		case 'e':
            case 'E':{
    			if (array_medium==NULL && array_buch ==NULL && array_video==NULL){
    				cout<<"Bitte legen sie erst ein medium an"<<endl;
    				break;
    			}
    			cout <<"Bitte Signatur eingeben:"<<"\t"<<endl;
    			cin  >>sig_suche; 
    
                for (l=0;l<i;i++){
                int objektsig=array_medium[i]->getsig();           
    
                    if (sig_suche==objektsig){
                       array_medium[i]->entleihen();
    
                    }                   
                }
    
    			for (l=0;l<j;i++){
                int objektsig=array_buch[j]->getsig();           
    
                    if (sig_suche==objektsig){
                       array_buch[j]->entleihen();
                    }                   
                }
    
                for (l=0;l<k;i++){
                int objektsig=array_video[k]->getsig();           
    
                    if (sig_suche==objektsig){
                       array_video[k]->entleihen();
    
                    }                   
                }
    
    			break;
    		 }
    		case 'r':
    		case 'R':
            	if (array_medium==NULL && array_buch ==NULL && array_video==NULL){
    				cout<<"Bitte legen sie erst ein medium an"<<endl;
    				break;
    			}
    			cout <<":::RUECKGABE:::"<<endl;
    			cout <<"---------------"<<endl;
    			cout <<"Bitte Signatur eingeben:"<<"\t"<<endl;
    			cin  >>sig_suche; 
    
    			int objektsig;
                int x;
    
                for (l=0;l<i;i++){
                objektsig=array_medium[i]->getsig();           
    
                    if (sig_suche==objektsig){
                       array_medium[i]->rueckgabe();
                       x=1;
                    }                   
                }
    
    			for (l=0;l<j;i++){
                objektsig=array_buch[j]->getsig();           
    
                    if (sig_suche==objektsig){
                       array_buch[j]->rueckgabe();
    				   x=1;
    				}                   
                }
    
                for (l=0;l<k;i++){
                objektsig=array_video[k]->getsig();           
    
                    if (sig_suche==objektsig){
                       array_video[k]->rueckgabe();
                       x=1;
                    }                   
                }
    
    			if (x==0){
    
    				cout <<"Sorry aber die Signatur wurde nicht gefunden"<<endl;
    			}
    			break;
    
    		case 'q':
            case 'Q':
    			for (l=0;l<i;l++){
    			delete array_medium[i];
    			}
    			for (l=0;l<j;l++){
    			delete array_buch[j];
    			}
    			for (l=0;l<k;l++){
    			delete array_video[k];
    			}
                return 0;
    
    		default:
    
    			cout<<"Geben sie bitte den passenden Buchstaben an"<<endl;
    		}// ende switch
    
    	}//gehört zu while 
    
    return 0;
    }// ende main
    

    und zu guter letzt klassen.cpp

    #include <iostream>
    #include <iomanip>
    #include <stdlib.h>
    
    using namespace std;
    
    #include "headerm.h"
    
    void CMedium::init(){
    
    		bstatus = true;
    		strncpy(typ,"Medium\0",7);
    		cout<<'\t'<<"Bitte geben sie die Signature ein:  ";
    		cin>> signatur;
    
    		cout<<'\t'<<"Bitte geben sie den Titel ein:  ";
    		cin>> titel;
    
    		cout << endl << '\t' << "Daten erfolgreich aufgenommen." << endl;
    	}
    
    	void CMedium::anzeigen(){
    
    		if (bstatus==true){
    
    	cout << '\t' << setw(breite) << left << titel ;
    	cout << setw(breite) << right << signatur ;
    	cout << setw(breite) << right << "Medium"; 
    	cout << setw(breite) << right << "";
    	cout << setw(breite) << right << "";
    	cout << setw(breite) << right << "vorh." << endl;
    		}
    	else{
    	cout << '\t' << setw(breite) << left << titel ;
    	cout << setw(breite) << right << signatur ;
    	cout << setw(breite) << right << "Medium"; 
    	cout << setw(breite) << right << "";
    	cout << setw(breite) << right << "";
    	cout << setw(breite) << right << "entl." << endl;
    	}
    
    }
    	void CMedium::entleihen(){
    
    		if (bstatus){
    			bstatus = false;
    		cout <<"Das Medium " << titel << " wurde entliehen\n";
            }
    		else{
    
    			cout <<"Das Medium ist bereits entliehen\n";
    		}
    
    	}
    
    	void CMedium::rueckgabe(){
    
    		if(!bstatus){
    
    			bstatus = true;
    			cout <<"Danke";
    		}
    
    		else{
    
    			cout<<"Rueckgabe nicht möglich da Buch nicht entliehen\n";
    
    		}
    	}
    
        int CMedium::getsig(){
    
             return signatur;
        }
    
    void Buch::init(){
    
    	 bstatus=true;
         cout << '\t' <<"Bitte Buchdaten eingeben"<<endl;
       	 cout <<'\t' <<"-------------------------"<<endl;	
    	 cout << '\t' <<"Signatur:  ";
         cin >>signatur;
         cout << '\t' <<"Seitenzahl:  ";
         cin >>seitenzahl;
         cout << '\t' <<"Titel:  ";
         cin >>titel;
         cout << endl << '\t' << "Daten erfolgreich aufgenommen." << endl;
         }
    
    void Buch::anzeigen(){
         if (bstatus==true)
    	 {
    	cout << '\t' << setw(breite) << left << titel ;
    	cout << setw(breite) << right << signatur ;
    	cout << setw(breite) << right << "Buch"; 
    	cout << setw(breite) << right << seitenzahl; 
    	cout << setw(breite) << right << "";
    	cout << setw(breite) << right << "vorh." << endl;	
    	 }
    	else
    	{
    	cout << '\t' << setw(breite) << left << titel ;
    	cout << setw(breite) << right << signatur ;
    	cout << setw(breite) << right << "Buch"; 
    	cout << setw(breite) << right << seitenzahl; 
    	cout << setw(breite) << right << "";
    	cout << setw(breite) << right << "entl." << endl;
    	}
    }   
    
      void Video::init(){
    
    	 bstatus=true; 	
         cout << '\t' <<"Bitte Videodaten eingeben"<<endl;
    	 cout <<'\t' <<"--------------------------"<<endl;	
         cout << '\t' <<"Signatur:  ";
         cin >>signatur;
         cout << '\t' <<"Spieldauer:  ";
         cin >>spieldauer;
         cout << '\t' <<"Titel:  ";
         cin >>titel;
         cout << endl << '\t' << "Daten erfolgreich aufgenommen." << endl;
         }
    
    void Video::anzeigen(){
         if (bstatus==true)
    	 {
    	cout << '\t' << setw(breite) << left << titel ;
    	cout << setw(breite) << right << signatur ;
    	cout << setw(breite) << right << "Video"; 
    	cout << setw(breite) << right << ""; 
    	cout << setw(breite) << right << spieldauer;
    	cout << setw(breite) << right << "vorh." << endl;	
    	 }
    	else
    	{
    	cout << '\t' << setw(breite) << left << titel ;
    	cout << setw(breite) << right << signatur ;
    	cout << setw(breite) << right << "Video"; 
    	cout << setw(breite) << right << ""; 
    	cout << setw(breite) << right << spieldauer;
    	cout << setw(breite) << right << "entl." << endl;
    	}
    }
    

    Nachm Abbruch zeigt mir auf diese stelle:

    int CMedium::getsig(){

    ----> return signatur;

    Ich danke euch im voraus!!!



  • Sonst wünsche ?

    Nen Auto oder ne Villa in Südfrankreich ?

    Nicht abgefangene Ausnahme in projek1.exe: 0xC0000005: Access Violation.

    Also, Du hast irgendwo eine Zugriffsverletzung und bekamst hierfür eine Ausnahme geworfen, der Debugger ist Dein Freund :xmas2:



  • Hallo

    Es wäre schon schön, wenn du das etwas eingrenzen könntest.

    chrische



  • ToniM schrieb:

    ...brauche dringends ... hilfe ...

    z.B. bei der sinnvollen Formulierung eines Threadtitels...

    Gruß,

    Simon2.



  • Du solltest dir an der betreffenden Stelle mal den Call Stack anschauen, um zu sehen, wo die Funktion getsig aufgerufen wird. Evtl. gibt es keine gültige Instanz.

    Und dies

    main.cpp:162: warning: 'x' might be used uninitialized in this function
    

    solltest du auch noch mal überdenken.

    ps:
    Und was bereits gesagt wurde, verwende aussagekräftige Threadtitel!



  • kann mich auch nur anschließen -.-

    kannst du dein problem etwas eingrenzen ?



  • erklär mal das:

    for (l=0;l<i;i++){
                int objektsig=array_medium[i]->getsig();
    

    😉


Anmelden zum Antworten