№ Команда В Н П М О
1 днепр 1 0 0 1 3
2 шахтер 0 0 1 1 0
3 металург 0 0 1 1 0
[C++] Сортировка массива(как турнирной таблицы в футболе)
Кто знает, как сортировать данный массив по очкам команд так, чтобы вся остальная инфа и название команды тоже перемещались:
Код:
как это сделать с помощью классов в ООП???
я пробовал использовать алгоритм из <map>
но она сортирует по ключу(очкам) тока название команды(((
и к тому же мапа применяется тока в main() :(
Напишите плиз кусок кода (С++)
Всем заранее спасиба
это двумерный массив так и сортиуй только столбцы.q[w][e]
Данные о командах внутрь запиши.
Номер названия команды запиши в первый элемент e
q[w][0]
Потом проверь номер q[w][0] на case так получиш название команды
А в промежутке между q[w][1] до q[w][5] данные о командах запиши
Если сортировать по очкам то сначало запиши очки команд в 2 массив
Затем испольуй первую ячейку строки q[w][0] для номера по ккоторому
через case выдиш потом на номер команды
В остальные начиная со 2 ячейки строки запиши показатели
Затем надо все показатели одной строки с2 по 6 ячейку тоесть показателя успеваимости одной команды записать в переменую
q[w][1] затем сравнить к примеру q[1][1] и q[2][1] если сортируем
по убыванию то вслучае если 1 больше записываем в
q[2][e] всю информацию другой строки ит.д.
потом как в обычной сортировке
Цитата: iv0_
Короче
это двумерный массив так и сортиуй только столбцы.q[w][e]
Данные о командах внутрь запиши.
Номер названия команды запиши в первый элемент e
q[w][0]
Потом проверь номер q[w][0] на case так получиш название команды
А в промежутке между q[w][1] до q[w][5] данные о командах запиши
это двумерный массив так и сортиуй только столбцы.q[w][e]
Данные о командах внутрь запиши.
Номер названия команды запиши в первый элемент e
q[w][0]
Потом проверь номер q[w][0] на case так получиш название команды
А в промежутке между q[w][1] до q[w][5] данные о командах запиши
Sory сначало задачу не понял
в 2 м массиве
трогай только её а их и код команды в этом массиве в сторонке храни как груз
потом через case выдиш на код номера комады и всё, выведи эту строку
Цитата: FianoR
...как это сделать с помощью классов в ООП???
я пробовал использовать алгоритм из <map>
но она сортирует по ключу(очкам) тока название команды(((
и к тому же мапа применяется тока в main() :(
...
я пробовал использовать алгоритм из <map>
но она сортирует по ключу(очкам) тока название команды(((
и к тому же мапа применяется тока в main() :(
...
Что вставляет map ? Кстати,тогда уж не map,а multimap.Он вставляет пары(pair) - ключ/значение.Ключ у тебя количество очков,а значение ? Что ты вставляешь в map ? Название команды?Неправильно,ты должен вставить туда обьект класса или структуры.Тогда и не будет такого как ты говоришь,что сортирует только название команд.Приведи свой код,не стесняйся;)
Цитата: iv0_
Короче
это двумерный массив так и сортиуй только столбцы.q[w][e]
...
это двумерный массив так и сортиуй только столбцы.q[w][e]
...
Не надо такие задачи делать с двумерным массивом.Для этого есть контейнеры STL.
Код:
#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;
}
#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;
}
что у тебя в файле stdfax.h ?
ты его инклюдишь, а я не знаю что вместо него подставить.
Цитата: FianoR
m_Valery,
что у тебя в файле stdfax.h ?
ты его инклюдишь, а я не знаю что вместо него подставить.
что у тебя в файле stdfax.h ?
ты его инклюдишь, а я не знаю что вместо него подставить.
Выкинь эту строчку.Это для Visual Studio...