1

Тема: Клас с++

Був би дуже радий якщо допомогли б)
Створити клас ІСПИТ з наступними полями: назва предмета, прізвище студента, оцінка. Включити в нього необхідні конструктори і методи доступу до полів класу. Перевантажити операції введення і виведення в потік. Увімкнути функції сортування за різними критеріями і пошуку на прізвище. Вхідні дані зчитувати з текстового файлу. Програма і повинна містити меню для перевірки всіх можливостей.

2 Востаннє редагувалося levnako887 (21.02.2018 18:35:08)

Re: Клас с++

Певний код вже є але потрібно його вдосконалити , будь ласка поможіть

Post's attachments

Exam2.0.sln 1.4 kb, 372 downloads since 2018-02-21 

3

Re: Клас с++

Тут не клуб допомоги анонімним студентам. У вас є конкретні питання - питайте, якщо комусь буде цікаво - відповість. А писати за вас ніхто не буде.

4

Re: Клас с++

Я програму майже написав файл ж прикріпив , просто прошу допомоги щоб довести її до путя

5

Re: Клас с++

Ви не той файл прикріпили :) Треба для кожного файлу "Add File" натискати. Проект взагалі викладати не обов'язково, тут не у всіх VS.
І "довести до путя"(що це за мова?) тут не зможуть, якщо ви не скажете, що саме вас у ній не влаштовує. Сподіваюся, у вас є конкретні проблеми, які ви не можете вирішити, бо "я зробив половину, зробіть решту" - це до мами, а не сюди.

6

Re: Клас с++

Ну так довести до путя мені самому не сподобалося що я це написав , але суть не в тому , в програмі виконується пошук тільки першого елемента а мені потрібно щоб всі знаходило з даним іменем і тд

7

Re: Клас с++

#include <iostream>
#include <bitset>
#include <string>
#include <stdexcept>
#include <exception>
#include <list>
#include <algorithm>
#include <iterator>
#include <ctime>
#include <numeric>
#include <deque>
#include <vector>
#include <set>
#include <fstream>

using namespace std;

class Exam
{
protected:
    struct XXX
    {
        string Name_Subject;
        string Last_name;
        unsigned int ball;
    };
    XXX temp;
    deque<XXX> list;
public:
    Exam() {}
    Exam(string sub, string name, unsigned int number)
    {
        temp.Name_Subject = sub;
        temp.Last_name = name;
        temp.ball = number;
        list.push_back(temp);
    }
    Exam(Exam& exam)
    {
        this->temp = exam.temp;
        this->list = exam.list;
    }
    ~Exam() {}

    void Add_to_list(string sub, string name, unsigned int number)
    {
        temp.Name_Subject = sub;
        temp.Last_name = name;
        temp.ball = number;
        list.push_back(temp);
    }
    void Pop_Front() { list.pop_front(); }
    void Pop_Back() { list.pop_back(); }
    void Show_obj() { cout << "Предмет: " << temp.Name_Subject << endl << "Фамілія: " << temp.Last_name << endl << "Оцінка: " << temp.ball << endl << endl; }
    friend istream& operator>>(istream& is, Exam::XXX& temp)
    {
        is >> temp.Name_Subject >> temp.Last_name >> temp.ball;
        return is;
    }
    friend ostream& operator<<(ostream& os, Exam::XXX& temp)
    {
        os << "Предмет: " << temp.Name_Subject << endl << "Фамілія: " << temp.Last_name << endl << "Оцінка: " << temp.ball << endl << endl;
        return os;
    }
    void Sort_first_simbol_Subject()
    {
        for (size_t i(0); i < this->list.size(); i++)
        {
            for (size_t j(0); j < this->list.size() - 1; j++)
            {
                if (static_cast<int>(this->list[j].Name_Subject[0]) > static_cast<int>(this->list[j + 1].Name_Subject[0]))
                {
                    swap(list[j], list[j + 1]);
                }
            }
        }
    }
    void Sort_first_simbol_Last_name()
    {
        for (size_t i(0); i < this->list.size(); i++)
        {
            for (size_t j(0); j < this->list.size() - 1; j++)
            {
                if (static_cast<int>(this->list[j].Last_name[0]) > static_cast<int>(this->list[j + 1].Last_name[0]))
                {
                    swap(list[j], list[j + 1]);
                }
            }
        }
    }
    void Sort_ball()
    {
        for (size_t i(0); i < this->list.size(); i++)
        {
            for (size_t j(0); j < this->list.size() - 1; j++)
            {
                if (this->list[j].ball > this->list[j + 1].ball)
                {
                    swap(list[j], list[j + 1]);
                }
            }
        }
    }
    void Show_list()
    {
        for (size_t i(0); i < this->list.size(); i++)
        {
            cout << "Предмет: " << this->list[i].Name_Subject << endl << "Фамілія: " << this->list[i].Last_name << endl << "Оцінка: " << this->list[i].ball << endl << endl;
        }
    }
};

int main()
{
    setlocale(LC_ALL, "Ukrainian");

    ifstream  fin;
    ofstream fout;


    string Path("C:\\test\\Test.txt"); // Путь к файлу на жестком диске.
    fin.open(Path, ios::in);
    try
    {
        if (!fin.is_open()) { throw exception("File is not found !!!"); }
    }
    catch (const exception& ex) { cout << ex.what() << endl; system("pause"); return -1; }

    Exam Mylist;

    while (!fin.eof())
    {
        string Subject, Last_name;
        unsigned int ball;
        fin >> Subject >> Last_name >> ball;
        if (fin.fail())
        {
            fin.clear();
            break;
        }
        Mylist.Add_to_list(Subject, Last_name, ball);
    }
    fin.close();
    Mylist.Sort_first_simbol_Last_name();
    Mylist.Show_list();
    system("pause");
    return 0;
}

8

Re: Клас с++

Пошук по предмету і фамілії забув добавити

void Find_of_Subject(string& str)
{
bool boo(false);
for (size_t i(0); i < this->list.size(); i++)
{
if (this->list[i].Name_Subject == str) { cout << "Предмет: " << this->list[i].Name_Subject << endl << "Фамілія: " << this->list[i].Last_name << endl << "Оцінка: " << this->list[i].ball << endl << endl; break; }
}
if (boo == false) { cout << "Елемент не найдено !!!" << endl; }
}
void Find_of_Last_name(string& str)
{
bool boo(false);
for (size_t i(0); i < this->list.size(); i++)
{
if (this->list[i].Last_name == str) { boo = true; cout << "Предмет: " << this->list[i].Name_Subject << endl << "Фамілія: " << this->list[i].Last_name << endl << "Оцінка: " << this->list[i].ball << endl << endl; break; }
}
if (boo == false){ cout <<

9

Re: Клас с++

Нащо вам стільки заголовків? Вам подобається дивитися, як компілюється програма, і ви розтягуєте задоволення?
Розбийте нормально по рядках і дайте змінним людські назви. Що таке boo?

10 Востаннє редагувалося Fox (22.02.2018 19:36:00)

Re: Клас с++

levnako887 написав:

Ну так довести до путя мені самому не сподобалося що я це написав , але суть не в тому , в програмі виконується пошук тільки першого елемента а мені потрібно щоб всі знаходило з даним іменем і тд

Ну там наче break....

    for (size_t i(0); i < this->list.size(); i++)
    {
        if (this->list[i].Name_Subject == str) 
        { 
            cout << "Предмет: " << this->list[i].Name_Subject << endl << "Фамілія: " << this->list[i].Last_name << endl << "Оцінка: " << this->list[i].ball << endl << endl; 
            break; <-- Ось тут команда виходу з "пошуку"
        }
    }

Я може затупив i не так зрозумiв.
Але якщо потрiбно вивести не тiльки перший елемент то break там не треба.

11 Востаннє редагувалося levnako887 (22.02.2018 19:38:22)

Re: Клас с++

Дякую , я вже це раніше зрозумів . Хотів ще точно запитатися в якому вигляді в пошук параметри передавати якщо це типу стрінг ?

12

Re: Клас с++

cout « "Пошук за предметом 1; Пошук за прізвищем 2; Введіть будь ласка одне із запропонованих чисел: ";
cin » count;
switch (count)
{
    case 1:
    {
        cout « Mylist.Find_of_Subject("Math") « endl;
        break;
    }
    case 2:
    {
        cout « Mylist.Find_of_Last_name("Nada") « endl;
        break;
    }
    default:
        cout « "Лол" « endl;
}

Як я зрозумів просто слово прописати не вийде , не звертайте увагу що в мене сіаут в свічі

13 Востаннє редагувалося Fox (22.02.2018 20:02:25)

Re: Клас с++

levnako887 написав:
cout « "Пошук за предметом 1; Пошук за прізвищем 2; Введіть будь ласка одне із запропонованих чисел: ";
cin » count;
switch (count) 
{
case 1: 
{
cout « Mylist.Find_of_Subject("Math") « endl; 
break;
}
case 2: 
{
cout « Mylist.Find_of_Last_name("Nada") « endl; 
break;
}
default: 
cout « "Лол" « endl;
}

Як я зрозумів просто слово прописати не вийде , не звертайте увагу що в мене сіаут в свічі

Не вийде бо там помилку видасть VS ?
Find_of_Subject(string & <- без цього можна буде str)

14

Re: Клас с++

без чого саме? без & ?

15

Re: Клас с++

levnako887 написав:

без чого саме? без & ?

Ага)

16

Re: Клас с++

Дуже вдячний