Другие языки программирования и технологии

Нужна помощь, Помогите перебрать массив и нули перенести в конец С++

требуется в данном массиве все нули перенести в конец массива

#include<iostream>

#include<ctime>

#include<iomanip>

using namespace std;

const int n = 5;

void instance(int ar[][n], int (* p)[n])

{

for(; p < ar+n; p++)

{

for (int * r = *p; r < *p+n; r++)

{

*r = rand()%90+10;

cout << setw(3) << *r;

}

cout << endl;

}

cout << endl;

}

void main()

{

srand(time(NULL));

int a[n][n];

int (* p)[n] = a;

instance(a,p);

}
#include <iostream>
#include <ctime>

using namespace std;

void random(int*, int, int);
void print(int*, int, int);
int index(int*, int);
void transform(int*, int, int);

int main() {
srand(static_cast<unsigned int>(time(NULL)));
const int n = 5;
int mx[n][n];
int* ptr = &mx[0][0];
random(ptr, n, n);
print(ptr, n, n);
transform(ptr, n, n);
print(ptr, n, n);
cin.get();
}

void random(int* p, int rw, int cl) {
int i = rw * cl;
while (--i >= 0) *p++ = rand() % 10;
}

void print(int* p, int rw, int cl) {
for (int r = 0; r < rw; ++r) {
for (int c = 0; c < cl; ++c) cout << ' ' << *p++;
cout << '\n';
}
cout << '\n';
}

void transform(int* p, int rw, int cl) {
int s = rw * cl;
int j, k;
for (int i = s - 1, k = i; i >= 0; --i) {
if ((j = index(p, k)) != -1) {
int tmp = p[j];
for (int n = j; n < k; ++n) p[n] = p[n + 1];
p[k] = tmp;
--k;
}
else break;
}
}

int index(int* arr, int size) {
int idx = -1;
for (int i = 0; i < size; ++i) if (arr[i] == 0) { idx = i; break; }
return idx;
}
Хисрав Донаёров
Хисрав Донаёров
64 368
Лучший ответ
Начать с того, что у тебя двумерный массив (5 по 5*sizeof(int)). Что ты называешь тут концом?