Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
DartRevan
1

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

11.06.2009, 18:51. Просмотров 3092. Ответов 7
Метки нет (Все метки)

Помогите разобрать в С++ нешарю: Для заданной матрицы найти минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2009, 18:51
Ответы с готовыми решениями:

Найти минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы
Помогите скорректировать код, чтобы найти минимум среди сумм модулей элементов диагоналей,...

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

Найти минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы
Помогите написать код! Задача: Дана целочисленная квадратная матрица. Определить минимум среди...

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

7
47 / 47 / 3
Регистрация: 07.01.2009
Сообщений: 298
11.06.2009, 19:23 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
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <stdio.h> 
#include <math.h>
#include <time.h>
#include <stdlib.h>
 
#define N 8
 
void print_array(int arr[][N], int n)
{
int i = 0;
int j = 0;
 
for( i = 0; i < n; i++)
{
for( j = 0; j < n; j++)
printf("%d\t",arr[i][j]);
puts("\n");
}
}
 
 
void getSUM(int arr[][N], int n)
{
int i = 0;
int j = 0;
int has_negatives = 0; // Есть ли отрицательные элементы в текущем столбце 
long sum = 0;
 
for ( j = 0; j < n; j++ )
{
sum = 0;
has_negatives = 0;
for( i = 0; i < n; i++)
{
if ( arr[i][j] < 0 )
{
has_negatives = 1;
break;
}
else 
{
sum += arr[i][j];
}
}
 
// Выводим сумму только тех столбцов, в которых нет отрицательных элементов
if ( !has_negatives ) 
{
printf("\n");
printf("Sum of column %d = %d\t", j, sum);
}
}
}
 
void getMAX_among_diagonals(int arr[][N], int n)
{
int i = 0;
int j = 0;
int k = 0;
long currsum = 0;
long maxsum = 0;
 
puts("Processing diagonals:");
 
// Пробегаем левую верхнюю часть матрицы
for ( i = 0; i < n - 1; i++)
{
long currsum = 0;
for ( j = i, k = 0; (j >= 0) && (k <= i); j--, k++)
{
printf("[%d;%d]\t", j, k);
currsum += abs(arr[j][k]);
}
 
if (currsum > maxsum)
maxsum = currsum;
 
printf("Sum = %ld\n", currsum);
}
 
// Пробегаем правую нижнюю часть матрицы
for ( i = n - 1; i >= 1; i--)
{
long currsum = 0;
for ( j = i, k = n - 1; (j <= n - 1) && (k >= i); j++, k--)
{
printf("[%d;%d]\t", j, k);
currsum += abs(arr[j][k]);
}
 
if (currsum > maxsum)
maxsum = currsum;
 
printf("Sum = %ld\n", currsum);
}
 
printf("Max sum of absolute values in diagonals = %ld\n", maxsum);
}
 
void rand_array(int arr[][N], int n)
{
int i = 0;
int j = 0;
 
srand(time(0));
rand();
 
for ( i = 0; i < n; i++ )
for ( j = 0; j < n; j++ )
arr[i][j] = rand() % 30 - 3;
} 
 
int main() 
{ 
    int i;
    int **a = (int **)calloc(N,sizeof(int*));
    for (i = 0; i < N; i++)
        a[i] = (int*)calloc(N,sizeof(int));
 
rand_array(a, N);
 
print_array(a, N);
 
getSUM(a, N);
 
getMAX_among_diagonals(a, N);
 
for (i = 0; i < N; i++)
        free(a[i]);
 
free(a);
**a = NULL;
 
 
 
return 0;
}
1
Заказ софта
342 / 187 / 21
Регистрация: 26.05.2009
Сообщений: 863
11.06.2009, 19:50 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
32
#include <stdio.h>
 
int main(int argc, char * argv [])
{
    const int N = 5;
    int mass[N][N], result[N];
    for(int s = 0; s < N; s++) { result[s] = 0;
        for(int st = 0; st < N; st++) {
            printf("Mas[%d][%d]: ", s + 1, st + 1);
            if(scanf_s("%d", & mass[s][st]) != 1) {
                fprintf(stderr, "Error! (Scanf)\n");
                return -1;
            }/* Если не MS Visual Studio, то scanf */
        }
    }
    printf("------------------------\n");
    for(int i = 0; i < N; i++) {
        for(int j = 0; j < N; j++) {
            result[i] += mass[i][j];
        }
    }
 
    int min = result[0];
    for(int smr = 1; smr < N; smr++) {
        if(result[smr] < min) {
            min = result[smr];
        }
    }
    printf("Min: %d\n", min);
 
    return 0;
}
1
Эксперт GPSS
458 / 380 / 84
Регистрация: 02.07.2010
Сообщений: 1,569
16.01.2011, 18:49 4
Не работает ваш код, кто нибудь напишите то что действительно работает
0
13 / 13 / 4
Регистрация: 07.12.2010
Сообщений: 127
16.01.2011, 18:52 5
Цитата Сообщение от SergProgC++ Посмотреть сообщение
Не работает ваш код, кто нибудь напишите то что действительно работае
У меня работает, какие у Вас ошибки выдает?
0
Эксперт GPSS
458 / 380 / 84
Регистрация: 02.07.2010
Сообщений: 1,569
16.01.2011, 19:10 6
Цитата Сообщение от apachan Посмотреть сообщение
У меня работает, какие у Вас ошибки выдает?
смысл не в том что ошибки а считает не верно

Добавлено через 6 минут
на матрицу
6 1 0
2 8 1
4 9 2
выдает ответ 7
а правильно же будет 2

Добавлено через 1 минуту
и где тут модуль обсчитываеться не понятно
0
13 / 13 / 4
Регистрация: 07.12.2010
Сообщений: 127
16.01.2011, 19:13 7
Юзайте поиск по форуму, такую задачу уже раз дцать решили...
0
Эксперт GPSS
458 / 380 / 84
Регистрация: 02.07.2010
Сообщений: 1,569
16.01.2011, 19:21 8
а ссылочкой не поделетесь???
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2011, 19:21

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Найти минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.
Помогите доделать задачу до конца, пожалуйста :-) Дана целочисленная квадратная матрица....

Найти минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы
Дана целочисленная квадратная матрица. Определить: 1.) сумму элементов в тех столбцах, которые не...

Найти минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы
Дана целочисленная квадратная матрица. Определить: 2) минимум среди сумм модулей элементов...

Найти минимум среди сумм модулей элементов диагоналей матрицы, параллельных побочной диагонали матрицы
Дана целочисленная квадратная матрица. Определить: 2) Минимум среди сумм модулей элементов...


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

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

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