void stroka(int **m, int m1, int m2, int pos)
{
for(int i=0; i<m1+1; i++)
{
for(int j=0; j<m2; j++)
{
if(i<pos)
{
m[j]=m[j];
}
if(i==pos-1)
{
m[j]=0;
cout<<m[j]<<' ';
}
if(i>pos-1)
{
m[i-1][j]=m[i-1][j];
}
cout<<m[j]<<' ';
}
cout<<endl;
}
}
помогите вставить строку в матрицу
Можно сделать так:
Код:
int** stroka(int **m, int m1, int m2, int pos)
{
int* newLine = new int[m2]; // создаем в памяти новую строку с m2 столбцами
int** newMatrix = new int*[m1+1]; //создание матрицы с новым количеством строк
for (int i = 0; i < (m1+1); i++)
{
if (i < pos) //строки до нужного номера
newMatrix[ i] = m[ i];
else if (i > pos) //строки после нужного номера
newMatrix[ i] = m[ i - 1];
else //запись новой строки
newMatrix[ i] = newLine;
}
return newMatrix;
}
{
int* newLine = new int[m2]; // создаем в памяти новую строку с m2 столбцами
int** newMatrix = new int*[m1+1]; //создание матрицы с новым количеством строк
for (int i = 0; i < (m1+1); i++)
{
if (i < pos) //строки до нужного номера
newMatrix[ i] = m[ i];
else if (i > pos) //строки после нужного номера
newMatrix[ i] = m[ i - 1];
else //запись новой строки
newMatrix[ i] = newLine;
}
return newMatrix;
}
Обратите внимание, что нужно вернуть указатель на новую матрицу. Если в функции присвоить новую матрицу старому указателю, то при выходе из функции этот указатель потрется, и у вас будет старый указатель. Если старая матрица не нужна, то по выходе из функции нужно не забыть сделать
Код:
delete m;