mostwanted90
Grünschnabel
Hi@all
Ich habe folgende Aufgabe gefunden aber keine Lösung dazu...:
Ich hab nun folgende Quellcode-Schnipsel:
Kann mit vielleicht jemand helfen die Aufgabe zu lösen.
Mfg Most
Ich danke euch schon einmal im Vorraus...
ps: Das ist keine Hausaufgabe ich mach das nur um in der Berufsschule (Ausbildung zum FI FR Systemintegration) in C++ mit halten kann....;-)
![Confused :confused: :confused:](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f615.png)
Ich habe folgende Aufgabe gefunden aber keine Lösung dazu...:
1. Schreibe eine Klasse CText die mindestens folgende Methoden enthält..
- CText()
- CText(char* psText)
- CopyKonstruktor
- Zuweisungsoperator
- char* Holetext()
- void SetzteText(char* psText)
- void Eingabe(char* psAuforderung)
z.B. Eingabe("Vorname:" -> Vorname: _
- int Holelaenge()
-void Ersetzte(char cAlt,char cNeu)
z.B. "Hubabuba" -> Ersetzte('u','x') -> "Hxbabxba"
Es sollen Texte beliebiger Länge verwaltet werden können....
2. Deklariere alle Methoden und Übergabe Parameter mit const wo es sinnvoll ist.
3. Erstekke eine Klasse CMitarbeiter unter der Verwendung der Klasse CText für Texte. Ergänze Const wo es sinnvoll ist..
Member:
Name -Text
Vorname -Text
Geburtsjahr -Zahl
Gehalt -Kommazahl
Abteilung -Text
Personalnummer -Zahl (Automatisch eindeutig vergeben)
Methoden
CMitarbeiter()
CMitarbeiter( char* psName, char* psVorname, int nGeburtsjahr)
Copy-Konstruktor
Zuweisungsoperator
void Abteilungeingeben()
void Gehalteingeben()
void Ausgabe()
int Holepersonalnummer()
4. Erstelle eine Funktion Eingabe
-CMitarbeiter Eingabe();
In dieser FUNKTION sollen Name, Vorname, Geburtsjahr erfasst werden und in ein Mitarbeiter Objekt zurück geliefert werden![]()
5. Erstelle ein Programm in dem der Benutzter eine Anzahl von MItarbeitern vorgeben kann.Verwende die Funktion eingabe um die Mitarbeiter einzugeben
6. Erstelle eine Funktion Ausgeben mit der alle Mitarbeiter ausgegeben werden können.
-void Ausgabe(int Anzahl, CMitarbeiter* pMitarbeiter)
7. Erstelle eine Funktion Gehaltaendern und Abteilungaendern. Hier soll die Personalnummer eingegeben werden und dann das Gehalt oder die Abteilung des zugehörigen Mitarbeiters eingegeben werden.
-void Gehaltaendern(int Anzahl, CMitarbeiter* pMitarbeiter)
-void Abteilungaendern(int Anzahl, CMitarbeiter* pMitarbeiter)
Ich hab nun folgende Quellcode-Schnipsel:
Kann mit vielleicht jemand helfen die Aufgabe zu lösen.
Code:
#include "stdafx.h"
#include <conio.h>
#include <iostream.h>
#include <string.h>
#include <search.h>
#include <stdlib.h>
#include <stdio.h>
class CText
{
public:
CText();
CText(char* psText);
CText(const CText& co);
CText& operator= (const CText &);
char HoleText();
void setzeText(char* psText);
AriseArray(int Groesse);
void Eingabe(char* psAufforderung);
int HoleLaenge();
void Ersetze(char cAlt, char cNeu);
protected:
int m_Blockgroesse;
char* m_pData;
int m_Groesse;
int m_Zaehler;
};
CText::CText()
:m_pData(0),m_Groesse(0),m_Zaehler(0)
{
}
CText::CText(const CText& co)
: m_Groesse(co.m_Groesse)
{
strcpy(m_pData,new char[co.m_Groesse]);
memcpy(m_pData, co.m_pData, m_Groesse*sizeof(char) );
}
CText::CText(char* psText)
:m_Groesse(0)
{
m_pData = new char[500];
}
char CText::HoleText()
{
cout<<m_pData;
return 0;
}
CText& CText::operator= (const CText &rhs)
{
m_pData = new char[rhs.m_Groesse];
memcpy(m_pData, rhs.m_pData, m_Groesse*sizeof(char) );
this->m_Blockgroesse=rhs.m_Blockgroesse;
this->m_Groesse = rhs.m_Groesse;
this->m_Zaehler=rhs.m_Zaehler;
return *this;
}
void CText::setzeText(char* psText)
{
if(strlen(psText)>=500)
{
AriseArray((strlen(psText))+5);
}
m_pData=psText;
}
void CText::Eingabe(char* psAufforderung)
{
char Text1[500];
char* pZeiger;
char Text2[256];
int x=0;
if(psAufforderung[0]=='N')
{
x=1;
}
if(psAufforderung[0]=='V')
{
x=2;
}
if(psAufforderung[0]=='A')
{
x=3;
}
switch(x)
{
case 1:
{
cin>>Text2;
strcpy(Text1,"Name: ");
strcat(Text1,Text2);
break;
}
case 2 :
{
cin>>Text2;
strcpy(Text1,"Vorname: ");
strcat(Text1,Text2);
break;
}
case 3 :
{
cin>>Text2;
strcpy(Text1,"Abteilung: ");
strcat(Text1,Text2);
break;
}
default:
{
cout<<"Keine Erlaubte einabe \n";
break;
}
}
pZeiger=Text1;
setzeText(pZeiger);
}
int CText::HoleLaenge()
{
return m_Groesse;
}
CText::AriseArray(int Groesse)
{
char* _Temp = new char[Groesse];
memset(_Temp, 0, sizeof(char) * (Groesse));
memcpy(_Temp, m_pData, sizeof(char) * 500);
delete[] m_pData;
m_pData = _Temp;
return 0;
}
void CText::Ersetze(char cAlt,char cNeu)
{
char Alt=cAlt;
char Neu=cNeu;
char* pDset;
int result;
while(pDset != 0)
{
pDset = strchr(m_pData, Alt );
result = pDset - m_pData + 1;
m_pData[result]=Neu;
}
}
class CMitarbeiter
{
public:
CMitarbeiter();
CMitarbeiter(char* psName,char* psVorname, int nGeburtsjahr);
//Copy-Konstrultor
//Zuweisungsoperator()
int HolePersonen();
void AbteilungEingeben();
void GehaltEingeben();
void Ausgabe(int Anzahl);
int HolePersonalNummer();
void Eingabe();
protected:
char m_Name[750];
char m_Vorname[750];
int m_Geburtsjahr;
double m_Gehalt;
char m_Abteilung[500];
int m_Personalnummer[500];
int* m_Personalnummern;
int m_Zaehler;
int m_anzahl;
};
/*CMitarbeiter Eingabe()
{
cout<<"Name Eingeben:\n";
cin>>m_Name;
cout<<"Vorname eingeben: \n";
cin>>m_Vorname;
cout<<"Bitte Geburtsjahr eingeben: \n";
cin>>m_Geburtsjahr;
}
*/
CMitarbeiter::CMitarbeiter()
{
m_Personalnummern=new int[500];
}
CMitarbeiter::CMitarbeiter(char* psName,char* psVorname,int nGeburtsjahr)
{
}
int CMitarbeiter::HolePersonen()
{
cout<<"Wie viele Mitarbeiter haben sie?";
cin>>m_anzahl;
return m_anzahl;
}
void CMitarbeiter::Eingabe()
{
cout<<"Name: ";
cin>>m_Name;
cout<<"Vorname: \n";
cin>>m_Vorname;
cout<<"Geburtsjahr: \n";
cin>>m_Geburtsjahr;
}
void CMitarbeiter::AbteilungEingeben()
{
cout<<"Abteilung: ";
cin>>m_Abteilung;
}
void CMitarbeiter::GehaltEingeben()
{
cout<<"Gehalt eingeben";
cin>>m_Gehalt;
}
int CMitarbeiter::HolePersonalNummer()
{
int z=0;
for(int y=0;y<=m_Zaehler;y++)
{
z=1000+y;
}
m_Zaehler++;
return z;
}
void CMitarbeiter::Ausgabe(int Anzahl)
{
for(int y=0;y<=Anzahl;y++)
{
cout<<m_Name <<endl;
cout<<m_Vorname <<endl;
cout<<m_Geburtsjahr <<endl;
cout<<m_Abteilung <<endl;
cout<<m_Personalnummer <<endl;
cout<<m_Gehalt <<endl;
}
}
int main(int argc, char* argv[])
{
CMitarbeiter CMitarbeiter;
int Zaehler=0;
char Auffoerdernung[600];
int Anzahl=CMitarbeiter.HolePersonen();
while(Zaehler!=Anzahl)
{
CMitarbeiter.Eingabe();
CMitarbeiter.AbteilungEingeben();
CMitarbeiter.GehaltEingeben();
Zaehler++;
}
CMitarbeiter.Ausgabe(Anzahl);
return 0;
}
Mfg Most
Ich danke euch schon einmal im Vorraus...
ps: Das ist keine Hausaufgabe ich mach das nur um in der Berufsschule (Ausbildung zum FI FR Systemintegration) in C++ mit halten kann....;-)