Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Eagle123
6 / 6 / 2
Регистрация: 03.10.2012
Сообщений: 54
1

Матрицы

20.11.2012, 19:00. Просмотров 285. Ответов 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
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#define SIZE 4
 
void Pr(int arr[][SIZE])
{ 
    int i, j, a;
    int p = 1;
 
            for(i = 0; i < SIZE -1; i++) {
            a = 0; 
            p = 1;
                for(j = 0; j < SIZE - 1; j++)
                    if (arr [i] [j] > 0 ) {
                        a++;
                        p *= arr [i] [j];
                            if (a==(SIZE -1)) printf ("%d", p); }
    }
}
 
void Max (int arr[][SIZE])
{ 
    int i, j, sum, max;
        for (i = 0; i < SIZE - 1; i++)
            { sum = 0;
                for (j = 0;j < i + 1; j++)
                    { sum += arr [j] [j + SIZE - 1 - i];
                    }
                if (i == 0) max = sum;
                if (sum > max) max = sum;
            }
 
            for (i  =0; i < SIZE - 1; i++) 
                { sum = 0;
                    for (j  =0 ;j < i + 1; j++)
                        { sum += arr[j + SIZE - 1 - i] [j];
                        }
                    if (sum > max) max = sum;
                }
}
 
 
 
int main()
{
    int arr[SIZE] [SIZE]= {{1, 6, 6, 8}, {4, -8, 4, 1}, {9, -5, 9, 5}, {3, 5, -3, 6}};
Pr(arr);
Max(arr);
printf("%d\n%d", Pr, Max);
return 0;
}
P.S. Программа должна считать произведение элементов в тех строках, в которых отсуствуют отрицательные элемента, а так же максимум среди сумм элементов диагоналей, параллельной главной..
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2012, 19:00
Ответы с готовыми решениями:

Из матрицы A сформировать матрицу B (по спирали), отсортировав по убыванию все элементы матрицы A
Я походу тупенький и уже овер дофига времени не могу сделать эту задачу: Из...

Транспонирование матрицы. Содержание квадратной матрицы повернуть относительно центра на 90*.
Задача: Содержание квадратной матрицы повернуть относительно центра на 90*. ...

Программа по поиску обратной матрицы с помощью присоединенной единичной матрицы
Здравствуйте. У меня написана программа по поиску обратной матрицы с помощью...

Как обратиться к элементу матрицы через указатель на начало матрицы?
Как обратиться к элементу матрицы через указатель на начало матрицы? напишите...

Для данной матрицы нужно найти такое k, что k-я строка матрицы совпадает с k-м столбцом
Для заданной матрицы размера NхN найти такое k, что k-я строка матрицы...

2
Quickson
11 / 11 / 9
Регистрация: 18.09.2012
Сообщений: 29
20.11.2012, 19:26 2
Почему ты всегда во всех циклах пробегаешь до SIZE-1? Из-за этого ты последние элементы не учитываешь. И так же сравниваешь с SIZE-1, хотя надо с SIZE.
И в 50 строке выводишь не понятно какие значения, т.к функции возвращают void, т.е ничего, а ты пытаешься это вывести.
Исправил, на исходном тесте все правильно вывело.
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
#include <stdio.h>
#include <math.h>
#define SIZE 4
 
void Pr(int arr[][SIZE])
{ 
    int i, j, a;
    int p = 1;
 
    for(i = 0; i < SIZE; i++) 
    {
        a = 0; 
        p = 1;
        for(j = 0; j < SIZE; j++)
            if (arr [i] [j] > 0 ) 
            {
                a++;
                p *= arr [i] [j];
                if (a==(SIZE)) printf ("%d\n", p); 
            }
    }
}
 
void Max (int arr[][SIZE])
{ 
    int i, j, sum, max;
    for (i = 0; i <SIZE; i++)
    { 
        sum = 0;
        for (j = 0;j < i + 1; j++)
        {
            sum += arr [j] [j + SIZE - 1 - i];
        }
        if (i == 0) max = sum;
        if (sum > max) max = sum;
    }
 
    for (i  =0; i < SIZE; i++) 
    { 
        sum = 0;
        for (j  =0 ;j < i + 1; j++)
            { 
                sum += arr[j + SIZE - 1 - i] [j];
            }
        if (sum > max) max = sum;
    }
    printf("%d",max);
}
 
 
 
int main()
{
    int arr[SIZE] [SIZE]= {{1, 6, 6, 8}, {4, -8, 4, 1}, {9, -5, 9, 5}, {3, 5, -3, 6}};
    Pr(arr);
    Max(arr);
}
1
Eagle123
6 / 6 / 2
Регистрация: 03.10.2012
Сообщений: 54
20.11.2012, 19:29  [ТС] 3
Огромное спасибо)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2012, 19:29

Для заданной матрицы размером 8 на 8 найти такие k, что k-я строка матрицы совпадает с k-м столбцом
Элементы матрицы заполнить, используя функцию генератора случайных чисел....

Для заданной матрицы размером 8 на 8 найти такие k, что k-я строка матрицы совпадает с k-м столбцом
Для заданной матрицы размером 8 на 8 найти такие k, что k-я строка матрицы...

Вывести элементы матрицы в порядке их следования по диагоналям матрицы
Помогите , дана динамическая матрица размера N*M (N и M вводятся). Вывести...


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

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

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