1 / 1 / 1
Регистрация: 01.12.2011
Сообщений: 51
1

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

22.03.2012, 15:33. Показов 3336. Ответов 8
Метки нет (Все метки)

Помогите, пожалуйста, решить это задание! Плохо понимаю, как работать с массивами в C++

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

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

Если на главной диагонали и выше нет элементов с указанным свойством, то ответом должно служить сообщение об этом.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.03.2012, 15:33
Ответы с готовыми решениями:

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

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

Дана квадратная матрица. Заменить нулями все ее элементы, расположенные на главной диагонали и выше ее
Дана квадратная матрица порядка N. Заменить нулями все ее элементы, расположенные на главной...

Дана действительная квадратная матрица. Заменить нулями все элементы, на главной диагонали и выше нее
Дана действительная квадратная матрица порядка 12. Заменить нулями все ее элементы, расположены на...

8
1066 / 583 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
22.03.2012, 17:06 2
где ваши попытки решения??
0
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;
}

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

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

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

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

C
1
scanf("%d", &a[n][n]);
так можно? напиши, если не трудно, с вводом данных.
0
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], ну и маленькие и большие буквы это разные вещи
1
1 / 1 / 1
Регистрация: 01.12.2011
Сообщений: 51
22.03.2012, 18:04  [ТС] 8
спасибо большое! ты мне очень помог!
0
7 / 7 / 0
Регистрация: 22.03.2012
Сообщений: 17
22.03.2012, 18:07 9
Был рад помочь!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2012, 18:07
Помогаю со студенческими работами здесь

Дана квадратная матрица порядка N. Заменить нулями все элементы, стоящие на главной диагонали и выше ее
Написать программу для решения следующей задачи: дана квадратная матрица порядка N. Заменить нулями...

Матрица. Найти сумму всех элементов, расположенных на главной диагонали и выше ее
Найти сумму всех элементов , расположенных на главной диагонали и выше ее матрицы размером 6*6,...

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru