Pomoć C++ zadatak

poruka: 18
|
čitano: 10.230
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
11 godina
neaktivan
offline
Pomoć C++ zadatak

Kolegici je potrebna pomoć oko jednog zadatka, ne zna ni gdje početi jer se još nismo učili klase.

Zadatak:

 

Izraditi program koji će ilustrirati način korištenja klasa i ostalih elemenata C++ jezika. Program je manjeg obima pod nazivom „POPIS STUDENATA“. Za svakog podatke o studentu potrebno je definirati klasu sa svim njenim elementima (konstruktor, destruktor, funkcijama, atributima). Svaki student opisan je sljedećim atributima: • prezime • ime • datum rođenja • godina studija • status studenta (redovni / izvanredni) Program će imati sljedeće meni opcije: 1. Učitavanje popisa studenata • u ovoj opciji program će učitavati podatke o studentima. Učitavanje će se vršiti pomoću ulazne datoteke pod nazivom „studenti.txt“. U toj datoteci bit će zapisani podaci o studentima. Podaci o svakom studentu zapisani su u zaseban red datoteke odvojenim točkom zarezom. Odabirom ove opcije iz datoteke će se pročitati podaci o studentima i zapisati u polje ili vektor. Zbog dinamičnosti preporučujem vektor. Nakon učitavanja neka se na zaslonu pojavi informacija koliko studenata je učitano. Stari podaci u programu neka se obrišu prije učitavanja. 2. Traženje studenta • u ovoj opciji programa korisniku daje mogućnost da upiše prezime studenta, a program će prikazati na zaslon sve podatke o tom studentu. Ukoliko u popisu nema studenta s tim prezimenom, na zaslonu će se pojaviti poruka upozorenja. 3. Brisanje studenta • u ovoj opciji programa vrši se brisanje studenta iz popisa knjiga. Brisanje se vrši na osnovi upisanog prezimena i imena studenta. Nakon brisanja neka se na zaslonu prikaže poruka o obavljenoj akciji. 4. Pregled svih studenata • u ovoj opciji na zaslonu se prikazuju svi podaci o svim studentima koji su trenutno zapisani u vektoru/polju. 5. Upis podataka o novom studentu • u ovoj opciji programa omogućuje upis podatka o novom studentu. Podaci se zapisuju u klasu i u vektor/polje. Nakon upisa neka se na zaslonu pojavi poruka o završenoj operaciji. 6. Zapisivanje svih studenata u datoteku veleučilište 2 • u ovoj opciji programa zapisuje sve podatke o studentima iz vektora/polja u datoteku „studenti.txt“. Pri tome stari podaci iz datoteke se brišu, a ostaju samo trenutni iz vektora/polja. 7. Izlaz iz programa • u ovoj opciji programa završava rad programa.

 

Bila bih jako zahvalna kad bi neko odvojio vrijeme tko zna ovakav zadatak napraviti.

Poruka je uređivana zadnji put sub 11.8.2012 0:28 (Princess.Leia).
 
0 2 hvala 0
14 godina
offline
Re: Pomoć C++ zadatak
Princess.Leia kaže...

 Podaci o svakom studentu zapisani su u zaseban red datoteke odvojenim točkom zarezom.

Ovaj dio nisam bas shvatio. Dali su podaci medusobno odvojeni tockom zarezom, ili se na kraju svakog reda nalazi tocka zarez.

 

Ja sam napisao kod sa pretpostakom da se na kraju svakoga reda nalazi tocka zarez:

 

FIle: student.h

#ifndef STUDENT_H
#define STUDENT_H

#include <string>
#include <vector>
#include <iostream>

enum StudentState{FullTime,PartTime};

class student
{
    friend std::ostream& operator<<(std::ostream&, const student&);
    friend std::istream& operator>>(std::istream&, student&);
    public:
        student();
        /** Default constructor */
        student(std::string name, std::string surname, unsigned int birthYear, unsigned int studentYear, StudentState state);
        /** Default destructor */
        virtual ~student();
        /** Access Name
         * \return The current value of Name
         */
        std::string GetName() const { return Name; }
        /** Set Name
         * \param val New value to set
         */
        void SetName(std::string val) { Name = val; }
        /** Access Surname
         * \return The current value of Surname
         */
        std::string GetSurname() const { return Surname; }
        /** Set Surname
         * \param val New value to set
         */
        void SetSurname(std::string val) { Surname = val; }
        /** Access BirthYear
         * \return The current value of BirthYear
         */
        unsigned int GetBirthYear() const { return BirthYear; }
        /** Set BirthYear
         * \param val New value to set
         */
        void SetBirthYear(unsigned int val) { BirthYear = val; }
        /** Access StudentYear
         * \return The current value of StudentYear
         */
        unsigned int GetStudentYear() const { return StudentYear; }
        /** Set StudentYear
         * \param val New value to set
         */
        void SetStudentYear(unsigned int val) { StudentYear = val; }
        /** Access State
         * \return The current value of State
         */
        StudentState GetState() const { return State; }
        /** Set State
         * \param val New value to set
         */
        void SetState(StudentState val) { State = val; }
    protected:
    private:
        std::string Name; //!< Member variable "Name"
        std::string Surname; //!< Member variable "Surname"
        unsigned int BirthYear; //!< Member variable "BirthYear"
        unsigned int StudentYear; //!< Member variable "StudentYear"
        StudentState State; //!< Member variable "State"
};

/** Output to std ostream*/
std::ostream& operator<<(std::ostream&,const student&);

/** Inputing from std istream*/
std::istream& operator>>(std::istream&, const student&);

#endif // STUDENT_H

 

File: student.cpp

#include "student.h"

student::student(){}
student::student(std::string name, std::string surname, unsigned int birthYear, unsigned int studentYear, StudentState state):Name(name),Surname(surname),BirthYear(birthYear),StudentYear(studentYear),State(state){}


student::~student(){}

std::ostream& operator<<(std::ostream& os,const student& temp){
    os<< temp.Name<<" "<<temp.Surname<<" "<<temp.BirthYear<<" "<<temp.StudentYear<<" ";
    if(temp.State == FullTime)
        os<<"redovni";
    else
        os<<"izvanredni";
    return os;
}

std::istream& operator>>(std::istream& is,student& temp){
    is>>temp.Name;
    is>>temp.Surname>>temp.BirthYear>>temp.StudentYear;

    if(temp.Name == "")
        return is;

    std::string sState;
    is>>sState;

    std::string::iterator it = sState.end();
    it--;
    if( *it == ';')
        sState.erase(it);

    is.ignore(10000,'\n');

    if(sState == "redovni")
        temp.State = FullTime;
    else
        temp.State = PartTime;

    return is;
}

File: main.cpp

#include <iostream>
#include <fstream>
#include <vector>
#include "student.h"

using namespace std;


