С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Dr_Shadow
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 22
1

Исключение N-й строки из матрицы

04.05.2009, 18:56. Просмотров 501. Ответов 7
Метки нет (Все метки)

Приветствую!
Нужна помощь в написании программы.
Имеется матрица nxm, нужно удалить из нее строку с максимальным элементом.
Функцию для нахождения мах элемента я написал, а вот с удалением строки не выходит
C++
1
2
3
4
5
6
7
8
void CzadachadvaDlg::sum(double** a, int n, int m, double& s)
{t=0;
k=0;
double q=a[0][0];
for(int i=0; i<n; i++)
{for(int j=0; j<m; j++)
if(a[i][j]>q) {k=i; t=j;
}
Заранее спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2009, 18:56
Ответы с готовыми решениями:

Нечетные строки матрицы заменить на X(m)
дана матрица A(m, m) и массив X(m). Нечетные строки матрицы заменить на X(m), ...

Включение и исключение строки и столбца из матрицы
Всем привет. Нужна помощь у меня долгов блин как шелков. Еще эти лабы по...

умножить элемент каждой строки первой матрицы на наибольшее из значений элементов соответствующей строки второй матрицы
Даны две действительные квадратные матрици порядка n. Получить новую матрицу:...

Определить, что все элементы строки первой матрицы больше соответствующих элементов строки второй матрицы
Помогите,пожалуйста,с решением массивов в с++.надо в статическом и динамическом...

Вывести на печать исходный массив в виде матрицы и средние арифметические каждой строки матрицы с указанием номера строки
О великие знатоки паскаля, прошу у вас помощи Задача : Ввести двумерный...

7
Monte-Cristo
2796 / 1384 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
04.05.2009, 19:40 2
Эм.... что такое double &s? зачем он передается?
0
NickA
35 / 34 / 17
Регистрация: 28.04.2009
Сообщений: 67
04.05.2009, 19:44 3
Вроде так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void CzadachadvaDlg::sum(double** a, int n, int m, double& s) 
{
  t=0;
  k=0;
  double q=a[0][0];
  for(int i=0; i<n; i++)
    for(int j=0; j<m; j++)
      if(a[i][j]>q){
        k=i; 
        t=j;
      };
  for(int i=k; i<n-1; i++)
    for(int j=0; j<m; j++)
      a[i][j]=a[i+1][j];
  s=n-1; // Если s возвращает новое количество строк, но можно и в n вернуть новый размер
};
0
Monte-Cristo
2796 / 1384 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
04.05.2009, 19:57 4
вот как-то вот так сделай
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int sum(double** a, int m, int n)
{
    int maxi = 0;
    int maxj = 0;
 
    for (int i=0; i<m; i++)
        for(int j=0; j<n; j++)
            if (a[maxi][maxj] < a[i][j]) 
            {
                maxi = i;
                maxj = j;
            }
    return maxi;
}
 
double** del(double** a, int &m, int n, int del)
{
    double** z = new double*[m-1];
 
    for (int i=0; i<n; i++) z[i] = new double[n];
 
    for (int i=0; i<del; i++)
    {
        for (int j=0; j<n; j++)
            z[i][j] = a[i][j];
    }
 
    for (int i=del+1; i<m; i++)
    {
        for (int j=0; j<n; j++)
            z[i-1][j] = a[i][j];
    }
 
    m--;
 
    return z;
}
 
void print(double** a, int m, int n)
{
    for (int i=0; i<m; i++)
    {
        for (int j=0; j<n; j++)
        {
            cout.width(3);
            cout << a[i][j];
        }
        cout << endl;
    }
    cout << endl;
}
 
int main()
{
    int m = 5;
    int n = 10;
 
    srand(time(0));
 
    double** matr = new double*[m];
    for (int i=0; i<n; i++) matr[i] = new double[n];
 
    for (int i=0; i<m; i++)
        for (int j=0; j<n; j++)
            matr[i][j] = rand()%90+10;
 
    print(matr,m,n);
 
    matr = del(matr,m,n,sum(matr,m,n));
 
    print(matr,m,n);
    
    return 0;
}
0
NickA
35 / 34 / 17
Регистрация: 28.04.2009
Сообщений: 67
04.05.2009, 20:00 5
Ответ: Исключение N-й строки из матрицы
вот как-то вот так сделай
Это вообще супер, строка исчезнет из памяти вовсе, что сказать профи есть профи.
0
Monte-Cristo
2796 / 1384 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
04.05.2009, 20:07 6
NickA, научитесь читать.
0
Dr_Shadow
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 22
04.05.2009, 20:08  [ТС] 7
спасибо большое, буду разбираться
0
Monte-Cristo
2796 / 1384 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
04.05.2009, 20:18 8
Dr_Shadow, забыл сказать, я код не тестил, так что возможны ошибки...

Добавлено через 45 секунд
и .. желательно добавить удаление матрицы...

Добавлено через 2 минуты 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
double** del(double** a, int &m, int n, int del)
{
    double** z = new double*[m-1];
 
    for (int i=0; i<n; i++) z[i] = new double[n];
 
    for (int i=0; i<del; i++)
    {
        for (int j=0; j<n; j++)
            z[i][j] = a[i][j];
    }
 
    for (int i=del+1; i<m; i++)
    {
        for (int j=0; j<n; j++)
            z[i-1][j] = a[i][j];
    }
 
    m--;
    
    for (int i=0; i<m; i++) delete[] a[i];
    delete[] a;
    
    return z;
}
Добавлено через 38 секунд
и так:

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
int main()
{
    int m = 5;
    int n = 10;
 
    srand(time(0));
 
    double** matr = new double*[m];
    for (int i=0; i<n; i++) matr[i] = new double[n];
 
    for (int i=0; i<m; i++)
        for (int j=0; j<n; j++)
            matr[i][j] = rand()%90+10;
 
    print(matr,m,n);
 
    matr = del(matr,m,n,sum(matr,m,n));
 
    print(matr,m,n);
    
    for (int i=0; i<m; i++) delete[] matr[i];
    delete[] matr;
 
    return 0;
}
0
04.05.2009, 20:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2009, 20:18

Динамический массив. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы
#include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;string.h&gt; int...

Заменить строки матрицы, содержащие максимальный элемент, на соответствующие строки единичной матрицы
В заданной двумерной матрице замените строки, содержащие максимальный элемент,...

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


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

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

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