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

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

Восстановить пароль Регистрация
 
olga92
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 13
06.06.2012, 13:46     Прямоугольная матрица A[N,M] #1
Помогите составить программный код.
Дано: прямоугольная матрица А[N,M], содержащая только натуральные числа. Отсортировать строки матрицы в порядке возрастания сумм простых чисел строк. Нахождение суммы простых чисел строки оформить как функцию. Определение, является ли число простым, оформить как функцию. Перестановку строк оформить как функцию.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2012, 13:46     Прямоугольная матрица A[N,M]
Посмотрите здесь:

C++ прямоугольная матрица на С
Прямоугольная матрица C++
Прямоугольная матрица C++
C++ прямоугольная матрица
C++ Прямоугольная матрица
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
06.06.2012, 14:51     Прямоугольная матрица A[N,M] #2
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
olga92
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 13
06.06.2012, 15:47  [ТС]     Прямоугольная матрица A[N,M] #3
спасибо

Добавлено через 15 минут
А можно это сделать как то по другому или только так?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
06.06.2012, 16:10     Прямоугольная матрица A[N,M] #4
Есть миллион вариантов написания кода. Я предложил лишь один из них.
olga92
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 13
06.06.2012, 16:12  [ТС]     Прямоугольная матрица A[N,M] #5
А ты сможешь мне написать в другом варианте, пожалуйста. Просто препод зверь, он точно завалит меня с таким вариантом.
grizlik78
06.06.2012, 16:20
  #6

Не по теме:

Цитата Сообщение от olga92 Посмотреть сообщение
Просто препод зверь
Раз даже звери программирование осваивают, то почему у человека проблемы возникают с этим?
Вопрос риторический.

olga92
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 13
06.06.2012, 17:03  [ТС]     Прямоугольная матрица A[N,M] #7
Ну это я преувеличила
Но мне срочно нужно сделать это задание, чтобы получить допуск. А этот код записан методом сортировки пузырьком, я не смогу это объяснить Мне нужно что-то по проще.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
06.06.2012, 17:13     Прямоугольная матрица A[N,M] #8
Цитата Сообщение от olga92 Посмотреть сообщение
Ну это я преувеличила
Но мне срочно нужно сделать это задание, чтобы получить допуск. А этот код записан методом сортировки пузырьком, я не смогу это объяснить Мне нужно что-то по проще.
Проще метода сортировки пузырьком вы не найдете, уж поверьте.
olga92
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 13
06.06.2012, 18:06  [ТС]     Прямоугольная матрица A[N,M] #9
Понимаете мы не проходили этот метод, по этому я не знаю как его объяснять А можно спросить почему вы сначала не указываете пространство имен, разве так не проще?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
06.06.2012, 20:07     Прямоугольная матрица A[N,M] #10
Цитата Сообщение от olga92 Посмотреть сообщение
Понимаете мы не проходили этот метод, по этому я не знаю как его объяснять А можно спросить почему вы сначала не указываете пространство имен, разве так не проще?
http://ru.wikipedia.org/wiki/Сортировка_пузырьком
Мы считайте сравниваем каждый элемент с каждым. Что может быть проще? Посмотрите на другие сортировки и осознайте, что пузырек воистину лишь учебный.

Нет, не проще. Я хочу явно указывать полное имя функции дабы избежать лишних ошибок и недопониманий с компилятором. Впрочем, это личное дело каждого.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2012, 18:41     Прямоугольная матрица A[N,M]
Еще ссылки по теме:

C++ Прямоугольная матрица
Прямоугольная матрица C++
Прямоугольная матрица C++

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

Или воспользуйтесь поиском по форуму:
olga92
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 13
07.06.2012, 18:41  [ТС]     Прямоугольная матрица A[N,M] #11
хорошо, спасибо
Yandex
Объявления
07.06.2012, 18:41     Прямоугольная матрица A[N,M]
Ответ Создать тему
Опции темы

Текущее время: 06:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru