С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

16.01.2012, 05:32. Просмотров 333. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2012, 05:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Уполотнение матрицы: дописать функцию. Очень нужно буквально сейчас! (C++):

Нужно исправить ошибки в коде и дописать функцию - C++
В 17-ой строке компилятор выдает ошибку invalid operands of types 'int()' and 'int()' to binary 'operator+' В идеале программа должна...

К коду нужно дописать функцию (void VidAlphabet - сведения о абонентах в алфавитном порядке) - C++
*Main* #include &quot;Header.h&quot; #include &lt;iostream&gt; using namespace std; void VidTimeInCity(Phone*, int); void...

Нужно дописать программу вычисления суммы элементов матрицы - C++
Доброго времени суток! Помогите пожалуйста подправить и дописать код программы построенной по задаче: Вычислить сумму и число...

Очень нужно! на экзамене сижу, нужно функцию переделать в процедуру - Delphi
функцию переделать в процедуру

Очень нужно составить уравнения сторон (даны вершины)! Ну очень нужно поскорее - Геометрия
Составить уравнения сторон треугольника! Даны вершины А(4;-3) B(7;3) С(1;10) Формулу я знаю (х-х1)/(x2-x1)=(y-y1)/(y2-y1) Просто я...

а вот сейчас очень хочется помощи :) - C++ Qt
человеки, как сделать передачу данных... у меня есть класс SchemeScene, который наследуется от QGraphicsScene и располагается на...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2012, 05:32
Привет! Вот еще темы с ответами:

Сделаем сообща CRM!?-они сейчас очень популярны - MS Access
Сейчас очень популярны системы управления контактами и проектами - давайте сделаем подобную систему сообща. У меня есть наработки - могу...

дописать прогу очень нада - MathCAD
Протабулировать функцию f(x) на заданном промежутке , при N разбиениях. Если N=28; a=1 ;h=28/10 f(x)= система уравнений 1....

Код програмы поможите очень нужно, буду благодарен очень: y=cos(x)+1 - Delphi
Функиция: y=cos(x)+1 Промежуток Шаг 0,5

КАК соедениться с интернетом (DialUp) ОЧЕНЬ ОЧЕНЬ НУЖНО! - Сети
(интернетом), используя МОДЕМНОЕ соединение... (или кто знает подобную прогу)! это (сразу скажу не работает): winexec('cmd /c rasdial...


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

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

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