int main()
{
    fstream inputStudents("studenti.txt");
    vector<student> students;

    if(inputStudents.good() == false){
        cerr<<"Nije moguce otvoriti datoteku!"<<endl;
        return 0;
    }

    while(true){
        cout<<"Opcije:"<<endl
            <<"1. Ucitavanje popisa studenata"<<endl
            <<"2. Trazenje studenata"<<endl
            <<"3. Brisanje studenata"<<endl
            <<"4. Pregled svih studenata"<<endl
            <<"5. Upis podatak o novom studentu"<<endl
            <<"6. Zapisivanje svih studenata u datoteku Medimursko sveuciliste"<<endl
            <<"7. Izlaz iz programa"<<endl;
        cout<<endl;

        unsigned int selection;
        cin>>selection;

        switch(selection){
            case 1:
            {
                students.clear();
                while(inputStudents.eof() == false){
                    student temp;
                    inputStudents>>temp;
                    if(temp.GetName() == "")
                        continue;
                    students.push_back(temp);
                }
                cout<<"Ucitano "<<students.size()<<" studenata"<<endl;
                cout<<endl;
                break;
            }
            case 2:
            {
                cout<<"Upisite prezime: "<<endl;
                string surname;
                cin>>surname;

                bool found = false;
                for(vector<student>::iterator it = students.begin(); it != students.end(); it++)
                    if((*it).GetSurname() == surname){
                        found = true;
                        cout<< (*it) <<endl;
                    }

                if(found == false)
                    cerr<<"Ne postoji ni jedan student sa tim imenom"<<endl;
                cout<<endl;
                break;
            }
            case 3:
            {
                cout<<"Unesite ime i prezime studenta!"<<endl;
                string surname,name;
                cin>>name>>surname;

                bool deleted = false;
                for(vector<student>::iterator it = students.begin(); it != students.end(); it++)
                    if((*it).GetName() == name && (*it).GetSurname() == surname){
                        deleted = true;
                        students.erase(it);
                        break;
                    }

                if(deleted == true)
                    cout<<"Student izbrisan!"<<endl;
                else
                    cerr<<"Ne postoji student sa tim imenom i prezimenom"<<endl;
                break;
                cout<<endl;
            }

            case 4:
            {
                for(vector<student>::iterator it = students.begin(); it != students.end(); it++)
                    cout<< (*it) <<endl;
                break;
            }
            case 5:
            {
                string name, surname;
                unsigned int birthYear, studentYear;
                StudentState state;
                string sState;
                cout<<"Unosenje novog studenta!"<<endl;

                cout<<"Ime: ";
                cin>>name;

                cout<<"Prezime: ";
                cin>>surname;

                cout<<"Godina rodenja: ";
                cin>>birthYear;

                cout<<"Godina studija: ";
                cin>>studentYear;

                cout<<"Status studenta(redovni/izvanredni): ";
                cin>>sState;

                if(sState == "redovni")
                    state = FullTime;
                else
                    state = PartTime;
                students.push_back(student(name,surname,birthYear,studentYear,state));
                cout<<endl;
                break;
            }
            case 6:
            {
                inputStudents.close();
                inputStudents.open("studenti.txt", ios_base::in | ios_base::out | ios_base::trunc);
                for(vector<student>::iterator it = students.begin(); it != students.end(); it++ )
                    inputStudents<< (*it) << endl;
                break;
            }
            case 7:
            {
                inputStudents.close();
                return 0;
            }
        }

    }
    return 0;
}

I would love to change the world, but they won't give me the source code
Poruka je uređivana zadnji put sub 11.8.2012 13:12 (captain_soap_McTawish).
11 godina
neaktivan
offline
Re: Pomoć C++ zadatak

pod dobrom pretpostavkom je napravljen i hvala puno :)

 

ima još dva "zadačića" pa ukoliko imate volje i vremena navalite

 

1.  Zadatak

 

Izraditi program koji će ilustrirati način korištenja klasa i naslijeđenih klasa. u C++ jezika. Program je manjeg obima pod nazivom „NASLJEĐENE KLASE“. Osnovna klasa bit će osoba, a izvedena klasa bit će profesor. Osnovna klasa imat će sljedeće atribute: ime, prezime, godina rođenja, spol. Iz osnovne klase neka je izvedena klasa profesor sa sljedećim atributima: titula, studij, kolegij koji predaje. Za svaku klasu potrebno je definirati : konstruktor, destruktor, funkcijama, atribute.

Program će imati sljedeće meni opcije:

1. Učitavanje popisa studenata • u ovoj opciji program će učitavati podatke o profesorima. Učitavanje će se vršiti pomoću ulazne datoteke pod nazivom „profesori.txt“. U toj datoteci bit će zapisani podaci o profesorima. Podaci o svakom profesoru zapisani su u zaseban red datoteke odvojenim točkom zarezom. Odabirom ove opcije iz datoteke će se pročitati podaci o profesorima i zapisati u vektor. Nakon učitavanja neka se na zaslonu pojavi informacija koliko podataka o profesorima je učitano. Stari podaci u programu neka se obrišu prije učitavanja.

2. Pronađi profesora • u ovoj opciji programa korisniku daje mogućnost da upiše prezime profesora, a program će prikazati na zaslon sve podatke o tom profesoru. Ukoliko u popisu nema traženog profesora s tim prezimenom, na zaslonu će se pojaviti poruka upozorenja.

 

 

 

