1

Тема: Допомога з лаболаторною роботою з програмування!!! Структури.*

Можна і без сортування!!!
Завдання на фото!!!

Post's attachments

васяцц.jpg 16.92 kb, 122 downloads since 2012-12-11 

2

Re: Допомога з лаболаторною роботою з програмування!!! Структури.*

є якісь напрацювання?

3

Re: Допомога з лаболаторною роботою з програмування!!! Структури.*

немає. Я хворів коли цю тему проходили, сам розібратися не можу, лаба на завтра, а консультація у викладача аж у четвер!!!

4

Re: Допомога з лаболаторною роботою з програмування!!! Структури.*

Лаба не складна, але ці пару днів не маю фізичної можливості: вона дещо кропітка і пісна при всьому.
Тому, якщо актуальність не зникне до вихідних - підкину чернетку з кодом десь у суботу.

I belong to the Dead Generation.

5

Re: Допомога з лаболаторною роботою з програмування!!! Структури.*

Вільна хвилька трапилася раніше...

#include <iostream>
#include <cstring>
#include <vector>

using namespace std;

struct Group
{
    string groupName;
    unsigned int studentAmount;
    unsigned int grantStudentAmount;
    unsigned int hardStudentAmount;
    
    bool operator > (const Group &group)
    {
        return (strcmp(this->groupName.c_str(), group.groupName.c_str())==1);
    }
    
    bool operator < (const Group &group)
    {
        return (strcmp(this->groupName.c_str(), group.groupName.c_str())== (-1));
    }
    
    friend istream& operator >> (istream & in, Group &group)
    {
        in>>group.groupName>>
            group.studentAmount>>
            group.grantStudentAmount>>
            group.hardStudentAmount;
        return in;
    }
    
    friend ostream& operator << (ostream &out, const Group& group)
    {
        out<<group.groupName<<"\t"<<group.studentAmount<<"\t"
            <<"\t"<<group.grantStudentAmount<<"\t"
            <<"\t"<<group.hardStudentAmount;
        
        return out;
    }
};

bool cmpGroupsByCourse(Group group1, Group group2)
{
    return group1 < group2;
}

void printGroups(const vector<Group> &groups)
{
    cout<<"+------------------------------------------------------+"<<endl;
    cout<<"+-------------------- GROUPS --------------------------+"<<endl;
    cout<<"+------------------------------------------------------+"<<endl;
    cout<<"|      Group       |  Students  |  Grants  |   Hards  |"<<endl;
    cout<<"+------------------------------------------------------+"<<endl;

    
    for(int iGroup = 0; iGroup < groups.size(); iGroup++)
    {
        cout<<groups[iGroup]<<endl;
    }
    
    cout<<"+------------------------------------------------------+"<<endl;
}

int main(int argc, char *argv[])
{
    int amountGroups;
    cout<<"Enter amount of groups: ";
    cin>>amountGroups;
    
    vector<Group> groups;
    
    cout<<"Enter data for each group. Format: GroupName AmountOfStudents AmountOfGrantStudents AmountOfHardStudents"<<endl<<endl;
    
    for(int iGroup = 0; iGroup < amountGroups; iGroup++)
    {
        Group newGroup;
        cout<<"Group #"<<(iGroup+1)<<": ";
        cin>>newGroup;
        groups.push_back(newGroup);
    }

    sort(groups.begin(), groups.end(), cmpGroupsByCourse);
    
    printGroups(groups);
    
    return 0;
}

Припаявши сюди функцію/метод для витягання номеру курсу (залежить від формату назви групи, тому я не маявся цим), можна дописати вибірку груп для певного курсу. Ну і ширина стовпців - нема зараз часу красу підвести прапорцями формату.

I belong to the Dead Generation.