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

Двумерный динамический массив (Получить векторный столбец, элементы которого являются наименьшим по модулю столбцов исходной матрицы) - C++

Восстановить пароль Регистрация
 
Dmitrin
21 / 21 / 3
Регистрация: 04.12.2012
Сообщений: 500
11.03.2013, 19:27     Двумерный динамический массив (Получить векторный столбец, элементы которого являются наименьшим по модулю столбцов исходной матрицы) #1
Подскажите, что делаю не так. Задание такое: Дана матрица A(n,m). Получить векторный столбец, элементы которого являются наименьшим по модулю столбцов исходной матрицы.
Вот, вроде бы все написано, а ошибки (возможно глупой) найти не могу.
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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <math.h>
#include <time.h>
using namespace std;
 
 
int main()
{
    setlocale (LC_ALL, "Russian");
    srand(time(NULL));
    int i, j, n, m, min;
    int ** A;
    cout<<"Введите размерность  матрицы: "<<endl;
    cout<<"Строк: ";
    cin>>n;
    cout<<"Столбцов: ";
    cin>>m;
    A = new int*[n];
    for (i=0;i<n;i++)
    {
        A[i]=new int [m];
        for (j=0;j<m;j++)
        {
            A[i][j]=rand()%20-10;
            cout<<setw(4)<<A[i][j];
        }
        cout<<"\n";
    }
    cout<<"Векторный столбец c наименьшими по модулю элементами столбцов: "<<endl;
    for (j=0;j<m;j++)
    {
        min=A[i][j];
        for (i=0;i<n;i++)
        {
            if (abs(A[i][j])<=min)
                min=abs(A[i][j]);
        }
        cout<<min<<"\n";
    }
    delete [] A;
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2013, 19:27     Двумерный динамический массив (Получить векторный столбец, элементы которого являются наименьшим по модулю столбцов исходной матрицы)
Посмотрите здесь:

Построить вектор, элементы которого являются наибольшими числами каждой строки данной матрицы C++
Массив, каждый элемент которого равен максимуму элементов одной строки исходной матрицы C++
динамический двумерный массив (получить адрес на первый элемент первой строки) C++
C++ дана матрица А(5,5). Получить векторный столбец, элементы которого являются наибольшими по модулю элементов исходной матрицы
C++ Двумерный массив.Найти среднее арифметическое по столбцам.Столбец с наибольшим средним записать отдельно. В исходной матрице заменить его нулями
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
11.03.2013, 19:46     Двумерный динамический массив (Получить векторный столбец, элементы которого являются наименьшим по модулю столбцов исходной матрицы) #2
Возможно ты это имеешь ввиду.
Перенеси
C++
1
min=A[i][j];
за пределы обоих циклов (перед вхождением в первый цикл)
и назнач
C++
1
min=abs(A[0][0]);

как то так наверное
C++
1
2
3
4
5
6
7
8
9
10
11
12
 cout<<"Векторный столбец c наименьшими по модулю элементами столбцов: "<<endl;
min=abs(A[0][0]);
    for (j=0;j<m;j++)
    {
        
        for (i=0;i<n;i++)
        {
            if (abs(A[i][j])<=min)
                min=abs(A[i][j]);
        }
        cout<<min<<"\n";
    }
Dmitrin
21 / 21 / 3
Регистрация: 04.12.2012
Сообщений: 500
11.03.2013, 20:11  [ТС]     Двумерный динамический массив (Получить векторный столбец, элементы которого являются наименьшим по модулю столбцов исходной матрицы) #3
Нет, тогда программа некорректно работает. Нужно, чтобы при переходе на новую строку минимальное значение было не прежним значением.

Добавлено через 2 минуты
Я сделал так цикл, вроде бы работает, но я что то сомневаюсь в нем)
C++
1
2
3
4
5
6
7
8
9
10
    for (j=0;j<m;j++)
    {
        min=abs(A[0][0]);
        for (i=0;i<n;i++)
        {
            if (abs(A[i][j])<=min)
                min=abs(A[i][j]);
        }
        cout<<min<<"\n";
    }
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
11.03.2013, 20:27     Двумерный динамический массив (Получить векторный столбец, элементы которого являются наименьшим по модулю столбцов исходной матрицы) #4
А может изменить подход
Например ты находишь сумму элементов столбца и сравниваешь с предыдущим столбцом, если он меньше присваиваешь min номер этого столбца. Надеюсь вы поняли о чем я.
Dmitrin
21 / 21 / 3
Регистрация: 04.12.2012
Сообщений: 500
11.03.2013, 21:06  [ТС]     Двумерный динамический массив (Получить векторный столбец, элементы которого являются наименьшим по модулю столбцов исходной матрицы) #5
Я примерно понял, но не думаю, что следует так усложнять)))
Yandex
Объявления
11.03.2013, 21:06     Двумерный динамический массив (Получить векторный столбец, элементы которого являются наименьшим по модулю столбцов исходной матрицы)
Ответ Создать тему
Опции темы

Текущее время: 09:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru