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

Матрица. Диагонали в прямоугольнике - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ помогите перевести программу с паскаля на С++ http://www.cyberforum.ru/cpp-beginners/thread971496.html
Ребят , помогите перевести программу с паскаля на С++ , или подскажите как написать нечто подобное. Заранее благодарен. Вот задание : №1. Дано натуральное число N. Определить, является ли оно...
C++ Сформировать массив С, каждый элемент которого равен максимальному значению соответствующих элементов массивов А и В 1) Даны два массива А и В одинаковой размерности. Сформировать массив С, каждый элемент которого равен максимальному значению соответствующих элементов массивов А и В. http://www.cyberforum.ru/cpp-beginners/thread971480.html
C++ вывести на экран информацию о стоимости аренды
В моей задаче ( Бассейн предоставляет сдает в аренду 4 плавательных дорожки пятницам с 16.00 до 20.00 на почасовой основе. Цена аренды 60 грн. / Час. Известна информация о состоянии каждой из дорожек...
C++ Нужно немного разобраться в бинарном поиске ,в С++
Здравствуйте. Вообщем , есть код, нашёл такой пример: int start,end,m; start=0; //начало end=n; //конец bool a=false; while(start<=end) { m=(start+end)/2; //середина...
C++ функция добавления элемента в список http://www.cyberforum.ru/cpp-beginners/thread971466.html
пытаюсь создать список с добавлением элемента в конец. void List::Add(int x){ element *temp=new element; temp->x=x; temp->NEXT=NULL; element *current=head; while...
C++ Работа с матрицей Здравствуйте можете помочь. Задана матрица F(9,3). определить, равны ли все элементы первого столбца соответствующим элементам главной диагонали. Если нет, то поменять их местами. На c++. подробнее

Показать сообщение отдельно
Alexdemath
125 / 122 / 6
Регистрация: 11.04.2010
Сообщений: 255
08.10.2013, 05:38
Пример вывода нужных диагоналей

Кликните здесь для просмотра всего текста
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
#include <iostream>
using namespace std;
 
int main()
{   
    setlocale(0,"");
 
    int A[10][12] = {{3, 8, 2, 7, 5, 2, 9, 1, 6, 4, 0, 1},
                     {2, 1, 6, 0, 5, 6, 8, 3, 6, 9, 3, 0},
                     {1, 2, 5, 2, 2, 1, 0, 7, 9, 4, 4, 9},
                     {1, 6, 1, 0, 2, 2, 5, 4, 0, 0, 5, 7},
                     {2, 2, 1, 9, 1, 2, 6, 9, 7, 8, 9, 4},
                     {1, 5, 7, 1, 5, 1, 8, 8, 2, 1, 1, 3},
                     {9, 5, 1, 0, 2, 2, 0, 5, 5, 3, 2, 1},
                     {0, 1, 1, 3, 1, 6, 7, 1, 2, 2, 9, 5},
                     {3, 5, 6, 1, 9, 2, 3, 7, 5, 7, 4, 0},
                     {2, 2, 7, 5, 5, 8, 9, 2, 4, 3, 0, 0}};
    int m = 10, n = 12;
 
    cout << "Матрица 10 на 12:" << "\n\n";
    for (int i = 0; i < m; i++)
     { for (int j = 0; j < n; j++) cout << "  " << A[i][j];
       cout << "\n";
     }
 
    cout << "\nПобочная диагональ:\n\n";
    for (int i = 0; i < m; i++){ cout << "  " << A[i][n-1-i]; }
 
    cout << "\n\nДиагонали, параллельные побочной:\n\n";
    for (int i = 0; i < m; i++)
     { for (int j = 0; j <= i; j++) cout << "  " << A[j][i-j];
       cout << "\n";
     }
    cout << "\n";
    for (int i = 0; i < m; i++) cout << "  " << A[i][n-2-i];
    cout << "\n\n";
    for (int i = 1; i < m; i++)
     { for (int j = 1; j <= m-i; j++) cout << "  " << A[i+j-1][n-j];
       cout << "\n";
     }
     
    cout << endl << endl;
    system("pause");
    return 0;
}

Пример решения (надеюсь не ошибся)

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
#include <iostream>
using namespace std;
 
int main()
{   
    setlocale(0,"");
 
    int A[10][12] = {{3, 8, 2, 7, 5, 2, 9, 1, 6, 4, 0, 1},
                     {2, 1, 6, 0, 5, 6, 8, 3, 6, 9, 3, 0},
                     {1, 2, 5, 2, 2, 1, 0, 7, 9, 4, 4, 9},
                     {1, 6, 1, 0, 2, 2, 5, 4, 0, 0, 5, 7},
                     {2, 2, 1, 9, 1, 2, 6, 9, 7, 8, 9, 4},
                     {1, 5, 7, 1, 5, 1, 8, 8, 2, 1, 1, 3},
                     {9, 5, 1, 0, 2, 2, 0, 5, 5, 3, 2, 1},
                     {0, 1, 1, 3, 1, 6, 7, 1, 2, 2, 9, 5},
                     {3, 5, 6, 1, 9, 2, 3, 7, 5, 7, 4, 0},
                     {2, 2, 7, 5, 5, 8, 9, 2, 4, 3, 0, 0}};
    int m = 10, n = 12;
 
    cout << "Матрица 10 на 12:" << "\n\n";
    for (int i = 0; i < m; i++)
     { for (int j = 0; j < n; j++) cout << "  " << A[i][j];
       cout << "\n";
     }
 
    int a = abs(A[0][0]),  b = abs(A[0][n-2]),  c = abs(A[m-1][n-1]);
 
    for (int i = 0; i < m; i++)
     { int sum = 0;
       for (int j = 0; j <= i; j++) sum += abs(A[j][i-j]);
       if (sum > a) a = sum;
     }
 
    for (int i = 1; i < m; i++) b += abs(A[i][n-2-i]);
 
    for (int i = 1; i < m; i++)
     { int sum = 0;
       for (int j = 1; j <= m-i; j++) sum += abs(A[i+j-1][n-j]);
       if (sum > c) c = sum;
     }
 
    int max = (a > b && a > c) ? a : (b > a && b > c) ? b : c;
 
    cout << "\nМаксимум среди сумм модулей элементов диагоналей,\n";
    cout << "параллельных побочной диагонали: " << max;
    cout << endl << endl;
    system("pause");
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru