Hallo,
ich möchte in einem Programm die Daten von Mitarbeitern eingeben und anzeigen können.
Dafür benutze ich ein Menü im Haupprogramm über welches ich die Funktionen zur Eingabe und Anzeige Aufrufe und die Struktur zum Anzeigen als Referenz und zum Eingeben der Daten als Zeiger übergebe.
Das klappt soweit auch, das Problem ist das ich bei der Eingabe nur die Werte für das erste Feld verändern kann die restlichen Felder aber unberührt bleiben und das Programm nach dem beenden den Fehler: Run-Time Check Failure #2 - Stack around the variable 'Mitarbeiter_ID' was corrupted. ausgibt.
(Ich benutzen Visual C++ 2008)
Der Fehler ist warscheinlich der, das ich das Array falsch übergeben haben (wenn ich die Werte in der Funktion "daten_eingeben" ausgeben lasse existiert nur ein Feld, keine drei, in daten_anzeigen wo sie als Referenz übergebe sind alle 3 Werte vorhanden) bzw der syntax falsch ist aber ich weiß leider nicht wie ich den fehler beheben kann.
Hier ist der Code:
menue.cpp
main.hpp
daten_eingabe.cpp
daten_anzeigen.cpp
personal_pruefen.cpp
ich möchte in einem Programm die Daten von Mitarbeitern eingeben und anzeigen können.
Dafür benutze ich ein Menü im Haupprogramm über welches ich die Funktionen zur Eingabe und Anzeige Aufrufe und die Struktur zum Anzeigen als Referenz und zum Eingeben der Daten als Zeiger übergebe.
Das klappt soweit auch, das Problem ist das ich bei der Eingabe nur die Werte für das erste Feld verändern kann die restlichen Felder aber unberührt bleiben und das Programm nach dem beenden den Fehler: Run-Time Check Failure #2 - Stack around the variable 'Mitarbeiter_ID' was corrupted. ausgibt.
(Ich benutzen Visual C++ 2008)
Der Fehler ist warscheinlich der, das ich das Array falsch übergeben haben (wenn ich die Werte in der Funktion "daten_eingeben" ausgeben lasse existiert nur ein Feld, keine drei, in daten_anzeigen wo sie als Referenz übergebe sind alle 3 Werte vorhanden) bzw der syntax falsch ist aber ich weiß leider nicht wie ich den fehler beheben kann.
Hier ist der Code:
menue.cpp
Code:
#include <iostream>
#include <conio.h>
#include "main.hpp"
using namespace std;
void main(){
int Auswahl;
S_Mitarbeiter Mitarbeiter_ID[3];
for (int i=0; i<=2; i++)
{
Mitarbeiter_ID[i].fBruttoeinkommen = NULL;
Mitarbeiter_ID[i].fSozialabgaben = NULL;
Mitarbeiter_ID[i].chName[0] = '\0';
}
do
{
cout << "(1) Daten eingeben" << endl;
cout << "(2) Daten eines Mitarbeiters anzeigen" << endl;
cout << "Auswahl: ";
cin >> Auswahl;
switch (Auswahl)
{
case (1):
{
cout << "----------" << endl;
daten_eingabe(&Mitarbeiter_ID);
system ("cls");
} break;
case (2):
{
cout << "----------" << endl;
daten_anzeigen(Mitarbeiter_ID);
system ("cls");
} break;
case (6):
{
cout << "----------" << endl;
cout << "Das Programm wird beendet." << endl;
cout << "Bis bald." << endl;
} break;
default:
{
cout << "----------" << endl;
cout << "Falsche Eingabe!" << endl;
_getch();
system ("cls");
}
}
}while (Auswahl != 6);
_getch();
}
main.hpp
Code:
struct S_Mitarbeiter
{
float fBruttoeinkommen;
float fSozialabgaben;
char chName[30];
};
void daten_eingabe(S_Mitarbeiter (*pMitarbeiter_ID)[3]);
void daten_anzeigen(const S_Mitarbeiter (&Mitarbeiter_ID)[3]);
int personal_pruefen();
daten_eingabe.cpp
Code:
void daten_eingabe(S_Mitarbeiter (*pMitarbeiter_ID)[3]){
int mnr = personal_pruefen();
cout << "--------------" << endl;
cout << "Bitte geben sie die Daten fuer Mitarbeiter Nr." << mnr << " ein:" << endl;
cout << "Name: ";
cin.ignore();
cin.get (pMitarbeiter_ID[mnr-1]->chName, 29);
cout << "Bruttoeinkommen: ";
cin >> pMitarbeiter_ID[mnr-1]->fBruttoeinkommen;
cout << "Sozialabgaben: ";
cin >> pMitarbeiter_ID[mnr-1]->fSozialabgaben;
cout << "--------------" << endl;
cout << "Vielen Dank fuer ihre Eingabe." << endl;
_getch();
}
daten_anzeigen.cpp
Code:
void daten_anzeigen(const S_Mitarbeiter (&Mitarbeiter_ID)[3]){
int mnr = personal_pruefen();
cout << "--------------" << endl;
cout << "Mitarbeiter: " << mnr << endl;
cout << "Name: " << Mitarbeiter_ID[mnr-1].chName << endl;
cout << "Bruttoeinkommen: " << Mitarbeiter_ID[mnr-1].fBruttoeinkommen << " Euro" << endl;
cout << "Sozialabgaben: " << Mitarbeiter_ID[mnr-1].fSozialabgaben << " Euro" << endl;
_getch();
}
personal_pruefen.cpp
Code:
int personal_pruefen(){
int mnr;
do
{
cout << "Bitte waehlen Sie eine Personalnummer (1-3): ";
cin >> mnr;
if (mnr<1 || mnr>3)
{
cout << "Falsche Eingabe!" << endl;
_getch();
cout << "----------" << endl;
}
}while (mnr<1 || mnr>3);
return mnr;
}
Zuletzt bearbeitet: