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

Дан двумерный массив Х размером n*m, заполненный случайными числами. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.91
Alic
1 / 1 / 0
Регистрация: 06.05.2012
Сообщений: 17
13.08.2012, 15:28     Дан двумерный массив Х размером n*m, заполненный случайными числами. #1
Тема: Матрицы.
Дан двумерный массив Х размером n*m, заполненный случайными числами.
Вычислить сумму элементов с индексами кратными 3, среднее арифметическое всех четных элементов. Определить, есть ли в данном массиве строка, в которой имеется два элемента массива, имеющие наибольшие значения.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2012, 15:28     Дан двумерный массив Х размером n*m, заполненный случайными числами.
Посмотрите здесь:

Дан двумерный массив размером nхm, заполненный случайными числами. C++
C++ Дан двумерный массив размером 5х6, заполненный случайным образом
C++ Дан двумерный массив размером nxm, заполненный случайным образом
C++ Дан двумерный массив размером nm, заполненный случайным образом. Найти сумму отрицательных элементов
C++ Дан двумерный массив размером мхн заполненный случайными числами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
13.08.2012, 17:18     Дан двумерный массив Х размером 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
58
59
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
int main()
{
    const int n = 7;
    const int m = 6;
    int matrix[n][m];
    srand(time(NULL));
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
            std::cout << std::setw(4) << (matrix[i][j] = rand() % 10);
        std::cout << std::endl;
    }
    // вычислить сумму элементов с индексами кратными 3
    int sum = 0;
    for(int i = 0; i < n; i += 3)
        for(int j = 0; j < m; j += 3)
            sum += matrix[i][j];
    std::cout << "Sum: " << sum << std::endl;
    // среднее арифметическое всех четных элементов
    sum = 0;
    int count = 0;
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
            if (matrix[i][j] % 2 == 0)
            {
                count++;
                sum += matrix[i][j];
            }
    std::cout << "Avg: " << ((double)sum / count) << std::endl;
    /*  Определить, есть ли в данном массиве строка,
     *  в которой имеется два элемента массива, имеющие наибольшие значения.
     */
    int max = matrix[0][0];
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
            if (matrix[i][j] > max)
                max = matrix[i][j];
    bool two_max_exist = false;
    for(int i = 0; i < n; i++)
    {
        count = 0;
        for(int j = 0; j < m; j++)
            if (matrix[i][j] == max)
                count++;
        if (count == 2)
        {
            two_max_exist = true;
            break;
        }
    }
    std::cout << "Max: " << max << std::endl;
    std::cout << "Yes, exist" << std::endl;
    return 0;
}
SubTerran
8 / 8 / 0
Регистрация: 13.08.2012
Сообщений: 18
13.08.2012, 17:35     Дан двумерный массив Х размером n*m, заполненный случайными числами. #3
Библиотека: Matrix.h
http://www.stroustrup.com/Programming/Matrix/Matrix.h

Библиотека: MatrixIO.h
http://www.stroustrup.com/Programming/Matrix/MatrixIO.h


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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
//
// 
// 
//
 
#include<iostream>
#include<fstream>
#include<sstream>
#include<cmath>
#include<cstdlib>
#include<string>
#include<list>
#include<vector>
#include<algorithm>
#include<stdexcept>
#include "Matrix.h"
#include "MatrixIO.h"
 
using namespace Numeric_lib;
using namespace std;
 
//------------------------------------------------------------------------------
 
inline void keep_window_open()
{
    cin.clear();
    cout << "Please enter a character to exit\n";
    char ch;
    cin >> ch;
    return;
}
 
//------------------------------------------------------------------------------
 
inline int randint(int max) { return rand()%max; }
 
//------------------------------------------------------------------------------
 
int main()
{
    setlocale( LC_ALL, "Russian" );
 
    int n;
    int m;
 
    cout << "Введите n и m: ";
    cin >> n >> m;
 
    Matrix<int, 2> X(n, m);
 
    srand(2);
 
    for (Index i = 0; i < n; ++i)
        for (Index j = 0; j < m; ++j)
            X(i, j) = randint(20);
 
    cout << X << '\n';
 
    int sum = 0;
    int sum_even = 0;
    int even = 0;
 
    for (Index i = 0; i < n; ++i)
        for (Index j = 0; j < m; ++j)
        {
            if (X(i, j) % 2 == 0)
            {
                sum_even += X(i, j);
                ++even;
            }
            if (i % 3 == 0 && j % 3 == 0)
                sum += X(i, j);
        }
    
    cout << "Сумма элементов с индексами кратных 3: " << sum << '\n';
 
    cout << "Среднее арифметическое всех четных элементов: "
         << double(sum_even / even) << '\n';
 
    vector<int> vec;
    for (Index i = 0; i < n; ++i)
    {
        sort(&X[i][0], &X[i][0] + m);
        vec.push_back(X[i][m - 1]);
    }
 
    for (int i = 0; i < vec.size(); ++i)
    {
        if (vec[i] == *max_element(vec.begin(), vec.end()))
        {
            sort(vec.begin(), vec.end());
            if ((X[i][m - 2] >= vec[vec.size() - 2]))
            {
                cout << "Строка, в которой имеется два элемента массива, "
                     << "имеющие наибольшие значения:\n";
                cout << X[i] << '\n';
                break;
            }
            else
            {
                cout << "Строка, в которой имеется два элемента массива, "
                <<  "имеющие наибольшие значения не найдена\n";
                break;
            }
        }
    }
    keep_window_open();
    return 0;
}
 
//------------------------------------------------------------------------------
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
13.08.2012, 20:39     Дан двумерный массив Х размером n*m, заполненный случайными числами. #4
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
int main()
{
    srand(time(0));
    const int Rows = 5, Colls = 5;
    int Matrix[Rows][Colls];
    int Summa = 0, Max_i = 0, Max_j = 0;
    int SummaEl = 0, Count = 0, CountS = 0;
    bool Flag = false; 
    
    std::cout<<"Matrix:\n";
    for (int i = 0; i < Rows; i++)
    {
        for (int j = 0; j < Colls; j++)
        {
            Matrix[i][j] = rand()%20;
            if (i % 3 == 0 && j % 3 == 0)
               Summa += Matrix[i][j];
            if (Matrix[i][j] % 2 == 0)
            {
               SummaEl += Matrix[i][j];
               Count++;
            }
            if (Matrix[i][j] > Matrix[Max_i][Max_j])
            {
               Max_i = i;
               Max_j = j;
            }
            std::cout<<std::setw(4)<<Matrix[i][j];
        }
        std::cout<<std::endl;
    }
        
    for (int i = 0; i < Rows; i++)
    {
        for (int j = 0; j < Colls; j++)
            if (Matrix[i][j] == Matrix[Max_i][Max_j])
               CountS++;
        if (CountS == 2)
           Flag = true;
        CountS = 0;
    }
    std::cout<<"Summa elementov s indexami, kratnie 3 = "<<Summa<<std::endl;
    std::cout<<"Sred. arifm, chetnih elementov = "<<(SummaEl / Count)<<std::endl;
    std::cout<<"Max element = "<<Matrix[Max_i][Max_j]<<std::endl;
    std::cout<<"Stroki, v kotorih 2 max. elementa - "<<Flag<<std::endl;
    
    system("pause");
    return 0;
}
Yandex
Объявления
13.08.2012, 20:39     Дан двумерный массив Х размером n*m, заполненный случайными числами.
Ответ Создать тему
Опции темы

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