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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Alex_Faru
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 11
#1

Уполотнение матрицы: дописать функцию. Очень нужно буквально сейчас! - C++

16.01.2012, 05:32. Просмотров 321. Ответов 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
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include "stdafx.h"
#include <conio.h>
#include <stdlib.h>
#include <iostream>
#include <time.h>
#include <math.h>
 
//ОБЪЯВЛЕНИЕ ФУНКЦИЙ//
void print(int **m,const int nstr, const int nstb);
void strplus(int **m,const int nstr, const int nstb);
void sortstr(int **m,const int nstr, const int nstb);
void sortstb(int **m,const int nstr, const int nstb);
void upl(int **m,const int nstr, const int nstb);
//////////////////////
 
int _tmain(int argc, _TCHAR* argv[])
{
    const int nstr= 5;
    const int nstb= 5;
    //инициализация массива
    int **m = new int *[nstr]; // 1
    for(int i = 0; i<nstr; i++) // 2
    m[i] = new int [nstb]; // 3
 
//заполнение матрицы
srand((unsigned)time(NULL));
    for (int i=0;i<nstr; i++)
        for (int j = 0; j<nstb; j++)
            m[i][j]=(float)rand()/RAND_MAX*(10-(-10))+(-10);
for (int i=0;i<nstr; i++) m[i][1]=0, m[i][0]=0;
for (int j = 0; j<nstb; j++) m[0][j]=0,m[1][j]=0;
 
 
print(m, nstr, nstb);
strplus(m, nstr, nstb);
sortstr(m, nstr, nstb);
sortstb(m, nstr, nstb);
upl(m, nstr, nstb);
print(m, nstr, nstb);
 
 
//очищение памяти
for (int i=0; i<nstr;i++)
delete [] m[i];
delete []m;
_getch();
    return 0;
}
 
 
 
 
 
//////ОПРЕДЕЛЕНИЯ ФУНКЦИЙ//////
 
 
//ФУНКЦИЯ ВЫВОДА МАССИВА//
void print(int **m,const int nstr, const int nstb)
{
 for (int i=0;i<nstr; i++)
    {
        for (int j = 0; j<nstb; j++)
            printf (" %d      ", m[i][j]);
        printf("\n");
    }
return;
}
 
//ФУНКЦИЯ НАХОЖДЕНИЯ СТРОКИ С ПОЛОЖИТЕЛЬНЫМ ЭЛЕМЕНТОМ//
void strplus(int **m,const int nstr, const int nstb)
 {
    int i=0;
    bool Ysl=false;
    for(int i=0; i<nstr && Ysl==false; i++)
        for (int j=0; j<nstb; j++)
            if(m[i][j]>0)Ysl=true;
            if(Ysl=true)printf("Nomer stroki s pologitelnim elementom: %d",i-1);
 
 return;
 }
 
 //=====ФУНКЦИИ УПЛОТНЕНИЯ МАТРИЦЫ=====
 //ПО СТОРКАМ//
void sortstr(int **m,const int nstr, const int nstb)
{
int s=0;
int z=0;
 
for (int l=0; l<nstr; l++)
{
for (int i=0; i<(nstr); i++)
{
    for(int j=0; j<nstb; j++)
    {
        if (m[i][j]==0)
            s+=1;
    }
    if (s==nstb)
        for (int k=i; k<(nstr-1);k++)
            for (int p=0;p<nstb;p++)
            {
                z=m[k][p];
                m[k][p]=m[k+1][p];
                m[k+1][p]=z;
            }
    s=0;
}
}
 
return;
}
 
//ПО СТОЛБЦАМ//
void sortstb(int **m,const int nstr, const int nstb)
{
int r = 0;
int x = 0;
for (int h=0; h<nstb; h++)
{
for (int j=0; j<(nstb); j++)
{
    for(int i=0; i<nstr; i++)
    {
        if (m[i][j]==0)
            r+=1;
    }
        if (r==nstr)
        for (int v=j; v<(nstb-1);v++)
            for (int b=0;b<(nstr);b++)
            {
                x=m[b][v];
                m[b][v]=m[b][v+1];
                m[b][v+1]=x;
            }
    r=0;
}
}
 
return;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2012, 05:32     Уполотнение матрицы: дописать функцию. Очень нужно буквально сейчас!
Посмотрите здесь:
Нужно исправить ошибки в коде и дописать функцию C++
C++ К коду нужно дописать функцию (void VidAlphabet - сведения о абонентах в алфавитном порядке)
C++ Нужно дописать программу вычисления суммы элементов матрицы
дописать функцию try – catch C++
C++ Нужно дописать код на С++
C++ Что мне нужно дописать
Нужно дописать код задачи C++
C++ Крестики нолики, нужно немного дописать
C++ Дописать функцию сортировки по алфавиту в базе данных
Последовательность вывести без минимального элемента нужно дописать C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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