0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 31
1

Реализовать сортировку и поиск по заданному полю в массиве пользовательского типа (файловый ввод/вывод)

23.09.2016, 19:01. Показов 1431. Ответов 2
Метки нет (Все метки)

Подскажите, как реализовать часть задания, которая выделена красным цветом.

Построить иерархию классов для контрольных мероприятий, которые включают в себя:
1. Два экзамена, за каждый из которых участник контрольного мероприятия (далее по тексту кандидат) получает целую оценку в диапазоне от 1 до 10. Контрольное мероприятие пройдено успешно, если кандидат набрал сумму, не меньшую, чем заранее заданное значение.
2. Два экзамена, за каждый из которых кандидат получает целую оценку в диапазоне от 1 до 10. Контрольное мероприятие пройдено успешно, если кандидат за каждый экзамен получил оценку, не меньшую, чем заданную.
3. Два экзамена, за каждый из которых кандидат получает целую или половинную оценку в диапазоне от 1 до 10 (1, 1.5, 2, 2.5, … , 9, 9.5, 10), а также один зачет (оценки: сдан и не сдан). Контрольное мероприятие пройдено успешно, если кандидат за каждый экзамен получил оценку, не меньшую, чем заданную, и зачет сдан.
4. Три экзамена. За первых два экзамена кандидат получает целую оценку в диапазоне от 1 до 10. За третий экзамен кандидат получает целую или половинную оценку в диапазоне от 0 до 20. Контрольное мероприятие пройдено успешно, если кандидат набрал сумму, не меньшую, чем заранее заданное значение.
5. Два зачета (оценки: сдан и не сдан) и один экзамен, за который кандидат получает целую оценку в диапазоне от 0 до 100. Контрольное мероприятие пройдено успешно, если кандидат сдал два зачета и получил оценку, не меньшую, чем заданную.
Создать консольное приложение с единственным аргументом командной строки – имя входного файла. Данный файл должен содержать информацию о контрольных мероприятиях, которые проходили кандидаты. В одном файле могут быть данные о контрольных мероприятиях различного типа. Формат входного файла разработать самостоятельно.
В приложении выполнить следующие задания:
– прочитать входной файл;
– создать коллекцию из кандидатов, которые успешно его прошли;
– вывести коллекцию (формат вывода произвольный);
– упорядочить коллекцию по убыванию наибольшей среди всех оценок, полученных кандидатом;
– вывести коллекцию;
– вывести такого кандидата из коллекции, у которого наибольшая оценка больше, чем 15, и она наименьшая среди наибольших оценок других кандидатов (если таких кандидатов больше одного, то вывести любого из них; например, наибольшие оценки кандидатов: 35, 24, 20, 19.5, 17, 16.5, 16.5, 14.5, 12, 10, 9.5, 8, 7; тогда надо вывести любого из кандидатов, у кого наибольшая оценка 16.5).


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
//-----
class eventt {
    char fio[50];
    char ekz1[50];
public:
 void set_event(char *, char *); 
 void put_event()
 {
     cout<<"ФИО: "<<fio<<"\n";
     cout<<"Первый экзамен: "<<ekz1<<"\n";
 }
};
 
void eventt::set_event(char *fio, char *ekz1)
    {
        strcpy(eventt::fio,fio);
        strcpy(eventt::ekz1,ekz1);
    }
//-----
class event2c: public eventt {
    char ekz2[50];
public:
 int mark1;
 int mark2;
 void set_event2c(char *, char *, int, char *, int); 
 void put_event2c()
 {
     put_event();
     cout<<"Оценка за первый экзамен: "<<mark1<<"\n";
     cout<<"Второй экзамен: "<<ekz2<<"\n";
     cout<<"Оценка за второй экзамен: "<<mark2<<"\n";
 }
};
 
void event2c::set_event2c(char *fio, char *ekz1, int mark1, char *ekz2, int mark2)
    {
        eventt::set_event(fio, ekz1);
        event2c::mark1 = mark1;
        strcpy(event2c::ekz2, ekz2);
        event2c::mark2 = mark2;
    }
//-----
class event_mark: public event2c {
    char result[20];
public:
 void set_event_mark(char *, char *, int, char *, int, char *); 
 void put_event_mark()
 {
     put_event2c();
     cout<<"Итог: "<<result<<"\n";
 }
 
void put_result_mark()
 {
     if (event_mark::mark1 >= 4 && event_mark::mark2 >= 4)
     {
         strcpy_s(result,"пройдено успешно");
         strcpy(event_mark::result, result);
     }
     else
     {
         strcpy(event_mark::result, result);
         strcpy_s(result,"не пройдено");
     }
 }
};
 
void event_mark::set_event_mark(char *fio, char *ekz1, int mark1, char *ekz2, int mark2, char *result)
    {
        event2c::set_event2c(fio, ekz1, mark1, ekz2, mark2);
        strcpy(event_mark::result, result);
    }
//-----
class event_sum: public event2c {
    char result[20];
    int sum;
public:
 void set_event_sum(char *, char *, int, char *, int, int, char *); 
 void put_event_sum()
 {
     put_event2c();
     cout<<"Сумма баллов: ";
     cout<<"Итог: "<<result<<"\n";
 }
 
int get_sum()
{
    event_sum::sum = event_sum::mark1 + event_sum::mark2;
    return sum;
}
 
void put_result_sum()
 {
     if (event_sum::sum >= 8)
         strcpy_s(result,"пройдено успешно");
     else
         strcpy_s(result,"не пройдено");
 }
};
 
void event_sum::set_event_sum(char *fio, char *ekz1, int mark1, char *ekz2, int mark2, int sum, char *result)
    {
        event2c::set_event2c(fio, ekz1, mark1, ekz2, mark2);
        event_sum::sum = sum;
        strcpy(event_sum::result, result);
    }
//-----
int main(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "rus");
    char ifile[50];
    /*char buf[50];
    cout<<"Введите имя файла: ";
    cin>>ifile;
    ifstream inf(ifile);
    if (!inf)
        cout<<"Файл не может быть открыт! Введите корректное имя файла!\n";
    else
    {
        inf.read(buf,50);
        cout<<buf;  }*/
    event_mark ekz;
    event_mark ekz2;
    ekz.set_event_mark("Иванов А.В.","Физика",5,"Математика",8,"-");
    ekz2.set_event_mark("Петров С.Н.","Физика",4,"Математика",3,"-");
    ekz.put_result_mark();
    ekz2.put_result_mark();
    ekz.put_event_mark(); cout<<"\n";
    ekz2.put_event_mark();  
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.09.2016, 19:01
Ответы с готовыми решениями:

Реализовать поиск и сортировку по заданному полю в массиве объектов пользовательского типа (структура Train)
Описать структуру с именем TRAIN, содержащую следующие поля: NAZV - название пункта назначения,...

Реализовать поиск и сортировку по заданному полю в списке объектов пользовательского типа
Доброго времени суток. Дали задачу &quot;Запись о багаже пассажира содержит: фамилия, номер рейса, дата...

Поиск в массиве объектов типа "Student" по заданному полю (файловый ввод/вывод)
Помогите написать программу 1. Файл содержит итоги контрольного срока, каждая запись которого...

Поиск в массиве объектов типа "Student" по заданному полю (файловый ввод/вывод)
Здравствуйте. Стоит такая задача: Создать структуру «студент» со следующими данными: фамилия, имя,...

2
7100 / 6095 / 2780
Регистрация: 14.04.2014
Сообщений: 26,225
23.09.2016, 19:44 2
Формат придумай. Например, в каждой строке файла: ФИО, номер варианта и затем остальные данные для этого варианта.
0
8 / 8 / 6
Регистрация: 05.10.2015
Сообщений: 20
24.09.2016, 19:00 3
Если у входного файла формат 1 строка - 1 студент то можно сделать следующее:
1)fopen - открыл файл
2)Например в вектор из строк читаешь getline'ом каждого студента с его результатами
3)В новый вектор перемещаешь студентов, при этом данные из строки перемещаются в структуру типа ФИО, оценка1, зачет1 и т.п.(в том числе максимальный бал и сумма баллов, но можно и сразу при поиске считать/искать), заодно проверяешь прошел или нет.
4) В структуре можно метод прописать показать студента, и применить его для каждого элемента
5) Сортируешь вектор по максимальному баллу с помощью void std::sort (Iterator first, Iterator last, Compare comp);
6) См п4
7) Сортируешь по возрастанию суммы баллов и ищешь с помощью std::find_if у кого больше 15
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.09.2016, 19:00

Реализовать поиск по заданному полю в массиве пользовательского типа (структуры)
Для определенной пользователем структуры выполнить следующее: • Написать функцию формирования...

Реализовать поиск по заданному полю в массиве объектов пользовательского типа
ОСНОВЫ ОБРАБОТКИ СТРУКТУР С клавиатуры ввести последовательность записей, содержащих информацию...

Реализовать поиск по заданному полю в массиве объектов пользовательского типа
Все сделал, в своей задачи, осталось только вот это, помогите. Вывод на экран информацию о людях,...

Реализовать поиск в массиве объектов пользовательского типа по заданному полю
Создать типизированный файл, элементами которого являются сведения об автомобилях: марка,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.