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

Предусмотреть подсчет общего количества перестановок и вывод промежуточного массива после каждого цикла сортировки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Рассчитать значение функции по варианту, исходя из заданных параметров: Y(x)=cos(x)-1/tg(x) при x=0,5, в остальных случаях Y=0; http://www.cyberforum.ru/cpp-beginners/thread1072220.html
Рассчитать значение функции по варианту, исходя из заданных параметров: Y(x)=cos(x)-1/tg(x) при x=0,5,А В ОСТАЛЬНЫХ СЛУЧАЯХ Y=0;
C++ НОД (Время: 1 сек. Память: 16 Мб Сложность: 15%) есть задача ********/?main=task&id_task=148 и есть код #include <fstream> main(){ std::fstream i( "input.txt" ), o( "output.txt", 2); int a, b; i>>a>>b; while(a)a^=b^=a^=b%=a; o<<b; } http://www.cyberforum.ru/cpp-beginners/thread1072217.html
C++ Оформить в виде функций программу
Всем привет! Помогите пожалуйста оформить задачу в виде функций. /*В одномерном массиве, состоящем из n вещественных элементов, вычислить: • сумму положительных элементов массива; • произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами. Упорядочить элементы массива по убыванию */ #include <iostream> #include <conio.h> #include...
Что делаю не так? Составить программу вычисления с применением условного оператора C++
Составить программу вычисления с применением условного оператора. Все данные в правых частях формул выбрать самостоятельно и ввести с клавиатуры. Что-то накалякал, но не уверен что это вообще оно. Делаю в VS Express 2013, так же компилятор пишет "идентификатор sqrl не определен", хотя библиотеки прописал. Помогите пожалуйста :( Вот похожие темы, если что, я совсем начинающий...
C++ Сократить код до 101 - 120 символов http://www.cyberforum.ru/cpp-beginners/thread1072184.html
есть задача ! есть код #include <fstream> int main(){ std::fstream q("input.txt"),o("output.txt",2); int n,a,i,j,s=0; q>>n; for(i=0;i<n;i++) for(j=0;j<n;j++) {q>>a; s+=a; }
C++ Написать программу вычисления надо решить пару задачек.:) подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
16.01.2014, 05:27     Предусмотреть подсчет общего количества перестановок и вывод промежуточного массива после каждого цикла сортировки
1 вариант:
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
#include <iostream>
#include <clocale>
#include <algorithm>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "");
    const int N = 4;
    int A[N]; // имеем множество A {1, ... N}
    int counter = 0; // счетчик числа перестановок
    for (int i = 0; i < N; i++) // заполняем множество
        A[i] = i + 1;
    // sort(A, A + N); // необходимо при вводе произвольных элементов
    do
    {
        for (int i=0; i < N; i++)
            cout << A[i] << ' ';
        cout << endl;
        counter++;
    } while (next_permutation(A, A + N));
    cout << "Всего перестановок: " << counter << endl;
    return 0;
}
2 вариант (велосипед mode on):
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 <iostream>
#include <clocale>
 
using namespace std;
 
// вывод множества на экран
void print(const int *A, const int size);
// функция перестановки двух чисел
void swap(int &, int &);
// функция генерации следующей перестановки
void next_perm(int k, int *A, const int size, int &counter);
 
 
int main()
{
    setlocale(LC_ALL, "");
    const int N = 4;
    int A[N]; // имеем множество A {1, ... N}
    int counter = 0; // счетчик числа перестановок
    for (int i = 0; i < N; i++) // заполняем множество
        A[i] = i + 1;
    next_perm(0, A, N, counter);
    cout << "Всего перестановок: " << counter << endl;
    return 0;
}
 
void print(const int *A, const int size)
{
    for (int i=0; i < size; i++)
        cout << A[i] << ' ';
    cout << endl;
}
 
void swap(int &x, int &y)
{
    int tmp = x;
    x = y;
    y = tmp;
}
 
void next_perm(int k, int *A, const int size, int &counter)
{
    // если заполнилось
    if (k == size)
    {
        print(A, size);
        counter++;
        return;
    }
 
    for(int i = k; i < size; i++)
    {
        swap(A[k], A[i]);
        next_perm(k + 1, A, size, counter); // следующая перестановка
        swap(A[k], A[i]);
    }
}
 
Текущее время: 01:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru