Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
I_see_you
0 / 0 / 0
Регистрация: 23.09.2010
Сообщений: 49
#1

Дана целочисленная квадратная матрица произвольного размера.

26.09.2011, 19:53. Просмотров 1352. Ответов 12
Метки нет (Все метки)

Дана целочисленная квадратная матрица произвольного размера. Значения элементов матрицы задаются случайным образом. Разработать программу, позволяющую находить сумму элементов матрицы, расположенных выше главной диагонали и ниже побочной диагонали.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2011, 19:53
Ответы с готовыми решениями:

Квадратная матрица произвольного размера
Не понимаю массивы, помогите пожалуйста написать программу формирующую...

Дана целочисленная квадратная матрица.
Определить сумму элементов в тех строках, которые не содержат отрицательных...

Дана целочисленная квадратная матрица
Дана целочисленная квадратная матрица. Определить: • первую строку в которой...

Дана целочисленная квадратная матрица
Дана целочисленная квадратная матрица. Найдите наибольший элемент...

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

12
Nijaz
34 / 34 / 23
Регистрация: 16.12.2010
Сообщений: 100
26.09.2011, 20:39 #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
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
#define N 100
int main()
{
    int A[N][N],i=0,j=0,S1=0,S2=0,n;
    //A[N][N]-matriza, i,j-stroca i stolbez, S1-summa vyshe gl
    //S2-summa nyzhe pobochnoy
    cout<<"vvedite razmer"<<endl;
    cin>>n;
    //zapolnenie massiva
    for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
    {
                    A[i][j]=rand()%10;
                    cout<<A[i][j]<<"  ";
                    }
                    cout<<endl;
                    }
                    
    //summa elementov vyshe glavnoy diagonaly
    for(i=0;i<n;i++)
    for(j=i+1;j<n;j++)
    {
                    S1+=A[i][j];
                    }
    
    //summa elementov nyzhe pobochnoy diagonaly
    for(i=0;i<n;i++)
    for(j=0;j<i;j++)
    {
                    S2+=A[i][j];
                    }
    cout<<S1<<endl;
    cout<<S2;
    getch();
    return 0;
}
1
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
26.09.2011, 21:17 #3
Nijaz, любой адекватный компилятор, более-менее соответствующий стандарту поперхнется вашим кодом, и обругает вас ошибками. Во-первых не iostream.h, а iostream. Во-вторых, на все cout и cin сругнется из-за отсутствия std::. Если лень писать перед каждым std:: (ей богу, лениться набирать лишние пять символов - я наверное перегнул), пишите после хеадеров using namespace std;
Ну и так, к слову, разберитесь с форматированием кода. Читать не очень удобно.
1
I_see_you
0 / 0 / 0
Регистрация: 23.09.2010
Сообщений: 49
26.09.2011, 22:32  [ТС] #4
Товарищ Soon, не могли бы вы написать программу так, как нужно...))Ибо здавать уже завтра, а рабочей задачи нет...До этого в основном работали на Делфи...А тут такой подарочек приподнесли...Грубо говоря я нихрена не понимаю в "Си"...Буду дико благодарен...
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
26.09.2011, 23:14 #5
Я, конечно, не мега тру, по созданию программ на Си, но вот, что-то накидал.
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 <malloc.h>
 
main()
{
    int n;
    int **arr;
    int i, j;
    int sumAbove = 0, sumBelow = 0;
    srand(time(0));
    printf("enter the size of array: ");
    scanf("%d", &n);
    arr = (int**) malloc (n * sizeof(int*));
    for(i = 0; i < n; ++i)
    {
        arr[i] = (int*) malloc (n * sizeof(int));
        for(j = 0; j < n; ++j)
        {
            arr[i][j] = rand() % 100 - 50;
            printf("%d ", arr[i][j]);
            if(j > i)
                sumAbove += arr[i][j];
            if(j > (n - i - 1))
                sumBelow += arr[i][j];
        }
        printf("\n");
    }
    printf("\nsumAbove: %d, sumBelow: %d", sumAbove, sumBelow);
    getch();
}
Советую проверить сумму ниже побочной диагонали. Я, конечно, просчитал на бумаге, да и тест один прогнал, но все-таки.
1
Nijaz
34 / 34 / 23
Регистрация: 16.12.2010
Сообщений: 100
27.09.2011, 16:22 #6
soon, я не знаю на каком "адекватном компиляторе" ты компилируешь, но не зная нечего тут критиковать. я работаю на DevCpp
0
I_see_you
0 / 0 / 0
Регистрация: 23.09.2010
Сообщений: 49
27.09.2011, 18:42  [ТС] #7
Всем, конечно, спасибо, но задача не доделана...Должны выполняться оба условия...Тобишь находиться сумма между главной(выше ее) и побочной(ниже) диагонали...то-есть, если будет матрица 3х3, то в итоге будет охвачен только 1 элемент (центральный справа).
0
soon
27.09.2011, 18:46
  #8

Не по теме:

Nijaz, предлагаю не оффтопить в теме. Отписал в ЛС.

0
Nursik77
273 / 233 / 30
Регистрация: 05.04.2011
Сообщений: 645
27.09.2011, 18:50 #9
I_see_you, а вы знаете что такое матрица? и где у нее главная и побочная диагональ?
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.09.2011, 18:50 #10
Т.е. вам нужно объединение 2-х множеств?
Меняйте
C
1
2
3
4
if(j > i)
    sumAbove += arr[i][j];
if(j > (n - i - 1))
    sumBelow += arr[i][j];
на
C
1
2
if((j > i) || (j > (n - i - 1)))
    sum += arr[i][j];
Соответственно нужно добавить переменную sum, инициализировать её нулем, а переменные sumBelow и sumAbove можно убрать.
upd/ Так, не до конца понял сообщение #7. Приведите пример матрицы и вывод результата.
1
Nursik77
273 / 233 / 30
Регистрация: 05.04.2011
Сообщений: 645
27.09.2011, 19:06 #11
Наверное имеется ввиду пересечение элементов выше главной и ниже побочной.
К примеру матрица 3х3:
1 2 3
4 5 6
7 8 9
матрица 4х4:
1 2 3 4
5 6 7 8
9 1 2 3
4 5 6 7
матрица 5х5:
1 2 3 4 5
6 7 8 9 1
2 3 4 5 6
7 8 9 1 2
3 4 5 6 7


I_see_you, так?
0
I_see_you
0 / 0 / 0
Регистрация: 23.09.2010
Сообщений: 49
27.09.2011, 19:08  [ТС] #12
Именно...Я вроде как популярно объяснил...Х3 почему проблема в восприятии).
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.09.2011, 19:12 #13
Цитата Сообщение от I_see_you Посмотреть сообщение
Х3 почему проблема в восприятии
Не проснулся. Руки что-то наколотили, пока мозг растекался по столу. Сейчас вроде обратно залился в черепушку, и начал осмыслять происходящее. Наверное, будет так
C
1
2
if((j > i) && (j > (n - i - 1)))
    sum += arr[i][j];
0
27.09.2011, 19:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2011, 19:12

Дана целочисленная квадратная матрица
Всем доброго времени суток ув. форумчане! Не успеваю выполнить задачу по...

Дана целочисленная квадратная матрица
дана целочисленная квадратная матрица. Определить максимальный среди элементов...

Дана целочисленная квадратная матрица
2. Дана целочисленная квадратная матрица. Определить:


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru