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

Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы - C++

Восстановить пароль Регистрация
 
doomer74
1 / 1 / 0
Регистрация: 01.12.2011
Сообщений: 51
22.03.2012, 15:33     Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы #1
Помогите, пожалуйста, решить это задание! Плохо понимаю, как работать с массивами в C++

Дана действительная квадратная матрица порядка N (N - константа).

Вычислить сумму тех из ее элементов, расположенных на главной диагонали и выше нее, которые превосходят по величине все ее элементы, расположенные ниже главной диагонали.

Если на главной диагонали и выше нет элементов с указанным свойством, то ответом должно служить сообщение об этом.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2012, 15:33     Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы
Посмотрите здесь:

Задана квадратная матрица вещественных чисел. Найти сумму модулей элементов, которые находятся ниже главной диагонали C++ C++
C++ [C++] Найти сумму модулей элементов, расположенных выше главной диагонали
Найти сумму элементов расположенных выше главной диагонали. C++
[C++] Дана квадратная матрица состоящая из натруальных чисел. Надо заменить нулями элементы, расположенные на главной диагонали и выше её C++
C++ Дана квадратная вещественная матрица размерности n. Заменить нулями все ее элементы, расположенные на главной диагонали и выше нее
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
22.03.2012, 17:06     Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы #2
где ваши попытки решения??
Bagatokak
7 / 7 / 0
Регистрация: 22.03.2012
Сообщений: 17
22.03.2012, 17:26     Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы #3
Что-то вроде этого:

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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 10
 
int main () {
    int i,j,k=0,l=0,A[N][N],sum=0,flag;
    for (i=0; i<N; i++) {
        for (j=0; j<N; j++) {
            A[i][j]=rand()%21-10;
            printf ("%7d",A[i][j]);
            }
        printf ("\n\n");
        }
    for (k=0; k<N; k++) {
        for (l=k; l<N; l++)
            for (i=1; i<N; i++)
                for (j=1; j<i+1; j++)
                    if (A[i][j]<A[k][l]) flag=1;
                       else flag=0;
    if (flag) sum+=A[k][l];
    }
    if (sum==0) {
               printf ("Takih elementov net");
               getch();
               return 0;
               }
    printf ("sum=%d",sum);
    getch();
    return 0;
}

С++ вообще не знаю, так что лови на С.
doomer74
1 / 1 / 0
Регистрация: 01.12.2011
Сообщений: 51
22.03.2012, 17:36  [ТС]     Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы #4
спасибо. но я C# не знаю поэтому вряд ли пойму этот код.
я очень плохо ориентируюсь в массивах в c++.
поэтому увы не могу показать попытки решения.

буду очень благодарен, если кто-нибудь ещё мне поможет...
Bagatokak
7 / 7 / 0
Регистрация: 22.03.2012
Сообщений: 17
22.03.2012, 17:38     Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы #5
Это не шарп, это обычный Си О_О
могу комментарии к каждой строке написать, если надо.
doomer74
1 / 1 / 0
Регистрация: 01.12.2011
Сообщений: 51
22.03.2012, 17:55  [ТС]     Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы #6
Цитата Сообщение от Bagatokak Посмотреть сообщение
Это не шарп, это обычный Си О_О
пардон

напиши, пожалуйста. мне надо хотя бы понять, как эта программа вообще будет работать.

Добавлено через 13 минут
и еще вопрос, как сделать нерандомное заполнение матрицы?

C
1
scanf("%d", &a[n][n]);
так можно? напиши, если не трудно, с вводом данных.
Bagatokak
7 / 7 / 0
Регистрация: 22.03.2012
Сообщений: 17
22.03.2012, 18:01     Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы #7
Ааааай, чёрт, я накосячил -_-
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 10
 
int main () {
    int i,j,k=0,l=0,A[N][N],sum=0,flag;
    for (i=0; i<N; i++) {
        for (j=0; j<N; j++) {
            A[i][j]=rand()%21-10; // scanf ("%d",&A[i][j]);
            printf ("%7d",A[i][j]);
            }
        printf ("\n\n");
        }
    for (k=0; k<N; k++) {
        for (l=k; l<N; l++)
            for (i=1; i<N; i++) {
                for (j=1; j<i+1; j++)
                    if (A[i][j]<A[k][l]) flag=1;
                       else {
                            flag=0; 
                            break;
                            }
            if (flag==0) break;
            }
    if (flag) sum+=A[k][l];
    }
    if (sum==0) {
               printf ("Takih elementov net");
               getch();
               return 0;
               }
    printf ("sum=%d",sum);
    getch();
    return 0;
}

1-3) подключаем различные библиотеки ввода-вывода и библиотеку со стандартными функциями.
4) задаём N как const,в итоге у нас N=10 (можешь сам задать нужное тебе значение)
6) ну собственно сама наша функция.
7) задаём переменные - i,j,k,l - счётчики, A[N][N] - сам массив, sum - сумма, flag - флаг.
8) цикл по i от нуля до n-1 (n не включается) с шагом =1.
9) цикл по j от нуля до n-1 с шагом =1.
10) A[i][j] - элемент i-ой строки j-го столбца массива A, задаётся случайно, с помощью функции rand() в интервале (-10,10) (процент означает остаток от деления)
11) выводим этот элемент на печать
12) завершение внутреннего цикла
13) делаем 2 отступа вниз, дабы матрица у нас выглядела всё таки как матрица.
14)закрывается внешний цикл
15-16) 2 цикла, значения счётчиков - есть номера элементов главной диагонали и выше.
17-18) 2 цикла, значения счётчиков - есть номера элементов ниже главной диагонали.
19-23) сравниваем элемент главной диагонали (или выше) с элементом ниже главной диагонали. Если он больше - то поднимаем флаг, если меньше - опускаем.
В итоге мы сравним КАЖДЫЙ элемент главной диагонали и выше с КАЖДЫМ элементом ниже диагонали. Если элемент главной диагонали будет больше,чем каждый элемент снизу, то флаг так и останется поднятым. Если же он будет меньше, то мы его опускаем, и прекращаем цикл по j.
24) Если у нас флаг опущен, то мы прекращаем цикл по i. Переходим к следующему элементу главной диагонали и выше.
26) Если же флаг у нас поднять, то мы прибавляем значение этого элемента к искомой сумме.
28) Если у нас сумма равна нулю, то мы печатаем что таких элементов нет, ждём нажатия любой клавиши, и прекращаем программу соответственно.
33) Если же сумма у нас отлична от нуля, то мы печатаем её, и завершаем программу.


Вроде всё. Извиняюсь за предыдущий неправильный вариант, что-то я поторопился

Добавлено через 1 минуту
Цитата Сообщение от doomer74 Посмотреть сообщение
и еще вопрос, как сделать нерандомное заполнение матрицы?
Код C
1
scanf("%d", &a[n][n]);
так можно? напиши, если не трудно, с вводом данных.
Да, конечно можно, главное не забывай что у тебя не [n][n] в цикле должно быть, а [i][j], ну и маленькие и большие буквы это разные вещи
doomer74
1 / 1 / 0
Регистрация: 01.12.2011
Сообщений: 51
22.03.2012, 18:04  [ТС]     Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы #8
спасибо большое! ты мне очень помог!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2012, 18:07     Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы
Еще ссылки по теме:

Дана квадратная матрица. Заменить нулями все ее элементы, расположенные на главной диагонали и выше ее C++
C++ Матрица. Заменить нулями все ее элементы, расположенные на главной диагонали и выше ее
C++ Вычислить сумму тех из m элементов, которые превосходят по величине все элементы, расположенные ниже главной диагонали

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

Или воспользуйтесь поиском по форуму:
Bagatokak
7 / 7 / 0
Регистрация: 22.03.2012
Сообщений: 17
22.03.2012, 18:07     Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы #9
Был рад помочь!
Yandex
Объявления
22.03.2012, 18:07     Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы
Ответ Создать тему
Опции темы

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