[C++] Дана двумерная матрица... *DELETED*
а размерность?
Размерность не нужна, ранг = 8, а размерность...ну пусть 10
memset
напиши код с этим мемсетом(хотя бы эскиз, нобросок, точность не нужна, алгоритм нужын)
ЗЫ: Я мошт и рюхнул бы - но это луна для меня, не достану:)
дана двумерная матрица с рангом 8каким образом дана? т.е. формат хочу
Тогда нужно где-то создать экземляр, заранее заполненный (например, вложенными циклами) единицами matrix1, а там где критична скорость инициализации делать memcpy( matrix2, matrix1, matrix_dim*matrix_dim*sizeof(element) )
matrix_dim - размерность матриц
element - тип элемента матриц
matrix2 - неинициализированная матрица
Это если матрица задается непрерывным образом. Например, int matrix[matrix_dim][matrix_dim].
Ты ни в проганье не смыслишь, ни в математике. Матрица ранга 8 означает, что эта матрица имеет ровно 8 линейно-независимых строк (столбцов а так как у тебя все столбцы заполнены еденицами, то и ранг равен в точности 1!
Извини.
Во-первых, матрица заполненая единицами имеет ранг 1.
Во-вторых, матрицы бывают не только квадратные.
МОжет всё-таки имеется в виду матрица 8 на 8?
Заполнить 1-цами - не значит, что каждый эл-т 8*8 = 1, в том-то и задача
Как можно хоть чем-то заполнить матрицу неизвестного размера? Или он всё-таки дан (хотя бы в виде N*M)?
пускай N*M, N,M>=8
#include <stdlib.h>
#include <iostream.h>
int main {
double *a;
int i, j;
int N = 10;
int M = 15;
a = (double*)calloc(N*M, sizeof(double;
for(i=0;i<8;i++) {
a[M*i+i] = 1;
}
// Проверка
for(i=0;i<N;i++) {
for(j=0;j<M;j++) {
cout << a[i*M+j] << " ";
}
cout << "\n";
}
free(a);
return 0;
}
Из матрицы 10*15 выудить матрицу 8*8 с определком не раным нулю и все эл-ты изменить на '1'?
Или какой ты в свойм коде реализуешь алгоритм?
а остальное нулями не надо забивать?
Всё равно я не понял что такое "дана матрица ранга 8".
Зачем делать то, что за тебя сделает компилятор
да он просто единичную матрицу нарисовал размера 8 на 8 в нулевой матрице большего размера
Значит берёццо массив для матрицы 10 на 15 с рангом = 8, он дан
Я понял, что в нём надо найти строки-столбцы, которые и дают этот 8-й ранг и приравнять '1', на остальные эл-ты положить...
double x[10][10];
int i;
for(i=0;i<100;i++)
{
x[i/10][i%10]=(i>80)?0:!(i%9);
}
Спасибо
Оставить комментарий
vladi1
Сообщение удалил