2.zadatak

 

Izraditi program koji će ilustrirati način korištenja klasa i ostalih elemenata C++ jezika. Program je manjeg obima pod nazivom „POPIS STUDENATA“. Za svakog podatke o studentu potrebno je definirati klasu sa svim njenim elementima (konstruktor, destruktor, funkcijama, atributima). Svaki student opisan je sljedećim atributima:

• prezime

• ime

• datum rođenja

• godina studija

• status studenta (redovni / izvanredni)

Program će imati sljedeće meni opcije:

1. Učitavanje popisa studenata • u ovoj opciji program će učitavati podatke o studentima. Učitavanje će se vršiti pomoću ulazne datoteke pod nazivom „studenti.txt“. U toj datoteci bit će zapisani podaci o studentima. Podaci o svakom studentu zapisani su u zaseban red datoteke odvojenim točkom zarezom. Odabirom ove opcije iz datoteke će se pročitati podaci o studentima i zapisati u polje ili vektor. Zbog dinamičnosti preporučujem vektor. Nakon učitavanja neka se na zaslonu pojavi informacija koliko studenata je učitano. Stari podaci u programu neka se obrišu prije učitavanja.

 

2. Traženje studenta • u ovoj opciji programa korisniku daje mogućnost da upiše prezime studenta, a program će prikazati na zaslon sve podatke o tom studentu. Ukoliko u popisu nema studenta s tim prezimenom, na zaslonu će se pojaviti poruka upozorenja.

 

3. Brisanje studenta • u ovoj opciji programa vrši se brisanje studenta iz popisa knjiga. Brisanje se vrši na osnovi upisanog prezimena i imena studenta. Nakon brisanja neka se na zaslonu prikaže poruka o obavljenoj akciji.

 

4. Pregled svih studenata • u ovoj opciji na zaslonu se prikazuju svi podaci o svim studentima koji su trenutno zapisani u vektoru/polju.

 

5. Upis podataka o novom studentu • u ovoj opciji programa omogućuje upis podatka o novom studentu. Podaci se zapisuju u klasu i u vektor/polje. Nakon upisa neka se na zaslonu pojavi poruka o završenoj operaciji.

 

6. Zapisivanje svih studenata u datoteku -  

• u ovoj opciji programa zapisuje sve podatke o studentima iz vektora/polja u datoteku „studenti.txt“. Pri tome stari podaci iz datoteke se brišu, a ostaju samo trenutni iz vektora/polja.

7. Izlaz iz programa • u ovoj opciji programa završava rad programa.

 

3. Brisanje profesora • u ovoj opciji programa vrši se brisanje profesora iz popisa. Brisanje se vrši na osnovi upisanog prezimena i imena profesora. Nakon brisanja neka se na zaslonu prikaže poruka o obavljenoj akciji.

 

4. Pregled popisa profesora prema spolu • u ovoj opciji na zaslonu se prikazuju svi podaci o svim profesorima prema odabranom spolu.

 

5. Upis podataka o novom profesoru • u ovoj opciji programa omogućuje upis podatka o novom profesoru. Podaci se zapisuju u klasu i u vektor. Nakon upisa neka se na zaslonu pojavi poruka o završenoj operaciji.

 

6. Ispis svih podataka • u ovoj opciji se na zaslonu prikaže popis svih profesora koji su zapisani u vektoru.

 

7. Kopiraj u datoteku

• u ovoj opciji programa zapisuje sve podatke o profesorima iz vektora u datoteku „profesori.txt“. Pri tome stari podaci iz datoteke se brišu, a ostaju samo trenutni iz vektora/polja.

8. Izlaz iz programa • u ovoj opciji programa završava rad programa.

 

Poruka je uređivana zadnji put pon 13.8.2012 12:29 (Princess.Leia).
11 godina
neaktivan
offline
Re: Pomoć C++ zadatak

Što se tiće prvog zadatka pokazuje mi erore koje ne razumijem tijekom debagiranja i ne pojavljuje se ništa:

 

Poruka je uređivana zadnji put sub 11.8.2012 19:59 (Princess.Leia).
14 godina
offline
Re: Pomoć C++ zadatak
Princess.Leia kaže...

Što se tiće prvog zadatka pokazuje mi erore koje ne razumijem tijekom debagiranja i ne pojavljuje se ništa:

 

Tu nema nikakvoga errora. Program vam se upali, i autmatski ugasi. Na pocetku main.cpp ja sam stavio kod koji provjerava je li moguce otvoriti datoteku studeni.txt:

if(inputStudents.good() == false){
        cerr<<"Nije moguce otvoriti datoteku!"<<endl;
        return 0;
    }
Vi vjerojatno ili niste stavili datoteku studenti.txt na pravo mjesto, ili niste je uopce napravili. Buduci da je nije moguce otvoriti program samo ispise ovu poruku i automatski se ugasi.

 

Mislim da bi bilo najbolje da taj dio izbacimo iz datoteke main.cpp:

#include <iostream>
#include <fstream>
#include <vector>
#include "student.h"

using namespace std;


int main()
{
    fstream inputStudents("studenti.txt");
    vector<student> students;
    while(true){
        cout<<"Opcije:"<<endl
            <<"1. Ucitavanje popisa studenata"<<endl
            <<"2. Trazenje studenata"<<endl
            <<"3. Brisanje studenata"<<endl
            <<"4. Pregled svih studenata"<<endl
            <<"5. Upis podatak o novom studentu"<<endl
            <<"6. Zapisivanje svih studenata u datoteku Medimursko sveuciliste"<<endl
            <<"7. Izlaz iz programa"<<endl;
        cout<<endl;

        unsigned int selection;
        cin>>selection;

        switch(selection){
            case 1:
            {
                students.clear();
                while(inputStudents.eof() == false){
                    student temp;
                    inputStudents>>temp;
                    if(temp.GetName() == "")
                        continue;
                    students.push_back(temp);
                }
                cout<<"Ucitano "<<students.size()<<" studenata"<<endl;
                cout<<endl;
                break;
            }
            case 2:
            {
                cout<<"Upisite prezime: "<<endl;
                string surname;
                cin>>surname;

                bool found = false;
                for(vector<student>::iterator it = students.begin(); it != students.end(); it++)
                    if((*it).GetSurname() == surname){
                        found = true;
                        cout<< (*it) <<endl;
                    }

                if(found == false)
                    cerr<<"Ne postoji ni jedan student sa tim imenom"<<endl;
                cout<<endl;
                break;
            }
            case 3:
            {
                cout<<"Unesite ime i prezime studenta!"<<endl;
                string surname,name;
                cin>>name>>surname;

                bool deleted = false;
                for(vector<student>::iterator it = students.begin(); it != students.end(); it++)
                    if((*it).GetName() == name && (*it).GetSurname() == surname){
                        deleted = true;
                        students.erase(it);
                        break;
                    }

                if(deleted == true)
                    cout<<"Student izbrisan!"<<endl;
                else
                    cerr<<"Ne postoji student sa tim imenom i prezimenom"<<endl;
                break;
                cout<<endl;
            }

            case 4:
            {
                for(vector<student>::iterator it = students.begin(); it != students.end(); it++)
                    cout<< (*it) <<endl;
                break;
            }
            case 5:
            {
                string name, surname;
                unsigned int birthYear, studentYear;
                StudentState state;
                string sState;
                cout<<"Unosenje novog studenta!"<<endl;

                cout<<"Ime: ";
                cin>>name;

                cout<<"Prezime: ";
                cin>>surname;

                cout<<"Godina rodenja: ";
                cin>>birthYear;

                cout<<"Godina studija: ";
                cin>>studentYear;

                cout<<"Status studenta(redovni/izvanredni): ";
                cin>>sState;

                if(sState == "redovni")
                    state = FullTime;
                else
                    state = PartTime;
                students.push_back(student(name,surname,birthYear,studentYear,state));
                cout<<endl;
                break;
            }
            case 6:
            {
                inputStudents.close();
                inputStudents.open("studenti.txt", ios_base::in | ios_base::out | ios_base::trunc);
                for(vector<student>::iterator it = students.begin(); it != students.end(); it++ )
                    inputStudents<< (*it) << endl;
                break;
            }
            case 7:
            {
                inputStudents.close();
                return 0;
            }
        }

    }
    return 0;
}

Sada bi vam se kod trebao pravilno izvrsavati.

I would love to change the world, but they won't give me the source code
11 godina
neaktivan
offline
Re: Pomoć C++ zadatak

Da, prije nisam stavila datoteku, sad kad jesam radi samo ne znam kako napraviti popis, probala sam odvajati sa zarezom i na kraju staviti ; ali bi mi samo pisalo (kod traženja studenta) da ne postoji takav student sa tim imenom..

 

i kad odaberem opciju 5. i upišem podatke oni se ne spreme u datoteku

Poruka je uređivana zadnji put sub 11.8.2012 21:43 (Princess.Leia).
14 godina
offline
Re: Pomoć C++ zadatak
Princess.Leia kaže...

Da, prije nisam stavila datoteku, sad kad jesam radi samo ne znam kako napraviti popis, probala sam odvajati sa zarezom i na kraju staviti ; ali bi mi samo pisalo (kod traženja studenta) da ne postoji takav student sa tim imenom..

 

i kad odaberem opciju 5. i upišem podatke oni se ne spreme u datoteku

Mozete li mi dati primjer na kojem to ne radi, jer meni trazenje radi.

 

Kod trazenja upisujete prezime, a ne ime, za slucaj da ne znate jer program mojom greskom , kada ne postoji student sa tim prezimenom, ispisuje da ne postoji student sa tim imenom.

 

EDIT:

Ako program pokrecete iz visual studia, onda morate u svoj projekt dodati file studenti.txt. Dakle odete Project -> Add new item, i onda vam se otvori novi prozor. Pod ime stavite studenti.txt, a pod tip izabere txt file.

I would love to change the world, but they won't give me the source code
Poruka je uređivana zadnji put sub 11.8.2012 22:06 (captain_soap_McTawish).
11 godina
neaktivan
offline
Re: Pomoć C++ zadatak

dodala sam datoteku ali svejedno ne radi, sad kad odaberem opciju za upis studenta, upišem sve podatke, idem tražiti tog studenta i radi, i odaberem opciju zapisivanje studenta u datoteku ali onda samo jednoga studenta zapiše(ako ih više unesem) i kad slijedeći put otvorim, ne prepozna niti jednog studenta, a kad sam ga upisivala ga je našlo..

14 godina
offline
Re: Pomoć C++ zadatak
Princess.Leia kaže...

dodala sam datoteku ali svejedno ne radi, sad kad odaberem opciju za upis studenta, upišem sve podatke, idem tražiti tog studenta i radi, i odaberem opciju zapisivanje studenta u datoteku ali onda samo jednoga studenta zapiše(ako ih više unesem) i kad slijedeći put otvorim, ne prepozna niti jednog studenta, a kad sam ga upisivala ga je našlo..

Dajte mi primjere na kojima ne radi, jer kod mene sve radi.

I would love to change the world, but they won't give me the source code
11 godina
neaktivan
offline
Re: Pomoć C++ zadatak

u prvom slučaju sve normalno radi, no nakon drugog pokretanja kao da nema nikakvih podataka zapisanih u datoteci..

14 godina
offline
Re: Pomoć C++ zadatak
Princess.Leia kaže...

u prvom slučaju sve normalno radi, no nakon drugog pokretanja kao da nema nikakvih podataka zapisanih u datoteci..

U drugom slucaju uopce niste ucitali podatke iz datoteke u program. Prije nego sto pokusate traziti studente, pritisnite 1 i to ce ucitati podatke iz datoteke.

 

I molim vas otvorite onu datoteku studenti.txt direktno u visual studiu, tj. dvokliknite u visual studio tamo gdje pise studenti.txt. Bez uvrede, ali nekako imam osjecaj da notepadom niste otvorili pravu datoteku.

I would love to change the world, but they won't give me the source code
Poruka je uređivana zadnji put ned 12.8.2012 22:05 (captain_soap_McTawish).
11 godina
neaktivan
offline
Re: Pomoć C++ zadatak

Jesam otvarala dobru datoteku jer bi se u nju sve zapisalo nakon opcije unosa, samo što prvo nisam učitala popis kao što ste i rekli.

U C++ sam početnik a sa datotekama još nisam imala iskustva, hvala vam puno.

16 godina
neaktivan
offline
Pomoć C++ zadatak

Ne kužim bit da dobiješ gotov zadatak, kad sama kažeš da ne kužiš klase.

Da bi rješavala ovakve u biti rutinske zadatke trebaš znati dosta teorije, konkretno kod ovog zadatka o profesorima trebaš znati manipulaciju sa stringovima i streamovima, kao i dio OOP u području nasljeđivanja,kao i preopterećenje operatora, inače uz to znanje ovo je rutina bez programerskog izazova.

Da ne bi ispalo da bez veze kritiziram jer ne kritiziram nikad bez veze, stavim ti kod za onaj zadatak sa profesor klasom, a tvoj je treći zadatak, jer za napraviti treći dovoljan ti je kod iz ova dva plus učenje teorije. I regule ubuduće idu kao obično, da bi se pomagalo treba dio koda donijeti, da ljudi vide da se dotični/a trudi.

 

Dakle program uzima podatke iz text datoteke Profesori.txt, a posloženi su ovako:

Kim Besinger 1953 Z Mr Umjetnost Film;
Macan Macic 1975 M Dr Informatika Algoritmi;
Pasko Patak 1931 M Dr Umjetnost Crtici;

 

Datoteka Osoba.h

 

#include<iostream>
#include <string>
using namespace std;

class Osoba
{
public:
    Osoba();
    virtual ~Osoba();
    string DohvatiIme() const {return this->ime;}
    string DohvatiPrezime() const {return this->prezime;}
    int DovatiGodinuRodjenja() const {return this->godinaRodjenja; }
    string DohvatiSpol() const {return this->spol;}
protected:
    string ime, prezime, spol;
    int godinaRodjenja;

};
class Profesor : public Osoba
{
public:
    Profesor();
    virtual ~Profesor();
    string DohvatiTitulu() const {return this->titula;}
    string DohvatiStudij() const {return this->studij;}
    string DohvatiKolegij() const {return this->kolegij;}
    friend  ostream& operator<<(ostream&, const Profesor&);
    friend  istream& operator>>(istream&, Profesor&);
private:
    string titula;
    string studij;
    string kolegij;
};


 

 

Datoteka klase.cpp

 

 

#include <iostream>
#include "Osoba.h"
#include <string>
using namespace std;

Osoba::Osoba() {}
Osoba::~Osoba() {}
Profesor::Profesor() {}
Profesor::~Profesor() {}

ostream& operator<<(ostream& os, const Profesor& obj)
{
    os << obj.ime << " " << obj.prezime << " " << obj.godinaRodjenja <<
       " " << obj.spol << " " << obj.titula << " " << obj.studij << " " << obj.kolegij + ";";
    return os;
}
istream& operator>>(istream& is, Profesor& obj)
{
    is>> obj.ime;
    is>> obj.prezime;
    is>> obj.godinaRodjenja;
    is>> obj.spol;
    is>> obj.titula;
    is>> obj.studij;
    is>> obj.kolegij;
    obj.kolegij = obj.kolegij.substr(0, obj.kolegij.length()-1);
    return is;
}



 

 

 

Datoteka main.cpp

 

 

#include<iostream>
#include <fstream>
#include <string>
#include <vector>
#include "Osoba.h"
using namespace std;

