programmerer Skrevet 25. februar 2008 Skrevet 25. februar 2008 (endret) Hvordan skal jeg få til endre_partner og slett_ansatt funskjonene? #include <iostream> #include <fstream> #include <cstring> using namespace std; const int STRLEN = 40; const int MAX_ANSATT = 101; const int MAX_BARN = 21; const int DATLEN = 7; enum Kjonn {jente, gutt}; // Deklarasjon av funksjoner: void skriv_meny(); char les_kommando(); void ny_ansatt(); void endre_partner(); void slett_ansatt(); void les_fra_fil(); int hent_nr(); void oversikt (); //void skriv_til_fil(ostream* ut); void les(const char t[], char s[], const int LEN); int les(const char t[], const int min, const int max); /////////////////////////////////////////////////////////////////////////////// class Person { private: char f_navn[sTRLEN]; char* fornavn; char fodselsdato[DATLEN]; public: Person() { les("Fornavn", f_navn, STRLEN); fornavn = new char[strlen(f_navn)+1]; strcpy(fornavn, f_navn); les("Fødselsdato(ååmmdd)", fodselsdato, DATLEN); }; Person(istream* inn) { }; void display(); void skriv_person() { void skriv_barn(); } //void skriv_til_fil(ostream* ut); }; /////////////////////////////////////////////////////////////////////////////// class Barn: public Person { private: Kjonn kjonn; int k_jonn; public: Barn() { cout << "Barnets kjønn(0=jente, 1=gutt): "; cin >> k_jonn; cin.ignore(); kjonn = (Kjonn) k_jonn; switch (kjonn) { case jente: cout <<"Jente"; break; case gutt: cout << "Gutt"; break; } }; Barn(istream* inn) { }; void skriv_barn() { void skriv_person(); } }; /////////////////////////////////////////////////////////////////////////////// class Voksen: public Person { private: char e_navn[sTRLEN]; char* etternavn; public: Voksen(){ les("Etternavn", e_navn, STRLEN); etternavn = new char[strlen(e_navn)+1]; strcpy(etternavn, e_navn); }; Voksen(istream* inn) { }; void skriv_voksen() { void skriv_person(); } }; /////////////////////////////////////////////////////////////////////////////// class Partner: public Voksen { private: int telefon1; int telefon2; public: Partner() { cout << "\nJobbenr.: "; cin >> telefon1; cout << "\nMobilnr.: "; cin >> telefon2; cin.ignore();}; Partner(istream* inn) { }; void skriv_partner() { void skriv_voksen(); } }; /////////////////////////////////////////////////////////////////////////////// class Ansatt: public Voksen { private: int nr; int ant_barn; int p_artner; char a_dresse[sTRLEN]; char* adresse; Partner* partner; Barn* barn[MAX_BARN]; public: Ansatt(); Ansatt(istream* inn) { }; int hent_nr() {return nr;} void display(); void skriv_ansatt() { void skriv_voksen(); } }; /////////////////////////////////////////////////////////////////////////////// // Globale variabler: Ansatt* ansatte[MAX_ANSATT]; int siste_brukt; int main() { char kommando; skriv_meny(); kommando = les_kommando(); while (kommando != 'Q') { switch (kommando) { case 'N': ny_ansatt(); break; case 'P': endre_partner(); break; case 'B': break; case 'D': skriv_ansatt(); break; case 'A': break; case 'F': slett_ansatt(); break; default: skriv_meny(); break; // Ikke-eksisterende menyvalg. } kommando = les_kommando(); } return 0; } Ansatt::Ansatt() { //cout << "\nAnsattnr: "; cin >> nr; ant_barn = les("Hvor mange barn?", 0, MAX_BARN); les("Hvor bor den ansatte?", a_dresse, STRLEN); adresse = new char[strlen(a_dresse)+1]; cout << "\nHar partner?(0 =NEI, 1 =JA) "; cin >> p_artner; cin.ignore(); if(p_artner == 1) { new Partner(); } else cout << "\nHar ingen partner!!\n"; if(ant_barn != 0) { cout << "\nBarnas navn. \n"; for (int i = 1; i <= ant_barn; i++) new Barn(); } else cout << "\nHar ingen barn!!\n"; cout << "\nAntall Barn:\t" << ant_barn << endl; } void ny_ansatt() { bool sjekk=false; int ans_nr; ans_nr=les("\nSkriv inn ansat nr: ",1,100); for(int i=1; i<=siste_brukt; i++) { if(ansatte->hent_nr()==ans_nr); { sjekk=true; cout << "\nDette nr er allerede i brukt;" << endl; } } if(sjekk==false) { ansatte[++siste_brukt] = new Ansatt(); } if(siste_brukt < MAX_ANSATT-1) { } else cout << "\nBeklager, ikke plass til flere ansatte!!\n"; } void endre_partner() { } void slett_ansatt() { } void les_fra_fil () { } void oversikt() { int i; for (i = 1; i <= siste_brukt; i++) // Skriver alle menneskenes data. ansatte->skriv_ansatt(); } // leser inn en ikke-blank tekst: void les(const char t[], char s[], const int LEN) { do { cout << '\t' << t <<": "; // skriver ledetekst. cin.getline(s, LEN); // leser inn tekst. } while (strlen(s) == 0); // sjekker at tekstlengden er ulik 0 } // leser et tall i et visst intevall: int les(const char t[], const int min, const int max) { int n; do { // skriver ledetekst: cout << '\t' << t << " (" << min << '-' << max <<"): "; cin >> n; cin.ignore(); // leser inn ett tall. } while (n < min || n >max); // sjekker at i lovlig intervall. return n; //Returnerer innlest tall. } void skriv_meny() { // Liste over lovlige menyvalg. cout << "\n\nFØLGENDE KOMMANDOER ER LOVLIG:\n"; cout << "\tN = Legge til ny ansatt.\n"; cout << "\tP = Endre data om en partner.\n"; cout << "\tB = Legge til/inn et nytt barn om en ansatt.\n"; cout << "\tD = Skrive ut data om en ansatt.\n"; cout << "\tA = Skrive ut nummer til ansatte med barn født i et gitt år.\n"; cout << "\tF = Fjern/slett en ansatt.\n"; cout << "\tQ = quit/avslutt\n"; } char les_kommando() { // Ber om ett tegn ulikt blank, char ch; // og returnerer dette. cout << "\nVil du registrere/endre/skrive ut/slette? " << '\n'; cin >> ch; cin.ignore(); return toupper(ch); // returnere tegnet omgjort til stor bokstav. } Endret 25. februar 2008 av programmerer
programmerer Skrevet 25. februar 2008 Forfatter Skrevet 25. februar 2008 (endret) Gjør leksene dine selv gutt! Det er for vanskelig!! Endret 25. februar 2008 av programmerer
DeadManWalking Skrevet 25. februar 2008 Skrevet 25. februar 2008 Les hardere da, stort sett så skal du ha en minste forutsetning før å løse utdelte oppgaver.
programmerer Skrevet 25. februar 2008 Forfatter Skrevet 25. februar 2008 Les hardere da, stort sett så skal du ha en minste forutsetning før å løse utdelte oppgaver. Det er ikke så lett.. Men du kan jo hjelpe hvis du kan det..
DeadManWalking Skrevet 25. februar 2008 Skrevet 25. februar 2008 Fortell litt mer, jeg tviler oppgaveteksten var så kort som over.
programmerer Skrevet 25. februar 2008 Forfatter Skrevet 25. februar 2008 Du skal lage et program som har følgende muligheter/menyvalg: 1. N - Legge inn en ny ansatt Dvs. ta i bruk (om mulig) neste peker i arrayen ”ansatte” og les inn alle aktuelle data om vedkommende. Arrayen ”ansatte” holdes hele tiden sortert på ”nr”, dvs. nye smettes inn. 2. P - Endre data om en partner Om et gitt ansatt-nummer finnes, så endres dataene om vedkommendes partner. 3. B - Legge til/inn et nytt barn hos en ansatt Om et gitt ansatt-nummer finnes, så legges (om mulig) ett nytt barn til hos vedkommende. 4. D - Skrive ut alle data om en ansatt Om et gitt ansatt-nummer finnes, så skrives alle dataene om vedkommende ut til skjermen. 5. A – Skrive ut numrene til alle ansatte som har barn født i et gitt år Det leses først inn et fire-sifret årstall. Numrene til alle ansatte som har barn født i dette året skrives så ut til skjermen. 6. F – Fjern/slett en ansatt Om et gitt ansatt-nummer finnes, så tas vedkommende ut av datastrukturen og slettes. For å tette igjen ’hullet’, så flyttes alle de etterfølgende ”ansatte” ned ett hakk i arrayen. 7. Lese datastrukturen fra fil I starten av programmet leses (automatisk) hele datastrukturen inn fra fil.
DeadManWalking Skrevet 25. februar 2008 Skrevet 25. februar 2008 (endret) Og hva var det du ikke fikk til nå igjen? Det var det første innlegget var til ja. Endret 25. februar 2008 av data_jepp
programmerer Skrevet 25. februar 2008 Forfatter Skrevet 25. februar 2008 Og hva var det du ikke fikk til nå igjen? Det meste men trenger mest hjelp til de funksjonene jeg skrev øverst
Giddion Skrevet 26. februar 2008 Skrevet 26. februar 2008 Og hva var det du ikke fikk til nå igjen? Det meste men trenger mest hjelp til de funksjonene jeg skrev øverst La oss ta endre_partner først hva er det du ikke får til. Hvis du skal få hjelp så må du spesifiserer bedre!.
programmerer Skrevet 26. februar 2008 Forfatter Skrevet 26. februar 2008 (endret) La oss ta endre_partner først hva er det du ikke får til. Hvis du skal få hjelp så må du spesifiserer bedre!. Jeg fikk til endre_partner funksjonen i går, heldigvis Slett funksjonen er det litt værre med.. foreløpig har jeg kommet opp med dette: void Ansatt::slett_ansatt() { // Sletter (om mulig) EN gitt ansatt: int nr = les("Slett ansatt", 1, 100); // Leser aktuelt ansattnummer. //delete // for (int i=1; i<siste_brukt;) // } Endret 26. februar 2008 av programmerer
Giddion Skrevet 27. februar 2008 Skrevet 27. februar 2008 La oss ta endre_partner først hva er det du ikke får til. Hvis du skal få hjelp så må du spesifiserer bedre!. Jeg fikk til endre_partner funksjonen i går, heldigvis Slett funksjonen er det litt værre med.. foreløpig har jeg kommet opp med dette: void Ansatt::slett_ansatt() { // Sletter (om mulig) EN gitt ansatt: int nr = les("Slett ansatt", 1, 100); // Leser aktuelt ansattnummer. //delete // for (int i=1; i<siste_brukt;) // } Etter det det står i oppgaven så skal du flytte alle elementene over den ansatte du skal slette til posisjonen der den ansatte du skal slette ligger. memmove er tingen for deg
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå