Тема: Динамічна пам'ять і матриці
Підкажіть де я наробив дурниць?
//Ввести цілочисельну матрицю 10×3 і створити нову матрицю з тих рядків
//введеної матриці, які містять хоча б один елемент – двійку
#include "pch.h"
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
srand(time(NULL));
setlocale(LC_CTYPE, "ukr");
int a[10][3], i, j, rowc = 0, k = 0;
cout << "Введiть матрицю з 10-ти рядкiв i 3-х стовпцiв:" << endl;
int r[10] = { 0 };// r – масив кількості двійок в рядках матриці
for (i = 0; i < 10; i++)
{
for (j = 0; j < 3; j++)
{
a[i][j] = (rand() % 16) - 1;
if (a[i][j] == 2)
{
r[i]++;
}
}
}
for (i = 0; i < 10; i++)
{
for (j = 0; j < 3; j++)
{
cout << a[i][j] << "\t";
}
cout << endl;
}
for (i = 0; i < 10; i++)// Обчислення кількості рядків з 2-ою
if (r[i] == 1)
rowc++; // r[i]=1 означає, що в і-му рядку є двійки
int **b = new int *[rowc];// Виділення пам’яті для динамічної матриці b
for (i = 0; i < rowc; i++)
b[i] = new int[3];
for (i = 0; i < 10; i++)
{
if (r[i] != 0)// Якщо в і-му рядку нулів немає, відбувається
{
for (j = 0;j < 3;j++)
{
b[k][j] = a[i][j];//копіювання рядка у нову матрицю
k++; // і збільшення індексу рядка нової матриці.
}
}
}
cout << "\nМатриця, в рядках якої є двійки:" << endl;
for (i = 0; i < rowc; i++)
{
for (j = 0; j < 3; j++)
cout << b[i][j] << "\t";
cout << endl;
}
// Звільнення пам’яті від динамічної матриці
for (int i = 0; i < rowc; i++)
delete[] b[i];
delete[]b;
system("pause>>void");
return 0;
}
Помилка:
Також, я не впевнений чи правильно використав масив r[]