Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[C++] Сортировка массива(как турнирной таблицы в футболе)

28K
12 сентября 2007 года
FianoR
6 / / 31.08.2007
Язык - С++
Кто знает, как сортировать данный массив по очкам команд так, чтобы вся остальная инфа и название команды тоже перемещались:
 
Код:
№  Команда   В  Н  П  М  О
1  днепр     1   0  0  1  3
2  шахтер    0   0  1  1  0
3  металург  0   0  1  1  0

как это сделать с помощью классов в ООП???
я пробовал использовать алгоритм из <map>
но она сортирует по ключу(очкам) тока название команды(((
и к тому же мапа применяется тока в main() :(
Напишите плиз кусок кода (С++)
Всем заранее спасиба
8.8K
12 сентября 2007 года
iv0_
59 / / 19.01.2007
Короче
это двумерный массив так и сортиуй только столбцы.q[w][e]
Данные о командах внутрь запиши.
Номер названия команды запиши в первый элемент e
q[w][0]


Потом проверь номер q[w][0] на case так получиш название команды
А в промежутке между q[w][1] до q[w][5] данные о командах запиши
8.8K
12 сентября 2007 года
iv0_
59 / / 19.01.2007
А малясь перепутал
Если сортировать по очкам то сначало запиши очки команд в 2 массив
Затем испольуй первую ячейку строки q[w][0] для номера по ккоторому
через case выдиш потом на номер команды
В остальные начиная со 2 ячейки строки запиши показатели
Затем надо все показатели одной строки с2 по 6 ячейку тоесть показателя успеваимости одной команды записать в переменую
q[w][1] затем сравнить к примеру q[1][1] и q[2][1] если сортируем
по убыванию то вслучае если 1 больше записываем в
q[2][e] всю информацию другой строки ит.д.
потом как в обычной сортировке
8.8K
12 сентября 2007 года
iv0_
59 / / 19.01.2007
Цитата: iv0_
Короче
это двумерный массив так и сортиуй только столбцы.q[w][e]
Данные о командах внутрь запиши.
Номер названия команды запиши в первый элемент e
q[w][0]


Потом проверь номер q[w][0] на case так получиш название команды
А в промежутке между q[w][1] до q[w][5] данные о командах запиши


Sory сначало задачу не понял

8.8K
12 сентября 2007 года
iv0_
59 / / 19.01.2007
Кратко- все очки сложи в переменную(ячейка в 2м масиве) и сортируй
в 2 м массиве
трогай только её а их и код команды в этом массиве в сторонке храни как груз
потом через case выдиш на код номера комады и всё, выведи эту строку
320
12 сентября 2007 года
m_Valery
1.0K / / 08.01.2007
Цитата: FianoR
...как это сделать с помощью классов в ООП???
я пробовал использовать алгоритм из <map>
но она сортирует по ключу(очкам) тока название команды(((
и к тому же мапа применяется тока в main() :(
...


Что вставляет map ? Кстати,тогда уж не map,а multimap.Он вставляет пары(pair) - ключ/значение.Ключ у тебя количество очков,а значение ? Что ты вставляешь в map ? Название команды?Неправильно,ты должен вставить туда обьект класса или структуры.Тогда и не будет такого как ты говоришь,что сортирует только название команд.Приведи свой код,не стесняйся;)

Цитата: iv0_
Короче
это двумерный массив так и сортиуй только столбцы.q[w][e]
...


Не надо такие задачи делать с двумерным массивом.Для этого есть контейнеры STL.

320
13 сентября 2007 года
m_Valery
1.0K / / 08.01.2007
Вот простейший пример со структурой.
Код:
#include "stdafx.h"
#include <iostream>
#include <map>
#include <string>
#include <iomanip>
#include <functional>
using namespace std;
struct Team{
    Team(string n,int w,int t,int l,string g,int p) :
      name(n),win(w),tie(t),lose(l),goals(g),points(p)
      {}
  int points;
  string name;
  int win;
  int tie;
  int lose;
  string goals;
};
int _tmain(int argc, _TCHAR* argv[])
{
    Team a("Dnipro",2,0,0,"4-1",6);
    Team b("Shachtar",2,0,0,"5-2",6);
    Team c("Dynamo",1,1,0,"7-2",4);
    Team d("Kharkov",1,0,1,"3-3",3);
    multimap<int,Team,greater<int> > m;
    m.insert(multimap<int,Team>::value_type(int(a.points),
        Team(a)));
    m.insert(multimap<int,Team>::value_type(int(b.points),
        Team(b)));
    m.insert(multimap<int,Team>::value_type(int(c.points),
        Team(c)));
    m.insert(multimap<int,Team>::value_type(int(d.points),
        Team(d)));
    multimap<int,Team,greater<int> >::iterator it = m.begin();
    cout<<setw(8)<<"Team"<<setw(8)<<"w"<<setw(4)<<"t"<<setw(4)<<
        "l"<<setw(4)<<"g"<<setw(8)<<"p"<<"\n\n";
    for(;it != m.end();++it){
        cout<<setw(8)<<(it->second).name<<setw(8)<<(it->second).win<<setw(4)<<
            (it->second).tie<<setw(4)<<(it->second).lose<<setw(4)<<
            setw(6)<<(it->second).goals<<setw(6)<<(it->second).points<<endl;
    }
    return 0;
}
28K
13 сентября 2007 года
FianoR
6 / / 31.08.2007
m_Valery,
что у тебя в файле stdfax.h ?
ты его инклюдишь, а я не знаю что вместо него подставить.
320
13 сентября 2007 года
m_Valery
1.0K / / 08.01.2007
Цитата: FianoR
m_Valery,
что у тебя в файле stdfax.h ?
ты его инклюдишь, а я не знаю что вместо него подставить.



Выкинь эту строчку.Это для Visual Studio...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог