Форум программистов, компьютерный форум CyberForum.ru

Отсортируйте строки таблицы в первую очередь по первому критерию, при равенстве по первому критерию, отсортируйте по второму - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С++ работа с библиотекой шаблонов stl (map, vector) http://www.cyberforum.ru/cpp-beginners/thread729813.html
Здравствуйте! у меня проблема с заданием по stl. Есть такая программа: #include<map> #include<iostream> #include<vector> #include<string> #include<sstream> #include<fstream> #include<algorithm> #include<conio.h>
C++ Очень нада.строки в файле нужно что бы выводило последнее слово в строчке(строк может быть много)..у меня выводит последнее слово последней строчки. #include <iostream> #include <fstream> #include <conio.h> #include <string> using namespace std; int main() { http://www.cyberforum.ru/cpp-beginners/thread729811.html
C++ Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Хнач до Хкон с шагом dx
Знаю что подобные задачи были ,но моей не попалось.Сам 2 день не могу решить свою.Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Хнач до Хкон с шагом dx Хнач = -2 Хкон = 2 dx = 0.01
C++ Найти вектор, который составлен из наибольших членов матрицы до главной диагонали включительно
Народ помогите решить в си++ 2010 и в MS Excel вот эту задачу. Задание выдает преподаватель каждому студенту индивидуально из ниже приведенных задач. Вариант 13. Задачи посвящены работе с одномерными и двумерными массивами. Значения для n,m выбираются студентами произвольно, индекс i изменяется от 1 до n, а индекс j - соответственно от 1 до m, причем m и n могут совпадать. 13. Дана...
C++ Поменять местами первое и последнее слова http://www.cyberforum.ru/cpp-beginners/thread729802.html
Исходные данные (текст) – строка символов. Ввод и вывод текста реализовать с помощью функций ввода-вывода строк: gets(char* S) и puts(char* S). Реализовать задачи обработки строк в виде отдельных функций. Сделать два варианта решения каждой задачи. Первый вариант – обработка строки как массива символов, второй вариант – с помощью функций из <string.h> и указателей. Поменять местами первое...
C++ Не получается запустить "hello, world" Вот начал изучать С++ по книге Страуструпа. Не получается запустить "hello, world". Установил visual c++ 2010, создал пустой проект, писал другие проги из инета, они работают. Я так понимаю, что дело в заголовке. Нашел инструкцию по-английски, зашел на его сайт, вообщем там его надписи закинул в блокнот, дальше вставил в раздел заголовочные файлы, переименовав . Дальше там написано, что нужно... подробнее

Показать сообщение отдельно
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
28.08.2013, 10:28  [ТС]     Отсортируйте строки таблицы в первую очередь по первому критерию, при равенстве по первому критерию, отсортируйте по второму
Решил вот так :
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
#include <iostream>
#include <vector>
#include <string>
#include <iterator>
#include <algorithm>
#include <sstream>
 
using namespace std;
 
vector <string> criteria, names;
vector< vector<string> > table;
vector <bool> ASC;
 
bool comp(const vector<string> & a, const vector<string> & b) {
    for (int i = 0; i < criteria.size(); ++i)
        for (int j = 0; j < names.size(); ++j)
            if (criteria[i] == names[j] && a[j] != b[j])
                return (ASC[i] ^ (a[j] > b[j]));
    return false;
}
 
int main() {
    string str;
    getline(cin, str);
    names = vector <string> ((istream_iterator<string>(istringstream(str))), istream_iterator<string>());
    getline(cin, str);
    vector <string> criterias((istream_iterator<string>(istringstream(str))), istream_iterator<string>());
    for (int i = 0; i < criterias.size(); i += 2) {
        criteria.push_back(criterias[i]);
        ASC.push_back((criterias[i+1] == "ASC," || criterias[i+1] == "ASC"));
    }
    while (getline(cin, str))
        table.push_back(vector <string> ((istream_iterator<string>(istringstream(str))), istream_iterator<string>()));
    stable_sort(table.begin(), table.end(), comp);
    for (int i = 0; i < table.size(); ++i, puts(""))
        for (int j = 0; j < table[i].size(); ++j)
            cout << table[i][j] << " ";
    return 0;
 }
 
Текущее время: 09:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru