0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 79
1

В первую строку вывести силы игроков первой команды, во вторую - второй

07.08.2016, 22:06. Показов 2064. Ответов 12
Метки нет (Все метки)

N игроков хотят разбиться на две команды. Причем хотят разделиться так - самый сильный игрок - в первой команде, следующий самый сильный - во второй, третий - в первой. И так далее. Задано число N и N целых чисел обозначающих силы игроков. В первую строку вывести силы игроков первой команды, во вторую - второй.


Можно использовать только библиотеки iostream, string, vector, algorithm:


примеры )))

1)6
1 7 7 4 3 2

7 4 2
7 3 1


2)5
1 2 3 4 5

5 3 1
4 2


3)10
2 2 2 1 1 1 3 3 3 4

4 3 2 2 1
3 3 2 1 1
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.08.2016, 22:06
Ответы с готовыми решениями:

Вторую форму открывать первой, а первую - второй
Как сделать так чтобы 2 форма открывается первой а 1 второй??? Нужно переставить формы.

Возможно ли первую форму сделать второй, а вторую первой?
Возможно ли первую форму сделать второй, а вторую первой? логический смысл n:=form2;...

Текстовые файлы: в первую строку вставить первую гласную из второй строки, после каждой согласной в первой
1-в первую строку вставить первую гласную из второй строки, после каждой согласной в первой (строки...

Как сделать, чтоб в первой процедуре можно было вызывать вторую, а во второй - первую?
Если я правильно помню, в паскале в одной процедуре можно вызывать другую, если эта другая описана...

12
9 / 9 / 9
Регистрация: 04.08.2016
Сообщений: 24
07.08.2016, 22:35 2
По сути вам нужна сортировка. Можно либо сначала отсортировать по убыванию, а потом уже расфасовать числа по строчкам, либо же использовать сортировки, которые позволят делать это по ходу работы ( например, пузырек позволит на каждом проходе находить элемент для вставки в одну из строчек)
0
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 79
07.08.2016, 22:38  [ТС] 3
Цитата Сообщение от Devenmort Посмотреть сообщение
По сути вам нужна сортировка. Можно либо сначала отсортировать по убыванию, а потом уже расфасовать числа по строчкам, либо же использовать сортировки, которые позволят делать это по ходу работы ( например, пузырек позволит на каждом проходе находить элемент для вставки в одну из строчек)
ну это дело то да, а как все превратит в код ??? такая сортировка пойдет???

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
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{
    int n;
    std::cin >> n;
    std::vector <int>v(n);
 
    for (int i = 0; i < v.size(); ++i)
    {
        std::cin >> v[i];
    }
    for (int i = 0; i < v.size() - 1; ++i)
    {
        for (int j = i + 1; j < v.size(); ++j)
        {
            if (v[j] < v[i])
                std::swap(v[i], v[j]);
            }
        }
    for (int i = 0; i < v.size(); ++i)
        std::cout << v[i] << " ";
и что дальше сделать ??
0
9 / 9 / 9
Регистрация: 04.08.2016
Сообщений: 24
07.08.2016, 22:47 4
А дальше нужно сделать что-то типа этого:
C++
1
2
3
4
5
6
7
std::vector<int> team1;
std::vector<int> team2;
for (int i= 0; i< v.size(); i++)
if (i%2)
    team1.push_back(v[i]);
else
    team2.push_back(v[i]);
0
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 79
07.08.2016, 22:51  [ТС] 5
Цитата Сообщение от Devenmort Посмотреть сообщение
C++
1
2
3
4
5
6
7
std::vector<int> team1;
std::vector<int> team2;
for (int i= 0; i< v.size(); i++)
if (i%2)
    team1.push_back(v[i]);
else
    team2.push_back(v[i]);
а почему if (i%2) ???
0
9 / 9 / 9
Регистрация: 04.08.2016
Сообщений: 24
07.08.2016, 23:01 6
Если остаток от деления на 2 - 0, значит число четное и отводим в первую команду - иначе числе нечетное и тащим во вторую команду. Такова была идея, я правда сейчас заметил, что надо добавить отрицание в условие, но поправить уже нет возможности.
0
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 79
07.08.2016, 23:29  [ТС] 7
Цитата Сообщение от Devenmort Посмотреть сообщение
Если остаток от деления на 2 - 0, значит число четное и отводим в первую команду - иначе числе нечетное и тащим во вторую команду. Такова была идея, я правда сейчас заметил, что надо добавить отрицание в условие, но поправить уже нет возможности.
да но зачем взять четные и нечетные ??? нам этого не надо...нам надо взять сначала большие, и по убиванию сортировать в двух страках
0
9 / 9 / 9
Регистрация: 04.08.2016
Сообщений: 24
07.08.2016, 23:36 8
Цитата Сообщение от Realmucho Посмотреть сообщение
Причем хотят разделиться так - самый сильный игрок - в первой команде, следующий самый сильный - во второй, третий - в первой
Четные и нечетные - это лишь следствие заданного условия, если считать от 0. Такими действиями именно это и происходит.
Я предлагаю другой алгоритм.
Сначала сортируется весь входной массив, а потом уже из отсортированного массива формируются команды. Самый первый элемент - самый сильный игрок, второй - хуже, дальше еще хуже.
Присмотритесь к условию. Я предложил именно то, что просят.
0
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 79
08.08.2016, 00:08  [ТС] 9
да я тоже так думал, щас попробую примудрит что нибудь...

Добавлено через 30 минут
Где я ошибся ???

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
40
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{
    int n;
    std::cin >> n;
    std::vector <int>v(n);
    for (int i = 0; i < v.size(); ++i)
    {
        std::cin >> v[i];
    }
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            if (v[i] < v[j])
            {
                int temp = v[i];
                v[i] = v[j];
                v[j] = temp;
            }
        }
    }
    
    for (int i = 0; i < v.size(); ++i)
        std::cout << v[i] << " ";
    
        std::vector<int> team1();
        std::vector<int> team2();
        for (int i = 0; i < v.size(); i++)
            if (i % 2 != 0)
                team1().push_back(v[i]);
            else
                team2().push_back(v[i]);
        std::cout << team1 << " ";
        std::cout << team2 << " ";
    
}
0
9 / 9 / 9
Регистрация: 04.08.2016
Сообщений: 24
08.08.2016, 00:22 10
Лучший ответ Сообщение было отмечено Realmucho как решение

Решение

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
40
41
42
43
44
45
46
47
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{
    int n;
    std::cin >> n;
    std::vector <int>v(n);
    for (int i = 0; i < v.size(); ++i)
    {
        std::cin >> v[i];
    }
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            if (v[i] < v[j])
            {
                int temp = v[i];
                v[i] = v[j];
                v[j] = temp;
            }
        }
    }
    
    for (int i = 0; i < v.size(); ++i)
        std::cout << v[i] << " "<<std::endl;
    
    std::vector<int> team1;
    std::vector<int> team2;
    for (int i = 0; i < v.size(); i++)
        if (i % 2 == 0)
            team1.push_back(v[i]);
        else
            team2.push_back(v[i]);
    std::cout<<"Team 1"<<std::endl;
    for (int i = 0; i < team1.size(); i++)
        std::cout << team1.at(i) << " ";
    std::cout<<std::endl;
 
    std::cout<<"Team 2"<<std::endl;
    for (int i = 0; i < team2.size(); i++)
        std::cout << team2.at(i) << " ";
    std::cin>>v[0]; //просто чтоб держалась консоль
    return 0;
}
1
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 79
08.08.2016, 00:42  [ТС] 11
Цитата Сообщение от Devenmort Посмотреть сообщение
team2.at(i)
а эт .at что значит???
0
Эксперт С++
8711 / 4256 / 947
Регистрация: 15.11.2014
Сообщений: 9,653
08.08.2016, 00:49 12
http://rextester.com/TBKWX8770
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <algorithm>
#include <iostream>
#include <cassert>
#include <vector>
 
template<class T>
void view(const char* desc, const T& cont)
{
    std::cout << desc;
    for(const auto& i: cont)
        std::cout << i<<", ";
    std::cout<<'\n';
}
 
 
using data = std::vector<int>;
 
void sort_(data src, data (&teams)[2])
{
    assert( teams[0].empty());
    assert( teams[1].empty());
    assert( !src.empty() );
    
    std::sort(src.begin(), src.end());
    
    bool first = false;
    while(!src.empty())
        teams[ first? 1:0 ].emplace_back(src.back()),
        src.pop_back(),
        first = !first;
}
 
void check(data src, const data& team1, const data& team2)
{
    view("\nall: ", src);
    
    data re[2] = {};
    sort_(src, re);
 
    view("team1: ", re[0]);
    view("team2: ", re[1]);
    
    assert(re[0]==team1);
    assert(re[1]==team2);
}
 
int main()
{
    std::cout << "Hello, world!\n";
    
    check({1,7,7,4,3,2,},{7,4,2},{7,3,1});
    
    check({1,2,3,4,5},{5,3,1},{4,2});
    
    check({2,2,2,1,1,1,3,3,3,4},{4,3,2,2,1},{3,3,2,1,1});
    
}
Добавлено через 59 секунд
Цитата Сообщение от Realmucho Посмотреть сообщение
а эт .at что значит???
https://google.gik-team.com/?q... A%3Aat&l=1
0
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 79
08.08.2016, 01:18  [ТС] 13
а чем можно заменить .at ??? просто мы такое еще не проходили, и использовать нельзя...

Добавлено через 23 минуты
все получилось, вместо .at написал team1[i]... и все сработало...спасибо всем
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.08.2016, 01:18
Помогаю со студенческими работами здесь

Первую строку матрицы поменять местами со второй строкой, вторую с - третьей и т.д
новое содержание матрицы А полученное замещением 1-ой строки 2-ой строкой, 2-ой строки 3 строкой и...

Переставить последнюю строчку на место первой. При этом первую, вторую, ..., предпоследнюю строку сместить вниз
дан двух мерный массив. Переставить последнюю строчку на место первой . при этом первую, вторую,...

Приписать второе слово второй строки к первой, развернуть первую строку
Заданы 2 строки, состоящие из слов, разделенных пробелами. Приписать второе слово второй строки к...

В составе баскетбольной команды 12 игроков. Сколько игроков в команде имеют рост, меньший среднего роста команды?
!!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru