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

Уплотнить заданную матрицу - C++

Восстановить пароль Регистрация
 
winelove
 Аватар для winelove
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 71
04.06.2010, 00:45     Уплотнить заданную матрицу #1
1)Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями.
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
59
60
61
62
63
64
65
66
67
68
69
#include <iostream.h>
#include <conio.h>
#include <math.h>
 
int **mas, n, m, i,j, y, t;
int main ()
{
 
        cout<<"vvedite kolichestvo strok massiva: "<< endl;
    cin>>n;
    cout<<"vvedite kolichestvo stolbcov massiva: "<< endl;
    cin>>m;
    mas=new int*[n];
    for(i=0; i<n; i++)
       mas[i]=new int[m];
    cout<<"vvedite elementy massiva: "<< endl;
    for(i=0; i<n; i++)
       for(j=0; j<m; j++)
       {
          cout<<"["<<i<<"]["<<j<<"]= ";
          cin>>mas[i][j];
       }
        cout<<"isxodnyi massiv"<<endl;
    for(i=0; i<n; i++)
        {
       for(j=0; j<m; j++)
          cout<<mas[i][j]<<"  ";
           cout<<endl;
        }
        for(i=0; i<n; i++)
        {
                t=0;
                for(j=0; j<m; j++)
                        if(mas[i][j]!=0)
                                t=1;
                if(t==0)
                {
                        for(y=i; y<n-1; y++)
                                for(j=0; j<m; j++)
                                        mas[y][j]=mas[y+1][j];
                        n--;
                }
        }
        for(i=0; i<m; i++)
        {
                t=0;
                for(j=0; j<n; j++)
                        if(mas[j][i]!=0)
                                t=1;
                if(t==0)
                {
                        for(y=i; y<m-1; y++)
                                for(j=0; j<n; j++)
                                        mas[j][y]=mas[j][y+1];
                        m--;
                }
        }
        cout<<endl;
        cout<<"polychennyi massiv"<<endl;
        for(i=0; i<n; i++)
        {
       for(j=0; j<m; j++)
          cout<<mas[i][j]<<"  ";
                cout<<endl;
        }
        cout<<endl;
        getch();
         return 0;
}
первая часть задания работает, а вторая нет(номер первой из строк не ищет)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2010, 00:45     Уплотнить заданную матрицу
Посмотрите здесь:

Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями C++
Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями. Найти номер первой из строк, содержащих хотя бы один положительный эле C++
Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями C++
Необходимо уплотнить заданную матрицу,удаляя из нее строки и столбцы, заполненные нулями C++
Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.06.2010, 02:54     Уплотнить заданную матрицу #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    int found;
     
     
    found = 0;
    
    for (i = 0; i < n && found == 0; i++)
        for (j = 0; j < m; j++)
            if (mas[i][j] > 0) {
                found = 1;
                break;
            }
 
    if (found == 1)
        cout << "#" << i + 1 << endl;
winelove
 Аватар для winelove
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 71
04.06.2010, 09:30  [ТС]     Уплотнить заданную матрицу #3
а куда этот кусок программы нужно вставить?
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
06.06.2010, 08:41     Уплотнить заданную матрицу #4
C++
1
2
3
    cout<<endl;
    getch();
    return 0;
перед getch()
PatchPro
5 / 5 / 0
Регистрация: 11.04.2010
Сообщений: 40
28.05.2011, 07:50     Уплотнить заданную матрицу #5
Цитата Сообщение от winelove Посмотреть сообщение
1)Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями.
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <windows.h>
#include <conio.h>
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int n=5, m=5, i,j, y,numstr, temp;          //n-кол-во строк, m-кол-во столбцов
bool res;
int mas[5][5]={{-1,-2,-3,-4,-5},                 //матрица исходная.
{0,0,0,0,0},
{2,4,5,3,2},
{5,5,5,5,5},
{2,4,5,3,2}
};
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    for(i=0; i<n; i++)                                //вывод матрицы
        {
      for(j=0; j<m; j++)
          StringGrid1->Cells[j+1][i+1] = IntToStr(mas[i][j]);
        }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
        for(i=0; i<n; i++)
        {
                temp=0;
                for(j=0; j<m; j++)
                        if(mas[i][j]!=0)
                                temp=1;
                if(temp==0)
                {
                        for(y=i; y<n-1; y++)
                                for(j=0; j<m; j++)
                                        mas[y][j]=mas[y+1][j];
                        n--;
                }
        }
        for(i=0; i<m; i++)
        {
                temp=0;
                for(j=0; j<n; j++)
                        if(mas[j][i]!=0)
                                temp=1;
                if(temp==0)
                {
                        for(y=i; y<m-1; y++)
                                for(j=0; j<n; j++)
                                        mas[j][y]=mas[j][y+1];
                        m--;
                }
        }
 
res=0;                                                 //поиск номера 1-ой из строк...
for(i=0; i<n; i++)
for(j=0; j<m; j++)
if ((mas[i][j] > 0) && (res!=1))
{
numstr=i;
res=1;
}
 
for (i = 0; i < StringGrid1->RowCount; i++) StringGrid1->Rows[i]->Clear();   //очистка стринггрида
 
for(i=0; i<n; i++)                                       //вывод матрицы уплотненной
for(j=0; j<m; j++)
StringGrid1->Cells[j+1][i+1] = IntToStr(mas[i][j]);
 
Label2->Caption=IntToStr(numstr);                //вывод номера 1-ой из стрк...        
}
//---------------------------------------------------------------------------
+вложил готовый исходник
Вложения
Тип файла: zip zadanie.zip (46.0 Кб, 12 просмотров)
Yandex
Объявления
28.05.2011, 07:50     Уплотнить заданную матрицу
Ответ Создать тему
Опции темы

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