green39675 green39675 - 4 months ago
674 0

Napisati program koji æe korisniku omoguæiti evidenciju podataka o kolegiju.
Formira se lista kao polje(elementi polja su tipa strukture) za kolegij sa sljedeæim
podacima: brStudenata, razinaStudija, semestar i naziv (znakovni niz tipa char).
Razina studija je znak P ili D (preddiplomski ili diplomski), a semestar smije poprimiti
vrijednosti [1-6] za preddiplomski ili [1-4] za diplomski.
Program treba sadržavati sljedeæe funkcije koje treba redom pozvati u main funkciji:
Funkcija za unos broja kolegija (pitanje korisniku i unos)
Funkcija za unos podataka o kolegijima (kod unosa razine studija i semestra, implementirati
prethodno navedena ogranièenja – koristiti petlje)
Funkcija koja æe ispisivati sve podatke o svim kolegijima
Funkcija koja vraæa broj studenata na diplomskom studiju

C++

Zavrsni ispit 2

#include <iostream>

using namespace std;

/*STRUKTURA MORA BIT DEFINIRANA PRIJE FUNKCIJA KOJE JU KORISTE
 INACE FUNKCIJE NE ZNAJU DA STRUKTURA POSTOJI ODNOSNO RECI CE DA NISU DEKLARIRANE*/
struct kolegij
{
    int brStudenata;
    int semestar;
    char razinaStudija;
    char naziv[50];

};

void broj(int &br); 
void podaci(int brK, kolegij polje[50]);
void ispis(int brK, kolegij polje[50]);
void diplomski(int brK, kolegij polje[50]);

int main()
{
    int brojKolegija;
    kolegij polje[50];
    broj(brojKolegija);
    podaci(brojKolegija,polje);
    ispis(brojKolegija,polje);
    diplomski(brojKolegija,polje);

    return 0;

}


void broj(int &br)
{
    cout<<"Koliko ce se kolegija unesti?"<<endl;
    cin>>br;
}

void podaci(int brK, kolegij polje[50])
{
    bool provjeraRazine=false;
    cout<<"Unos podataka o kolegijima:"<<endl;
    for(int i=0; i<brK; i++)
    {
        cout<<i+1<<". Kolegij:"<<endl;
        cout<<"Broj studenata:"<<endl;
        cin>>polje[i].brStudenata;

       do
       {
           cout<<"Razina studija:"<<endl;
           cin>>polje[i].razinaStudija;
           if(polje[i].razinaStudija=='P' || polje[i].razinaStudija=='D')//Ovaj uvjet u whileu stvara bestkonacnu petlju, pa je ovo workaround.
            provjeraRazine=true;
           else
            provjeraRazine=false;

       }while(provjeraRazine==false);

       cout<<"Unos semestra:"<<endl;
       if(polje[i].razinaStudija=='P')
       {
           do
           {
               cin>>polje[i].semestar;
           }while(polje[i].semestar<1 || polje[i].semestar>6);
       }
       else if(polje[i].razinaStudija=='D')
       {
           do
           {
               cin>>polje[i].semestar;
           }while(polje[i].semestar<1 || polje[i].semestar>4);
       }
        cout<<"Unesite naziv kolegija:";
        cin.ignore();
        cin.getline(polje[i].naziv,50);
    }
}

void ispis(int brK, kolegij polje[50])
{
    cout<<"Ispis podataka o svim kolegijima"<<endl;
    for(int i=0;i<brK;i++)
    {
        cout<<polje[i].naziv<<endl;
        if(polje[i].razinaStudija=='P')
            cout<<polje[i].razinaStudija<<" - Preddiplomski"<<endl;
        else if(polje[i].razinaStudija=='D')
            cout<<polje[i].razinaStudija<<" - Diplomski"<<endl;
        cout<<"Semestar: "<<polje[i].semestar<<"."<<endl;
        cout<<"Broj studenata: "<<polje[i].brStudenata<<endl;
    }
}

void diplomski(int brK, kolegij polje[50])
{
    int brojD=0;
    for(int i=0;i<brK;i++)
    {
        if(polje[i].razinaStudija=='D')
            brojD=brojD+polje[i].brStudenata;
    }
    cout<<"Broj stdenata na diplomskom: "<<brojD<<endl;
}