1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
Скрыть объявление

Уважаемый Гость, в 23:30 по мск форум будет закрыт на профилактику на 1,5 часа до 01:00 24.10.2017

Массивы Структур

Тема в разделе "C/C++/C#", создана пользователем BAMP94, 12 фев 2013.

  1. BAMP94

    BAMP94 New Member

    Репутация:
    0
    Регистрация:
    12 фев 2013
    Сообщения:
    2
    Симпатии:
    0
    На основе сводной экзаменационной ведомости, включающей фамилии студентов и оценки по дисциплинам (математика, физика, программирование, история), подсчитать средний балл для каждого студента и вывести ведомость в порядке невозрастания среднего балла. Заранее огромная благодарность тому, кто поможет.
     
  2. Whatka

    Whatka Well-Known Member

    Репутация:
    0
    Регистрация:
    9 окт 2011
    Сообщения:
    428
    Симпатии:
    4
    а что у тебя не получается?
     
  3. rrrFer

    rrrFer Гость

    Репутация:
    0
    ТС, все еще нужно решение? (щас будет тебе решение, не пропадай xD)
     
  4. rrrFer

    rrrFer Гость

    Репутация:
    0
    Код:
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <vector>
    #include <algorithm>
    const int NVAL = 4;				//! количество предметов
    struct Stud { 					//! студент
    int vals[NVAL]; 				//!< оценки студента:
    //!< <оценка по матерматике> ... <истории>
    std::string name; 				//!< имя студента
    };
    
    float rate(Stud& a) {				//! функция расчета среднего балла
    float t = 0.f;
    for(int i = 0; i < NVAL; ++i)
    t += a.vals[i];
    return t / NVAL;
    }
    
    int main() {
    std::ifstream ifst("input.txt");	 // файл с данными о студенте, записанными в формате:
    // <имя студента> <оценка по матерматике> ... <истории>
    std::vector<Stud*> studs;		// массив студентов (вектор - это почти массив, только 
    // его размер может увеличиваться во время выполнения
    // и гарантируется что вектор будет уничтожен при выходе 
    // из области видимости {утечки памяти не будет})
    
    while (0 == ifst.eof()) {		// считываем студентов с файла	
    Stud *stud = new Stud;		// один студент
    ifst >> stud->name;
    for (int i = 0; i < NVAL; ++i)
    ifst >> stud->vals[i];
    studs.push_back(stud);
    }
    ifst.close();
    
    std::sort(studs.begin(), studs.end(), [](Stud* a, Stud *b) {
    return rate(*a) < rate(*b);
    });
    
    for (std::vector<Stud*>::iterator it = studs.begin(); studs.end() != it; ++it) {
    std::cout << (*it)->name;
    for(int i = 0; i < NVAL; ++i)
    std::cout << ' ' << (*it)->vals[i];
    std::cout << std::endl;
    }
    
    // освобождаем память:
    for (std::vector<Stud*>::iterator it = studs.begin(); studs.end() != it; ++it)
    delete *it;
    
    }
    компилировать в mingw с флагом -std=c++11, как-то так:
    или поставить 2010 или более новую студию и в настройки проекта вписать тоже -std=c++11

    Добавлено: пример файла input.txt:
     
  5. BAMP94

    BAMP94 New Member

    Репутация:
    0
    Регистрация:
    12 фев 2013
    Сообщения:
    2
    Симпатии:
    0
    Спасибо огромное =) :) извини что сразу не ответил, запамятовал, очень выручил.
     
Загрузка...
Похожие Темы - Массивы Структур
  1. Shandrik
    Ответов:
    3
    Просмотров:
    465
  2. Искушенный
    Ответов:
    0
    Просмотров:
    559
  3. Искушенный
    Ответов:
    1
    Просмотров:
    598
  4. Искушенный
    Ответов:
    1
    Просмотров:
    571
  5. Rpp
    Ответов:
    1
    Просмотров:
    911

Поделиться этой страницей