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

Прямоугольная матрица A[N,M] - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Квадратная матрица http://www.cyberforum.ru/cpp-beginners/thread597929.html
Получить квадратную матрицу порядка n: 1 2 ... n-1 n n+1 n+2 ... 2n-1 2n 2n+1 2n+2 ... 3n-1 3n .... (n-1)n+1 (n-1)n+2 ... n-1 n Такая тема уже есть, но мне хотелось бы более подробный и верный ответ. Заранее спасибо
C++ генератор уникальных паролей реализовать генератор уникальных паролей на С++ при помощи средств ООП http://www.cyberforum.ru/cpp-beginners/thread597926.html
Дана матрица размерности N на M C++
Дана матрица размерности N на M. Найти в матрице строку с наибольшей суммой элемен-тов. Вывести ее номер.
C++ Дана непустая последовательность различных натуральных чисел, за которой следует 0
Дана непустая последовательность различных натуральных чисел, за которой следует 0. Определить ближайшее к какому-нибудь целому числу N.
C++ Заполнить весь экран в графическом режиме разнообразными закрашенными прямоугольниками http://www.cyberforum.ru/cpp-beginners/thread597915.html
Заполнить весь экран в графическом режиме разнообразными закрашенными прямоугольниками.
C++ Определить ближайшее число меньше заданного числа N Определить ближайшее число меньше заданного числа N, которое делится на 7 без остатка. подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4926 / 2669 / 243
Регистрация: 29.11.2010
Сообщений: 7,425
06.06.2012, 14:51     Прямоугольная матрица A[N,M]
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 <algorithm>
#include <iterator>
#include <numeric>
#include <random>
 
bool isPrime(const int);
int amountPrime(const int, const int);
void mySwap(int*, int*, const std::size_t);
 
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> uid(1, 99);
    const std::size_t M = 3, N = 2;
    int A[M][N], sum[M] = {0}, index = 0;
    std::for_each(A, A + M, [&sum, &uid, &gen, &index](int* const pvalue)
    {
        std::generate(pvalue, pvalue + N, [&uid, &gen] {return uid(gen); } );
        std::copy(pvalue, pvalue + N, std::ostream_iterator<int> (std::cout, " ") );
        std::cout<< std::endl;
        sum[index++] = std::accumulate(pvalue, pvalue + N, 0, amountPrime);
    } );
    std::cout<< std::endl;  
    for (std::size_t i=0; i < M; i++) // банальная сортировка пузырьком
        for(std::size_t j=M-1; j > i; j--)
            if (sum[j-1] > sum[j])
            {
                std::swap(sum[j-1], sum[j]);
                mySwap(A[j-1], A[j], N);
            }
    std::for_each(A, A + M, [](int* const pvalue)
    {
        std::copy(pvalue, pvalue + N, std::ostream_iterator<int> (std::cout, " ") );
        std::cout<< std::endl;
    } );        
    return 0;
}
 
bool isPrime(const int x)
{
    for (int i=x-1; i > 1; i--)
        if (x % i == 0) return false;
    return true;
}
 
int amountPrime(const int x, const int y)
{
    return (isPrime(y) ? x + y : x);
}
 
void mySwap(int* i, int* j, const std::size_t N)
{
    for (std::size_t k=0; k < N; k++)
        std::swap(*(i + k), *(j + k)); 
}
http://liveworkspace.org/code/9f5997...cb959a70145b99
 
Текущее время: 13:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru