Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
overlord754
59 / 21 / 9
Регистрация: 24.10.2009
Сообщений: 198
1

Уплотнение матрицы.

23.11.2010, 21:08. Просмотров 1380. Ответов 2
Метки нет (Все метки)

Задание удалить из матрицы нулевые строки и столбцы, тем самым сократив ее.
Программа вроде работает правильно, но при некоторых значениях N и M, программа съедает некоторые оставшиеся значения, или вообще ничего не выводит.
пример:
0 1 0
0 5 0
программа вообще без вывода.
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
#include <iostream.h>
#include <stdlib.h>
void main()
{int i=0,j=0, n=0,m=0,f=0,x=0;
int a[100][100];
cout<<"Enter the array dimension NxM"<<'\n';
cout<<"N= ";cin>>n;
cout<<"M= ";cin>>m;
cout<<"Enter the array"<<n<<"x"<<m<<'\n';
{
for ( i=0;i<n;i++)
for ( j=0;j<m;j++)
cin>>a[i][j];
}
system("cls");
       for ( i=0;i<n;i++)
            {
                f=0;
                for ( j=0;j<m;j++)
                if (a[i][j]!=0) f=1;
                if (f==0)
                {
                   for ( x=i+1;x<n;x++)
                   {
                        for ( j=0;j<m;j++)
                        a[x-1][j]=a[x][j];
                   } 
                   n=n-1;
                   i=i-1;
                }
             }
      for ( i=0;i<m;i++)
            {
                 f=0;
                for (j=0;j<n;j++)
                {
                    if (a[i][j]!=0) f=1;
                 }
                if (f==0)
                {
                    for (x=i+1;x<n;x++)
                    {
                        for (j=0;j<m;j++)
                            a[j][x-1]=a[j][x];
                    } 
                m=m-1;
                    i=i-1;
                }
            }
for ( i=0;i<n;i++)
{
for ( j=0;j<m;j++)
{
cout<<a[i][j]<<" ";
}
cout<<'\n';
}
}
расскажите в чем ошибка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2010, 21:08
Ответы с готовыми решениями:

Уплотнение матрицы
Ребята, помогите с этим:Уплотнить заданную матрицу, удаляя из нее строки и...

Матрицы. Найти и распечатать сумму элементов 5-го столбца матрицы А и сумму элементов последней строки матрицы В
Даны две матрицы А(mxn)и В(m1xn1).программа находит и распечатывает сумму...

Алгоритм обработки матрицы: Нахождение максимального элемента матрицы и его номера.
Алгоритм обработки матрицы: Нахождение максимального элемента матрицы и его...

Сформировать одномерный массив из диагональных элементов матрицы. Найти след матрицы
Для заданной квадратной матрицы сформировать одномерный массив из ее...

Вычесть из элементов первого столбца матрицы значение максимального элемента матрицы
Составить программу, в которой 1) организовать ввод матрицы размера mxn из...

2
valeriikozlov
Эксперт С++
4687 / 2513 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
24.11.2010, 09:06 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
#include <iostream.h>
#include <stdlib.h>
void main()
{int i=0,j=0, n=0,m=0,f=0,x=0;
int a[100][100];
cout<<"Enter the array dimension NxM"<<'\n';
cout<<"N= ";cin>>n;
cout<<"M= ";cin>>m;
cout<<"Enter the array"<<n<<"x"<<m<<'\n';
{
for ( i=0;i<n;i++)
for ( j=0;j<m;j++)
cin>>a[i][j];
}
system("cls");
       for ( i=0;i<n;i++)
            {
                f=0;
                for ( j=0;j<m;j++)
                if (a[i][j]!=0) f=1;
                if (f==0)
                {
                   for ( x=i+1;x<n;x++)
                                   {
                        for ( j=0;j<m;j++)
                                        a[x-1][j]=a[x][j];
                                   } 
                                   n=n-1;
                   //i=i-1;//не нужная строка 
                }
             }
      for ( i=0;i<m;i++)
            {
                 f=0;
                for (j=0;j<n;j++)
                {
                    if (a[j][i]!=0) f=1;
                 }
                if (f==0)
                {
                    for (x=i+1;x<m;x++)
                    {
                        for (j=0;j<n;j++)
                            a[j][x-1]=a[j][x];
                    } 
                    m=m-1;
                    //i=i-1;//не нужная строка
                }
            }
for ( i=0;i<n;i++)
{
for ( j=0;j<m;j++)
{
cout<<a[i][j]<<" ";
}
cout<<'\n';
}
}
1
overlord754
59 / 21 / 9
Регистрация: 24.10.2009
Сообщений: 198
25.11.2010, 23:03  [ТС] 3
valeriikozlov, спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2010, 23:03

Разделить все элементы матрицы на максимальный по абсолютной величине элемент матрицы
Добрый день! Помогите пожалуйста с задачей -- напишите код... Если все...

Зеркально отразить элементы матрицы относительно горизонтальной оси симметрии матрицы
Здравствуйте! Помогите написать 3 программмы на C++ на задачи с двумерными...

Преобразование матрицы (удалить из матрицы столбец с наибольшей по модулю суммой элементов)
Всем привет, есть программа для ввода матрицы и вывода на экран. Нужно удалить...


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

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

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