Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] STL: multiset, функторы и алгоритмы


Автор: Kisa 22.3.2007, 21:49
Всем привет! У меня есть два вопроса:
1. Пишу прогу на MV C++ 6.0, но не все в ней в порядке. Вот условие:
Ассоциативные массивы.
Занести данные о студентах группы в контейнер multiset. Ключом является фамилия, в группе могут быть однофамильцы. Выдать сообщение, если в группе есть однофамильцы. Отсортировать данные о студентах в алфавитном  порядке.
Вот то, что уже сделала:
Код

#pragma warning (disable: 4786)
#include "stdafx.h"
#include <iostream>
#include <set>
#include <string>
using namespace std;

class Student
{
private:
    float ball;
    string name;
public:
    Student(string nm, float ball_)
    {
        name=nm;
     ball=ball_;
    }
    Student()
    {
        string s; float b;
        name=s;
        ball=b;
    }

    float GetBall(){return ball;};
    string GetName(){return name;};
    void print(){cout<<"Name: "<<name<<" "<<"cpegnui ball= "<<ball<<endl;};
    
    friend operator<< (ostream &os, Student &s)
    {
        os<<s.name<<s.ball;
    }

    friend bool operator < (const Student& X, const Student& Y)
    {
        return X.ball<Y.ball;
    }

    friend bool operator == (const Student& X, const Student& Y)
    {
        return X.name==Y.name;
    }
};

int main(int argc, char* argv[])
{
    multiset<Student> MS;

    Student s1("Sidopob",4.5);
    Student s2("Sidopob",4.9);
    Student s3("Golyb",5);
    Student s4("Fegop",3.9);

    MS.insert(s1);
    MS.insert(s2);
    MS.insert(s3);
    MS.insert(s4);

    int numb;
    Student temp=Student("Sidopob",4.5);
    numb=MS.count(temp);
    cout<<"Naideno "<<numb<<" paz!"<<endl;

    multiset<Student>::iterator p;

    
    if(p!=MS.end())
    {
        numb=MS.count(temp);
        cout<<numb<<endl;
    }
    else
        cout<<"Key don't seach!"<<endl;
    return 0;
}


Находит только полное совпадение фамилии и оценки, а в задании ведь нужно, чтобы выдавало сообщение об однофамильцах и их оценки. Как быть?  smile 
2. Вот задание:
Функторы и алгоритмы.
Создать класс "Группа студентов". Реализовать для нее функции сортировки объектов класса "Студент" по возрастанию и убыванию среднего балла и поиска первого студента со средним баллом выше заданного. Для класса "Студент" реализовать функцию сравнения студентов по величине среднего балла. Использовать связыватели и адаптеры функций-элементов.
Если чесно, то не могу найти информацию о функторах, связывателях, адаптерах и т. д. Возможно просто не знаю где искать. Подскажите! Киньте ссылку, если не трудно! smile 

Автор: Kuvaldis 22.3.2007, 22:14

M
Kuvaldis

Понятно, что STL есть только в С++, но все же по правилам нужно указывать язык программирования в названии темы :)

Автор: GIK 23.3.2007, 16:32
Я уже почти написал прогу smile написал алгоритм алфовитной сортировки, тока пока косяки, видимо нужно перегружать операторы сравнения. Пошоманю еще smile , может к вечеру выложу smile 

Автор: Kisa 23.3.2007, 20:41
Жду smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)