Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2008, 15:28   #1
Unn
Новичок
Джуниор
 
Регистрация: 14.12.2008
Сообщений: 2
По умолчанию Cортирование данных

Здравствуйте,
Я написал программу с использованием массива структур, (Borland C++ Buider)
помогите пожалуйста сделать сортирование данных по убыванию среднего бала студентов.
Код:
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>

const int students = 5;
const int exams = 4;


int maximum(int [][exams],int, int);

float average(int [], int);
void printArray(int [][exams], int, int);

main()
{


        int studentGrades [students][exams] = {{77, 68, 86, 73},
                                                {96, 87, 9, 78},
                                                {70, 90, 86, 82},
                                                {60, 87, 44, 43},
                                                {30, 98, 56, 71}};
        cout << " ======================================== " << endl;
        cout << " List of students " << endl;
        cout << " 1. Ivanov " << endl;
        cout << " 2. Petrov " << endl;
        cout << " 3. Sidorov " << endl;
        cout << " 4. Vasilyev " << endl;
        cout << " 5. Zaycev " << endl;
        cout << " ======================================== " << endl;

        printArray(studentGrades, students, exams);
        cout << "                  ======================================== " << endl;
        cout << endl << " Maximum mark in group: "
             << maximum(studentGrades, students, exams) << endl;
        for (int person = 0; person < students; person++)
             cout << " Maximum mark for " << person+1 << " student equals: "
             << setiosflags(ios::fixed | ios::showpoint)
             <<setprecision(2)
             <<average(studentGrades[person], exams) << endl;
              getch();
        return 1;
}




int maximum(int grades [][exams], int pupils, int tests)
{
        int highGrade = 0;

        for (int i = 0; i < pupils; i++)
             for (int j = 0; j < tests; j++)
                  if (grades [i][j] > highGrade)
                       highGrade = grades [i][j];

return highGrade;
}

float average(int Grades [], int tests)
{
        int total = 0;

        for (int j = 0; j < tests; j++)

              if (Grades [j] > total)
             total = Grades[j];

        return  total ;
}

void printArray(int grades [][exams], int pupils, int tests)
{

        cout<< "         [Math]      [Physics]   [Computers]   [History]";

        for (int i = 0; i < pupils; i++)  {
        cout << endl << " Marks [" << i+1 << "] ";

        for (int j = 0; j < tests; j++)
           cout << setiosflags(ios::left) << setw(13)
                << grades [i]  [j];
                getch();
        }
}
Unn вне форума Ответить с цитированием
Старый 14.12.2008, 16:27   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Нету тут у тебя структур никаких. Только массив вижу и все. Следовательно просто отсортируй пузырьком массив и все.
MaTBeu вне форума Ответить с цитированием
Старый 14.12.2008, 22:02   #3
Unn
Новичок
Джуниор
 
Регистрация: 14.12.2008
Сообщений: 2
По умолчанию

А как это сделать ?
Unn вне форума Ответить с цитированием
Старый 15.12.2008, 11:12   #4
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Метод пузырька: если у тебя есть массив a, в котором n элементов, тогда:
Код:
for(int i=0;i<n;i++)
 for(int j=0;j<n-1;j++)
  if(a[j]<a[j+1])
  {
         int x=a[j];
         a[j]=a[j+1];
         a[j+1]=x;
  }
Где x - переменная того же типа, что и массив a.

З.Ы. Код твой не смотрел
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 15.12.2008, 11:45   #5
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

быстрее будет если повторять до тех пор пока после очередного прохода не будет замен.
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 16.12.2008, 20:56   #6
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Да, но я не думаю, у него там будет такой размер массива, что эта разница будет заметна =)))
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В Access есть тип данных "Счетчик".Есть ли подобный тип данных в MS Sql Server 2000? An_ton SQL, базы данных 5 16.01.2009 17:55
ввод данных opel.omega Общие вопросы Delphi 12 18.11.2008 14:15
Передача данных ChipLink Общие вопросы Delphi 4 06.01.2008 11:28
Архивация данных ZYRGiX Win Api 6 05.09.2007 20:58