Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 22.12.2015
Сообщений: 19
1

Структура данных

16.06.2016, 09:30. Показов 1122. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание:Известны оценки каждого из 20-ти студентов группы по двенадцати предметам. Определить среднюю оценку каждого студента и всего класса. Вывести фамилии студентов, у которых средняя оценка выше средней по группе.
Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2016, 09:30
Ответы с готовыми решениями:

Структура данных
Сведения о колонне автобусов состоят из номера маршрута, марки автобуса, бортового номера и фамилии...

Структура данных
Здравствуйте,помогите исправить программу на структуры.Задание: Имеется список 10 студентов,вывести...

Структура данных
Ест некая структура данных с сылками, пускай будет дерево. Хочу узнать: //pos имя элемента этой...

С++.Структура данных.
Вот мой вариант но говорят что неправильно,ибо ссылочный тип не может указывать на языковую...

4
1494 / 1209 / 821
Регистрация: 29.02.2016
Сообщений: 3,614
16.06.2016, 10:05 2
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
#include "stdafx.h"
#include <iostream>
#include <string>
  
using namespace std;
 
//const size_t countObject = 12;
const size_t countObject = 3;
struct Pupil
{
   string surname;
   int rating[countObject];
   int avg;
};
 
float getAVG(Pupil & pupil, const size_t countObject)
{
      int avg = 0;
       for(int j = 0; j < countObject; ++j)
         avg += pupil.rating[j];
      
      return avg / countObject;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
//    const size_t countPupil = 20;
    const size_t countPupil = 2;
    Pupil pupils[countPupil];
    
    for(int i = 0; i < countPupil; ++i)
    {
         std::cout << "Input surname:"; std::cin >> pupils[i].surname;
         for(int j = 0; j < countObject; ++j)
         {
             std::cout << "Input rating for predmet #" << j << ": ";
                       std::cin >> pupils[i].rating[j];
         }
    }
    
    for(int i = 0; i < countPupil; ++i)
       pupils[i].avg = getAVG(pupils[i], countObject);
       
    int sumClass = 0;
    for(int i = 0; i < countPupil; ++i)
       sumClass += pupils[i].avg;
       
    double avgClass = (double)sumClass / countPupil;
    
    for(int i = 0; i < countPupil; ++i)
    {
      double pupilsavg = pupils[i].avg;
      if(pupilsavg > avgClass)
       std::cout << "surname: "<< pupils[i].surname << std::endl;
    }  
    system("pause");
    return 0;
}
1
0 / 0 / 1
Регистрация: 22.12.2015
Сообщений: 19
16.06.2016, 10:22  [ТС] 3
Забыл написать. Я на C++ Builder работаю
0
1494 / 1209 / 821
Регистрация: 29.02.2016
Сообщений: 3,614
16.06.2016, 10:42 4
Vikel42, если есть проблемы залейте код в ветку C++ Builder, может там помогут. Я с Builder не работаю
1
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
16.06.2016, 10:49 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
#include <algorithm>    // copy, copy_if
#include <cassert>  // assert
#include <istream>  // istream
#include <iterator> // istream_iterator, ostream_iterator
#include <iomanip>  // endl
#include <iostream> // cin, cout
#include <ostream>  // ostream
#include <numeric>  // accumulate
#include <string>   // getline, string
#include <sstream>  // istringstream
#include <utility>  // move
#include <vector>   // vector
 
struct student
{
    std::string name;
    std::vector<int> marks;
};
 
std::istream& operator>> (std::istream& in, student& st)
{
    using namespace std;
    getline(in, st.name, '\t');
    string numbers;
    getline(in, numbers);
    istringstream number_stream(move(numbers));
    st.marks.assign(istream_iterator<int>(number_stream), istream_iterator<int>());
//  char ch;
//  in >> ch;
//  if (ch == '(') {
//      double average;
//      in >> average;
//      in >> ch;
//      assert(ch == ')');
//  } else {
//      in.putback(ch);
//  }
    return in;
}
 
std::ostream& operator<< (std::ostream& out, const student& st)
{
    out << st.name << '\t';
    copy(st.marks.begin(), st.marks.end(), std::ostream_iterator<int>(out, " "));
    int sum = accumulate(st.marks.begin(), st.marks.end(), 0);
    if (st.marks.size() != 0) {
        out << "(" << static_cast<double>(sum) / st.marks.size() << ")";
    }
    return out;
}
 
int main()
{
    using namespace std;
    cout << "Введите информацию о студентах. Для завершения ввода используйте Ctrl-D или Ctrl-Z" << endl;
    vector<student> data(istream_iterator<student>(std::cin), istream_iterator<student>());
    int sum = accumulate(data.begin(), data.end(), 0, [](int reduce, const student& next) {
        return reduce + accumulate(next.marks.begin(), next.marks.end(), 0);
    });
    int amount = accumulate(data.begin(), data.end(), 0, [](int reduce, const student& next) {
        return reduce + next.marks.size();
    });
    if (amount != 0) {
        cout << "Средняя оценка класса: " << static_cast<double>(sum) / amount << endl;
    } else {
        cout << "Нет оценок" << endl;
    }
    copy_if(data.begin(), data.end(), ostream_iterator<student>(cout, "\n"), [sum, amount](const student& el) {
        int current_sum = accumulate(el.marks.begin(), el.marks.end(), 0);
        if (el.marks.size() == 0) {
            return false;
        }
        return static_cast<double>(current_sum) / el.marks.size() > static_cast<double>(sum) / amount;
    });
}

Пример
Код
mymedia@comp2:/tmp$ ./a.out 
Введите информацию о студентах. Для завершения ввода используйте Ctrl-D или Ctrl-Z
Иванов Иван Иванович	3 5 2 3 5 4 5 4 5 3 5 3
Хренова Гадя Петрович	5 5 5 5 5 5 5 5 4 5 5 5
Средняя оценка класса: 4.41667
Хренова Гадя Петрович	5 5 5 5 5 5 5 5 4 5 5 5 (4.91667)
0
16.06.2016, 10:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2016, 10:49
Помогаю со студенческими работами здесь

Структура данных
Я сейчас изучаю Си. (по книжкам(Керниган,Ритчи ) и видеокурс от &quot;Специалист&quot;). У меня такой вопрос...

Структура данных
Для структуры данных, приведенной на рисунке, создать массив записей и определить фирму, товар...

Структура данных Person
По заданию требуется создать структуру Person, с полями Surname, Name и перечисление Sex. Также...

Структура данных - Список
Помогите пожалуйста, переделать или объяснить, как переделать структуру данных в список или...

Динамическая структура данных
Дано type строка=array of char; дата=record число:1..31; месяц:1..12; год:1900..1979...

Динамическая структура данных
Есть динамическая структура struct comp { char num; comp* next; //Ссылка на следущий элемент...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru