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

Определить минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Робота с структурированными файлами http://www.cyberforum.ru/cpp-beginners/thread901464.html
Создать программу, которая бы обеспечивала создание, просмотр, дополнения и удаление даных из файла, содержащего информацию о группе студентов а именно имя, пол, рост. Организовать поиск который позволяет найти средний рост всех девушек в группе, и имя самого высокого мальчика. помогите пожалуйста.....очень нужна програма.......отчислят если не зделаю
C++ Матрица. Найти номер ее ряда с наибольшей суммой элементов и вывести данный ее номер, а также значение наибольшей суммы Дана матрица размерности M x N. Найти номер ее ряда з найбольшою суммой элементов и вивести даный ее номер а также значение найбольшой суммы http://www.cyberforum.ru/cpp-beginners/thread901460.html
QR разложение (есть эскиз кода и алгоритм) C++
Здравствуйте! Требуется реализовать класс матриц, в котором присутствует QR разложение. На википедии нашёл отличный алгоритм с примерами, написал эскиз кода. При реализации алгоритма появились трудности от неумения применения простейших алгоритмов (скалярное произведение, проекция вектора на вектор) Вот мой кусок кода из класса: void Cmatrix::QR_Decomposition(Cmatrix* A, Cmatrix* Q, Cmatrix*...
C++ Производный класс, аргументы по умолчанию
Здравствуйте. Есть базовый класс и производный. Проблема в том что в производном классе надо сделать один аргумент, который наследуется от базового класса, по умолчанию, но по условии задания я могу редактировать только определения класса, а я этот самый аргумент даже передать не могу в производный так как он не объявлен в конструкторе производного класса. Чтобы вам было удобней я выделил...
C++ Поменять местами наибольший и последний элементы массива http://www.cyberforum.ru/cpp-beginners/thread901390.html
Даны действительные числа х1,...,хn (все числа попарно различны). Поменять местами наибольший и последний элементы. 1 Victoria, сколько ваших тем надо переименовать, чтобы вы обратили наконец внимание на правила форума?! заголовок должен отражать суть задания, название раздела - не есть подходящее название для темы.
C++ Исправление ошибок Помогите запустить программу #include <iostream.h> #include <stdlib.h> #include <fstream.h> int vvod(); int vivod(); char Name; struct ved { int tn; char fam; подробнее

Показать сообщение отдельно
Сергей_freeze
 Аватар для Сергей_freeze
6 / 6 / 1
Регистрация: 24.12.2011
Сообщений: 347
17.06.2013, 16:00  [ТС]     Определить минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы
спасибо. щас будем исправлять, так как прога еще не компилируется..

Добавлено через 14 минут
сделал под себя! осталось чтоб еще работало....
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
#include <math.h>
#include <windows.h>
#include <conio.h>
char bufRus[256];
char* Rus(const char*text)
{
    CharToOem(text, bufRus);
    return bufRus;
}
int main()
{
    int n,i,j,m,A[50][50],f,S=0,sp1,sp2;
    puts(Rus("Введите число строк и столбцов матрицы:"));
    scanf("%d%d",&m,&n);
    for(i=0; i<m; i++)
        for(j=0; j<n; j++)
        {
            printf(Rus("Введите число A[%d][%d]="), i,j);
            scanf("%d",&A[i][j]);
        }
    puts(Rus("Массив А:"));
    for(i=0; i<m; i++)
    {
        for(j=0; j<n; j++) printf("%6d", A[i][j]);
        puts("\n");
    }
    for(j=0; j<n; j++)
    {
        f=0;
        i=0;
        while(i<m&&f==0)
        {
            if(A[i][j]>0) f=0;
            else f=1;
            i++;
        }
        if(f==0) for(i=0; i<m; i++) S+=A[i][j];
    }
    printf(Rus("Сумма: %d \n"),S);
    j=n-2;
    i=0;
    while(j>=0&&i<m-1)
    {
        sp1+=fabs(A[i][j]);
        j=j-1;
        i++;
    }
    printf("sp1=%d\n",sp1);
    j=n-1;
    i=1;
    while(j>0&&i<m)
    {
        sp2+=fabs(A[i][j]);
        j--;
        i++;
    }
    printf("sp2=%d\n",sp2);
    if(sp1<sp2) printf(Rus("Сумма элементов диагонали (выше побочной) равна %d"),sp1);
    else printf(Rus("Сумма элементов диагонали (ниже побочной) равна %d"),sp2);
    getch();
    return(0);
}
Добавлено через 28 минут
вот что надо найти: возьмем матрицу

3 5 -7
3 2 8
9 1 5

побочная диагональ -7 2 9, параллельные ей пары элементов 5+3=8; 3; 8+1=9; 5. следовательно Минимальный модуль сумм это 3.

Добавлено через 12 минут
посмотрите пожалуйста.,что не так???

Добавлено через 35 минут
или вот еще код.работает. Здесь находит:1) сумму элементов в тех столбцах, которые не содержат отрицательных
элементов;
2) минимум среди сумм модулей элементов диагоналей, параллельных
побочной диагонали матрицы.
мне только 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
//#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 
const int k=3;
void sum (int mas[k][k]);
void max(int matrix[k][k]);
 
 
int main(){
        int arr[k][k];
        int i, j;
 
        for ( i = 0; i < k; i++ ){
                for ( j = 0; j < k; j++ ){
                        printf("arr[%d][%d] = ", i+1, j+1);
                        scanf("%d", &arr[i][j]);
                }
        }
 
        printf("\n-----------------------\n");
        for ( i = 0; i < k; i++ )
        for ( j = 0; j < k; j++ )
        printf( ( j < (k-1) ) ? "%d\t" : "%d\n", arr[i][j]);
 
        printf("\n Summa elementov v teh strokah,kotorye ne soderjat otricatelnyh elementov:");
        sum(arr);
        printf("\n \n Minimum sredi summ elementov diagonalej,parallelnyh pobochnoy diagonali matricy: ");
        max(arr);
        fflush(stdin);
        char c=getchar();
        return 0;
}
 
void sum(int mas[k][k])
{
        int i,j,a,sum,n;
        for (i=0;i<k;i++)
        { 
                a=0;
                for (j=0;j<k;j++)
                if (mas[i][j]<0) a++;
                if (a==0) 
                { 
                        sum=0;
                        for (n=0;n<k;n++)
                        sum+=mas[i][n];
                        printf("\n stroka %d: %d",(i+1),sum);
                }
        }
}
int sumDiagonal (int matrix[k][k], int currentDiagonal)
{
    int sum = 0;
    if(currentDiagonal < k)
        for(int i = -1; i != currentDiagonal; ++i)
            sum += matrix[currentDiagonal - i - 1][i + 1];
    else
        for(int i = currentDiagonal - k + 1, j = k; i < k; ++i)
            sum += matrix[--j][i];
    return sum;
}
void max(int matrix[k][k])
{
        int min = sumDiagonal(matrix, 0);
        for(int i = 1, cnt; i < k + k - 1; ++i)
        {
                cnt = sumDiagonal(matrix, i);
                if(cnt < min)
                        min = cnt;
        }
        printf("%d\n",min);
}
 
Текущее время: 17:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru