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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Изменение размера изображения http://www.cyberforum.ru/cpp-beginners/thread429010.html
Всем привет! Помогите написать скрипт изменения размера изображения. Скрипт создания скриншота import System.IO; // increment our filename public var count:float; /**
C++ Семафоры Давно мучаюсь..не могу понять..у Меня есть 2 потока..и один ресурс.Где нужно создавать семафор ?в вызывающей эти потоки функции или в самих потоках и где стоит ждать семафор ? вот например код..Я... http://www.cyberforum.ru/cpp-beginners/thread428995.html
C++ Массив символьных указателей
Эксперементирую с функциями в stdlib. В данной программе конкретно atoi(); Но не в этом суть. Проблема вот в чем. Я использую в этой программе массив строчных указателей. И я хочу его...
Объектно-ориентированный C++ и другие языки C++
Один мой знакомый посоветовал мне, для того чтобы лучше разобраться с объектно-ориентированной и библиотечно-шаблонной кухней C++ сперва предварительно лучше изучить такой язык как Visual Basic или...
C++ Для чего именно и как исползуется dynamic_cast(обясните "ЯЗИКОМ ЧЕЛОВЕКА") http://www.cyberforum.ru/cpp-beginners/thread428980.html
привет ребята ктото может привести хороший пример о dynamic_cast ?(об осталних я выучил).. Именно для чего он исползуется?(пожолуйсто обясните "ЯЗИКОМ ЧЕЛОВЕКА") Спасибо заранее..
C++ Метод секущих (блок-схема) подскажите пожалуйста, правильно ли я составил блок-схему по методу секущих Скрин во вложении.. Вот листинг: #include <conio.h> #include <iostream> using namespace std; #include <math.h> const... подробнее

Показать сообщение отдельно
Alex_Faru
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 11

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

16.01.2012, 05:32. Просмотров 332. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru