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

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

23.11.2010, 21:08. Просмотров 1320. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Уплотнение матрицы. (C++):

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

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

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

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

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

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

2
valeriikozlov
Эксперт С++
4683 / 2509 / 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++ на задачи с двумерными...

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

Для матрицы найти такие k, что k-я строка матрицы совпадает с k-м столбцом
Помогите пожалуйста с первой частью задания: найти такие k. что k -строка...

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


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

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

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