int  main()
{
    vector<Profesor> popis;
    fstream unos ("Profesori.txt");
    bool kraj = false;
    int odabir;
    while(!kraj)
    {
       cout<< "Opcije:\n"
          << "1 - ucitavanje profesora\n"
          << "2 - pretraga po prezimenu\n";
       cin>> odabir;
       switch(odabir)
       {
       case 1:
          {
          popis.clear();
          while(!unos.eof())
          {
             Profesor obj;
             unos>> obj;
             if(obj.DohvatiIme() == "") continue;
             popis.push_back(obj);
          }
          cout<< "Ucitano: " << popis.size() << " objekata" << endl;
          break;
          }
       case 2:
          {
          string prezime;
          cout<< "Unesi prezime profesora za pretragu: ";
          cin>> prezime;
          vector<Profesor>::iterator it;
          for(it = popis.begin(); it != popis.end(); it++)
          {
             if((*it).DohvatiPrezime().compare(prezime) == 0)
                break;
          }
          if(it != popis.end())
          {
             cout<< (*it).DohvatiIme() << " " << (*it).DohvatiPrezime() << " "
                << (*it).DovatiGodinuRodjenja() << " " << (*it).DohvatiSpol() << " "
                << (*it).DohvatiTitulu() << " " << (*it).DohvatiStudij() << " "
                << (*it).DohvatiKolegij() << endl;
          }
          else
             cout<< "Profesor posao na Mars!" << endl;
          break;
          }
        default:
           {
               cout<< "Te opcije nemas!" << endl;
               break;
           }

       }
       string pitanje;
       cout<< "Zelite li nastaviti? <Y/N> ";
       cin>> pitanje;
       if(pitanje == "N" || pitanje == "n")
          kraj = true;
       }
    unos.close();
    return 0;
}

Poruka je uređivana zadnji put uto 14.8.2012 18:25 (Floki).
 
1 0 hvala 0
11 godina
neaktivan
offline
Re: Pomoć C++ zadatak

Da znam, inače nikad nikome ne dajem da mi radi zadatak, pogotovo ne cijeli jer ako bi tako bilo nebi ništa naučila ali ovo nije za mene a pošto ne znam ništa o klasama (najdalje o strimovima, vektorima i nešto o datotekama) ne mogu pomoći..i da, vjerovatno je krivi naslov ovo "pomoć" kad tražim cijeli zadatak.

Sve u svemu hvala puno.

5 godina
neaktivan
offline
Pomoć C++ zadatak

moze neko pomoci mi u dev c++ nek se javi u private hitno

CeMinusMinus
Moj PC  
0 0 hvala 0
6 godina
offline
Re: Pomoć C++ zadatak
CeMinusMinus kaže...

moze neko pomoci mi u dev c++ nek se javi u private hitno

 Možeš i ovdje postavit pitanje xD

Trust nobody, become the best !
5 godina
neaktivan
offline
Pomoć C++ zadatak

Dobar dan, trebao bih pomoć da mi netko ako zna riješi zadatak iz programa C,jer mi je to za ocjenu i ako ga ne riješim idem na produznu pa bih još jedanput zamolio nekoga da mi pomogne,hvala.

 

Zadatak glasi ovako:

Napiši program koji traži da se ucitaju 4 broja.program ispisuje 

ukupan broj brojeva većih od 5.Koristiti petlju do-while

Senad stenaklic
 
1 0 hvala 0
8 godina
neaktivan
offline
Re: Pomoć C++ zadatak

Ne znam za C, ali c++ :

 

#include<iostream>
using namespace std;

int main()
{
    int a,b,c,d; //Brojevi koji ce se unijeti
    int brojac; //brojac koji ce nam pomoci poslije
    brojac=0; //moramo postaviti neku vrijednost brojaca inc. bug
    int brojac2; //pomoci ce nam oko prebrojavanja ukupnog broja brojeva vecih od 5
    brojac=0;
    cout<<"Unesite 1. broj: ";
    cin>>a;
    cout<<"Unesite 2.broj:";
    cin>>b;
    cout<<"Unesite 3.broj:";
    cin>>c;
    cout<<"Unesite 4.broj:";
    cin>>d;
    do
    {
     if(a>5)
     {
         brojac2++;
     }
     brojac++;
     if(b>5)
     {
         brojac2++;
     }
     brojac++;
     if(c>5)
     {
         brojac2++;
     }
     brojac++;
     if(d>5)
     {
         brojac2++;
     }
         brojac++;
    }while(brojac<4);
    cout<<"Ima ukupno "<<brojac2<<" brojeva koji su veci od 5"<<endl;
}

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice