Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2019, 10:55   #1
Ann2
Новичок
Джуниор
 
Регистрация: 03.06.2019
Сообщений: 1
По умолчанию [C++] Поменять элементы матрицы и найти сумму. Код не работает

Задание:Если Целочисленная квадратная матрица симметрична относительно главной диагонали - обнулить все элементы, лежащие выше главной диагонали и найти сумму всех элементов лежащих ниже главной диагонали. В чем проблема?
Код:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void Set (double **a, int n, int m)
{
    for (int i = 0; i < n; i++)
        for (int j=0; j < m; j++)
        a[i][j]=rand()%9 + 1;
}
 
void Top (double **a, int n, int m)
{
for (int i=0; i<n/2; i++)
        for (int j=n-1; j>n-i-1; j--)
            a[i][j] = 0;
}
 
void Bottom (double **a, int n, int m, int &isum)
{
    double sum=0.0;
    for (int i=0; i<n/2; i++)
        for(int j = 0; j < m; j++)
            sum+=a[i][j];
}
 
void Print (double **a, int n, int m)
{
    for (int i = 0; i < n; i++)
    {
        for (int j=0; j < m; j++)
            cout << a[i][j] << " ";
        cout << "\n";
    }
}
 
int main()
{
    int n, m, sum=0;
    cout << "n="; cin >> n;
    cout << "m="; cin >> m;
 
      double **a = new double*[n];
    for (int i = 0; i < n; i++)
       a[i]=new double[m];
 
    Set(a,n,m);
    cout << "Matrix:\n";
    Print(a,n,m);
    Top(a,n,m);
    Bottom(a,n,m,sum);
    cout << "Modified matrix:\n";
    Print(a,n,m);
    cout << "Summ\n"<<sum;
    for (int i = 0; i < n; i++)
    delete[]a[i];
    delete[]a;
system("pause");
return 0;
}
Ann2 вне форума Ответить с цитированием
Старый 03.06.2019, 11:10   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Ann2 Посмотреть сообщение
лежащие выше главной диагонали и найти сумму всех элементов лежащих ниже главной диагонали.
во-первых, если речь идёт о главной диагонали, тогда

Код:
void Top (double **a, int n, int m)
{
for (int i=0; i<n; i++)
        for (int j=i+1; j<n; j++)
            a[i][j] = 0;
}
 
void Bottom (double **a, int n, int m, double &sum)
{
    sum=0.0;
    for (int i=0; i<n; i++)
        for(int j = 0; j <= i; j++)
            sum+=a[i][j];
}
во-вторых, сумма у Вас не считалась - параметр один, а вычислялось другое.
в-третьих, сумма должна быть double (раз уж матрица double)
Код:
int main()
{
    int n, m;
    double sum;
Хотя это противоречит заданию: у Вас задана ЦЕЛОЧИСЛЕННАЯ матрица.
нужно переделать на int

пример. https://ideone.com/BTlgJZ

ну и последнее.

Цитата:
Сообщение от Ann2 Посмотреть сообщение
Если Целочисленная квадратная матрица симметрична относительно главной диагонали
а где проверка на то, что матрица симметрична относительно главной диагонали?!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(с++)Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами первым и последним элементам строки соответственно Ивангелион Помощь студентам 4 23.12.2016 18:25
Найти сумму элементов матрицы и подсчитать число ее строк, в пределах каждой из которых элементы упорядочены по возрастанию:Ai1<Ai Renc Visual C++ 0 12.04.2013 13:59
В каждой строке матрицы А(n*n) найти наибольший и наименьший элементы матрицы и поменять их местами saha1994 Паскаль, Turbo Pascal, PascalABC.NET 2 15.05.2012 20:38
ычислить элементы матрицы и найти сумму диагональных элементов [Паскаль] izi2000 Помощь студентам 1 03.01.2011 16:20
Pascal - Найти сумму всех ее отрицательных элементов и заменить ею все диагональные элементы этой матрицы NewBi Паскаль, Turbo Pascal, PascalABC.NET 2 24.04.2010 09:15