читайтте о функциях maloc realock
/* realloc example: rememb-o-matic */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int input,n;
int count=0;
int * numbers = NULL;
int * more_numbers;
do {
printf ("Enter an integer value (0 to end): ");
scanf ("%d", &input);
count++;
more_numbers = (int*) realloc (numbers, count * sizeof(int));
if (more_numbers!=NULL) {
numbers=more_numbers;
numbers[count-1]=input;
}
else {
free (numbers);
puts ("Error (re)allocating memory");
exit (1);
}
} while (input!=0);
printf ("Numbers entered: ");
for (n=0;n < count;n++) printf ("%d ",numbers[n]);
free (numbers);
return 0;
}
Другие языки программирования и технологии
Как удалить нулевые строки из матрицы в turbo c++?
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
#include <clocale>
using namespace std;
bool is_null(int *, const size_t);
int ** remove_row(int **, size_t &, const size_t, const size_t);
int ** copy_mx(int **, int **, const size_t, const size_t);
int ** create_mx(int **, const size_t, const size_t);
void show_mx(int **, const size_t, const size_t);
void random_mx(int **, const size_t, const size_t);
void destroy_mx(int **, const size_t);
void remove_zero_lines(int **, size_t &, const size_t);
int main () {
srand(unsigned(time(0)));
setlocale(LC_CTYPE, "Russian_russia.1251");
// Рекомендуемые размеры: 40, 2
cout << " Введите размеры матрицы: ";
size_t rs, cs;
cin >> rs >> cs;
int ** mx = NULL;
mx = create_mx(mx, rs, cs);
random_mx(mx, rs, cs);
cout << "\n\tИсходная матрица: \n\n";
show_mx(mx, rs, cs);
remove_zero_lines(mx, rs, cs);
cout << "\n\tИзменённая матрица: \n\n";
show_mx(mx, rs, cs);
destroy_mx(mx, rs);
cin.get(); cin.get();
return 0;
}
void remove_zero_lines(int ** _mx, size_t & _rs, const size_t _cs) {
for (size_t r = 0; r < _rs; r++)
if (is_null(_mx[r], _cs)) {
remove_row(_mx, _rs, _cs, r);
--r;
}
}
bool is_null(int * _r, const size_t _size) {
for (size_t n = 0; n < _size; n++) if (_r[n]) return false;
return true;
}
void show_mx(int ** _mx, const size_t _rs, const size_t _cs) {
for (size_t r = 0; r < _rs; r++, cout << endl) for (size_t c = 0; c < _cs; c++) cout << setw(4) << _mx[r][c];
}
void random_mx(int ** _mx, const size_t _rs, const size_t _cs) {
for (size_t r = 0; r < _rs; r++) for (size_t c = 0; c < _cs; c++) _mx[r][c] = rand() % 2;
}
int ** remove_row(int ** _mx, size_t & _rs, const size_t _cs, const size_t _index) {
int ** copy = NULL;
size_t rs = _rs;
copy = copy_mx(copy, _mx, _rs, _cs);
destroy_mx(_mx, _rs);
const size_t ns = --rs;
_mx = create_mx(_mx, ns, _cs);
size_t next = 0;
for (size_t r = 0; r < _rs; r++) {
for (size_t c = 0; c < _cs; c++) if (r != _index) _mx[next][c] = copy[r][c];
if (r != _index) ++next;
}
destroy_mx(copy, _rs);
_rs = ns;
return _mx;
}
int ** copy_mx(int ** _copy, int ** _source, const size_t _rs, const size_t _cs) {
_copy = create_mx(_copy, _rs, _cs);
for (size_t r = 0; r < _rs; r++) for (size_t c = 0; c < _cs; c++) _copy[r][c] = _source[r][c];
return _copy;
}
int ** create_mx(int ** _mx, const size_t _rs, const size_t _cs) {
_mx = new int * [_rs];
for (size_t r = 0; r < _rs; r++) _mx[r] = new int [_cs];
return _mx;
}
void destroy_mx(int ** _mx, const size_t _rs) {
for (size_t r = 0; r < _rs; r++) delete[] _mx[r];
delete[] _mx;
}
#include <iomanip>
#include <cstdlib>
#include <ctime>
#include <clocale>
using namespace std;
bool is_null(int *, const size_t);
int ** remove_row(int **, size_t &, const size_t, const size_t);
int ** copy_mx(int **, int **, const size_t, const size_t);
int ** create_mx(int **, const size_t, const size_t);
void show_mx(int **, const size_t, const size_t);
void random_mx(int **, const size_t, const size_t);
void destroy_mx(int **, const size_t);
void remove_zero_lines(int **, size_t &, const size_t);
int main () {
srand(unsigned(time(0)));
setlocale(LC_CTYPE, "Russian_russia.1251");
// Рекомендуемые размеры: 40, 2
cout << " Введите размеры матрицы: ";
size_t rs, cs;
cin >> rs >> cs;
int ** mx = NULL;
mx = create_mx(mx, rs, cs);
random_mx(mx, rs, cs);
cout << "\n\tИсходная матрица: \n\n";
show_mx(mx, rs, cs);
remove_zero_lines(mx, rs, cs);
cout << "\n\tИзменённая матрица: \n\n";
show_mx(mx, rs, cs);
destroy_mx(mx, rs);
cin.get(); cin.get();
return 0;
}
void remove_zero_lines(int ** _mx, size_t & _rs, const size_t _cs) {
for (size_t r = 0; r < _rs; r++)
if (is_null(_mx[r], _cs)) {
remove_row(_mx, _rs, _cs, r);
--r;
}
}
bool is_null(int * _r, const size_t _size) {
for (size_t n = 0; n < _size; n++) if (_r[n]) return false;
return true;
}
void show_mx(int ** _mx, const size_t _rs, const size_t _cs) {
for (size_t r = 0; r < _rs; r++, cout << endl) for (size_t c = 0; c < _cs; c++) cout << setw(4) << _mx[r][c];
}
void random_mx(int ** _mx, const size_t _rs, const size_t _cs) {
for (size_t r = 0; r < _rs; r++) for (size_t c = 0; c < _cs; c++) _mx[r][c] = rand() % 2;
}
int ** remove_row(int ** _mx, size_t & _rs, const size_t _cs, const size_t _index) {
int ** copy = NULL;
size_t rs = _rs;
copy = copy_mx(copy, _mx, _rs, _cs);
destroy_mx(_mx, _rs);
const size_t ns = --rs;
_mx = create_mx(_mx, ns, _cs);
size_t next = 0;
for (size_t r = 0; r < _rs; r++) {
for (size_t c = 0; c < _cs; c++) if (r != _index) _mx[next][c] = copy[r][c];
if (r != _index) ++next;
}
destroy_mx(copy, _rs);
_rs = ns;
return _mx;
}
int ** copy_mx(int ** _copy, int ** _source, const size_t _rs, const size_t _cs) {
_copy = create_mx(_copy, _rs, _cs);
for (size_t r = 0; r < _rs; r++) for (size_t c = 0; c < _cs; c++) _copy[r][c] = _source[r][c];
return _copy;
}
int ** create_mx(int ** _mx, const size_t _rs, const size_t _cs) {
_mx = new int * [_rs];
for (size_t r = 0; r < _rs; r++) _mx[r] = new int [_cs];
return _mx;
}
void destroy_mx(int ** _mx, const size_t _rs) {
for (size_t r = 0; r < _rs; r++) delete[] _mx[r];
delete[] _mx;
}
проверить на 0 строку, если все нули, не переписывать в другую матрицу и т. д.
Похожие вопросы
- Как удалить нулевые элементы из массива C++. Помогите написать код для того чтобы из массива удалить все нулевые элементы
- Создание базы данных на Turbo C
- Как удалить в строке числа но при етом оставить все буквы, JAVA
- Как удалить определённые строки в текстовом файле? С++
- РЕШИТЬ В Turbo C++
- Помогите с построением матрицы Виженера на C#
- как считывать строку типа char до пробела C++
- Удалить из строки все цифры. Как решить эту задачу в паскале??
- Помогите испрвить код Переписать первые элементы каждой строки матрицы a(n*m), больше некоторого числа C, в массив b .
- Помогите !!!С++Работа с одномерными и двумерными массивами. В каждой строке матрицы F(k, k) элемент. лежащий на главной