Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifdef _MSC_VER
- #define _CRT_SECURE_NO_WARNINGS
- #endif
- #include <iostream>
- using namespace std;
- struct Predmet{
- char * _naziv;
- int _ocjena;
- //---
- void Unos(char * naziv, int ocjena){
- _naziv = new char[strlen(naziv + 1)];
- strcpy(_naziv, naziv);
- _ocjena = ocjena;
- }
- void Ispis(){
- cout << "Naziv: " << _naziv << endl;
- cout << "Ocjena: " << _ocjena << endl;
- }
- void Dealociraj(){
- delete[]_naziv;
- _naziv = nullptr;
- }
- };
- struct Student{
- char * _imePrezime;
- int _index;
- Predmet _polozeni[40];
- int _brojPolozenih;
- // -------
- void Unos(char *imePrezime, int index){
- _imePrezime = new char[strlen(imePrezime + 1)];
- strcpy(_imePrezime, imePrezime);
- _index = index;
- _brojPolozenih = 0;
- }
- void Ispis(){
- cout << "Ime i prezime studenta: " << _imePrezime << endl;
- cout << "Broj indexa: " << _index << endl;
- for (int i = 0; i < _brojPolozenih; i++)
- _polozeni[i].Ispis();
- }
- void Dealociraj(){
- delete[]_imePrezime;
- for (int i = 0; i < _brojPolozenih; i++)
- _polozeni[i].Dealociraj();
- _imePrezime = nullptr;
- }
- };
- bool DodajPolozeni(Student * student, char * predmet, int ocj){
- if (student->_brojPolozenih < 40){
- student->_polozeni[student->_brojPolozenih]._naziv = new char[strlen(predmet + 1)];
- strcpy(student->_polozeni[student->_brojPolozenih]._naziv, predmet);
- student->_polozeni[student->_brojPolozenih]._ocjena = ocj;
- (student->_brojPolozenih)++;
- return true;
- }
- return false;
- }
- void UkloniPredmet(Student * student){
- if (student->_brojPolozenih == 0){
- cout << "Student nema polozenih predmeta! " << endl;
- return;
- }
- for (int i = 0; i < student->_brojPolozenih; i++)
- student->_polozeni[i].Ispis();
- int izbor;
- do{
- cout << "Izaberite predmet za uklananje: ";
- cin >> izbor;
- cin.ignore();
- } while (izbor <0 && izbor > student->_brojPolozenih);
- for (int i = izbor; i < student->_brojPolozenih; i++){
- student->_polozeni[i].Unos(student->_polozeni[i]._naziv, student->_polozeni[i]._ocjena);
- }
- (student->_brojPolozenih)--;
- }
- Predmet * PretragaPoOcjeni(Student * student, int ocjena){
- if (student->_brojPolozenih == 0) cout << "Greska!" << endl;
- else{
- for (int i = 0; i < student->_brojPolozenih; i++){
- if (student->_polozeni[i]._ocjena == ocjena){
- Predmet * temp = new Predmet;
- temp->Unos(student->_polozeni[i]._naziv, student->_polozeni[i]._ocjena);
- return temp;
- }
- }
- cout << "Nije pronadjen predmet sa trazenom ocjenom." << endl;
- }
- }
- bool ProvjeriIndex(Student * student, int brojIndexa, int max){
- for (int i = 0; i < max; i++) if (student[i]._index == brojIndexa) return true;
- return false;
- }
- int main(){
- // Unutar main funkcije napisati sljedeće:
- //U dinamičkoj memoriji kreirati niz od 3 objekta tipa Student.
- //Korisniku omogućiti da unese ime, prezime i broj indeksa (uz provjeru) za svakog od studenata.
- /*Ukoliko je broj indeksa već zauzet, program treba korisniku omogućiti ponovni unos indeksa za tog studenta.*/
- //Koristeći funkcije DodajPolozeni, prvom studentu dodati informacije o dva položena predmeta,
- /*a drugom studentu o jednom položenom predmetu*/
- Student * niz = new Student[3];
- for (int i = 0; i < 3; i++)
- {
- char * tekst = new char[25];
- cout << "Unesite ime i prezime studenta: ";
- cin.getline(tekst, 25);
- int index;
- do
- {
- cout << "Unesite broj indexa: ";
- cin >> index;
- cin.ignore();
- niz[i].Unos(tekst, index);
- } while (ProvjeriIndex(niz, index, i));
- }
- DodajPolozeni(&niz[0], "Matematika", 7);
- DodajPolozeni(&niz[0], "Ekonomija", 8);
- DodajPolozeni(&niz[1], "UIT", 8);
- UkloniPredmet(&niz[0]);
- system("pause > null");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement