Text: |
ФІО = Rudenko
Запитання:із заданої квадратної матриці А видалити i-ий рядок та j-ий стовпчик(0<=i<=n,),=j<=n). рузультуючу матрицю повернути у томуж масиві
====================================
ANSWER ====================================
/* ПОКА ВЫДАЕТ ОШИБКУ.... думаю над исправлением.... когда напишу, отпищусь сюда же
із заданої квадратної матриці А видалити i-ий рядок та j-ий
стовпчик(0<=i<=n,),=j<=n). рузультуючу матрицю повернути у томуж масиві
*/
#include <iostream>
#include <cstdlib> // тут rand (), srand ()
#include <stdio.h>
#include <conio.h> //
using namespace std; // підключаємо все необхідне для роботи програми
void PrintMas(double *A,int n){// ДрукМатриці. Приймає вказівник на перший
//елемент масиву і кількість елементів
for (int i = 0 ; i < n ; i++){
for (int j = 0 ; j < n ; j++){
cout<<*(A+i*n+j)<<"\t ";
}
cout<<endl;
}
cout<<endl;
return ;
}
void EnterMas(double *A,int n){// Заповнення матриці з клави. Парам.аналог.якв^^
for (int i = 0 ; i < n ; i++){
for (int j = 0 ; j < n ; j++){
cout<<"Enter Matrix ["<<j+1<<"]x["<<i+1<<"] = ";
cin>>*(A+i*n+j);
}
}
return ;
}
void KillMartixMas(double *A,int &n,int ii,int jj){
int n1=n-1;
double *temp=new double [n1*n1];
int zi=0,zj=0;
for (int j = 0 ; j < n ; j++)
{
zi = 0;
if (jj-1==j){
continue;
}
for (int i = 0 ; i < n ; i++)
{
if ( i != ii-1 )
{
*(temp+zj*n1+i)=*(A+j*n+i);
zi++;
cout<<"\t"<<*(temp+zj*n1+i);
}
}
zj++;
cout<<"\n";
}
n--;
for ( int i = 0 ; i < n1*n1 ; i++ )
{
*(A+i)=*(temp+i);
}
// delete []temp;
return ;
}
main ()
{
//==============================================================================
int n; // розмірність матриці
int i,j;
do{
cout<<"Matrix\n Enter N = ";
cin>>n;
if (n<=0) cout<<"ERROR : N > 0 !\n";
}while (n<=0); // не даємо вийти, поки не буде введено n>0
double *A = new double [n*n]; // створюємо вказівники на масиви
EnterMas(A,n); // заповнюємо масив A розм. n*n з клави
PrintMas(A,n); // друк масив A розм. n*n
//==============================================================================
do{
cout<<"Matrix\n Enter I = ";
cin>>i;
if ((i<1) || (i>n)) cout<<"ERROR!\n";
}while ((i<1) || (i>n));
//==============================================================================
do{
cout<<"Matrix\n Enter J = ";
cin>>j;
if ((j<1) || (j>n)) cout<<"ERROR!\n";
}while ((j<1) || (j>n));
//==============================================================================
KillMartixMas(A, n,i,j);
PrintMas(A, n); // друк масив A розм. n*n
delete []A; // звільняємо пам'ять
return 0;
}
END of ANSWER ====================================
ANSWER ====================================
/* Все работает!!!
із заданої квадратної матриці А видалити i-ий рядок та j-ий
стовпчик(0<=i<=n,),=j<=n). рузультуючу матрицю повернути у томуж масиві
*/
#include <iostream>
#include <cstdlib> // тут rand (), srand ()
#include <stdio.h>
#include <conio.h> //
using namespace std; // підключаємо все необхідне для роботи програми
void PrintMas(double *A,int n){// ДрукМатриці. Приймає вказівник на перший
//елемент масиву і кількість елементів
for (int i = 0 ; i < n ; i++){
for (int j = 0 ; j < n ; j++){
cout<<*(A+i*n+j)<<"\t ";
}
cout<<endl;
}
cout<<endl;
return ;
}
void EnterMas(double *A,int n){// Заповнення матриці з клави. Парам.аналог.якв^^
for (int i = 0 ; i < n ; i++){
for (int j = 0 ; j < n ; j++){
cout<<"Enter Matrix ["<<j+1<<"]x["<<i+1<<"] = ";
cin>>*(A+i*n+j);
}
}
return ;
}
void KillMartixMas(double *A,int &n,int jj,int ii){
int n1=n-1;
double *temp=new double [n1*n1];
int zi=0,zj=0;
for (int j = 0 ; j < n ; j++)
{
zi = 0;
if (jj-1==j){
}
else
{
for (int i = 0 ; i < n ; i++)
{
if ( i != ii-1 )
{
*(temp+zj*n1+zi)=*(A+j*n+i);
zi++;
}
}
zj++;
}
}
n--;
for ( int i = 0 ; i < n1*n1 ; i++ )
{
*(A+i)=*(temp+i);
}
delete []temp;
return ;
}
main ()
{
//==============================================================================
int n; // розмірність матриці
int i,j;
do{
cout<<"Matrix\n Enter N = ";
cin>>n;
if (n<=0) cout<<"ERROR : N > 0 !\n";
}while (n<=0); // не даємо вийти, поки не буде введено n>0
double *A = new double [n*n]; // створюємо вказівники на масиви
EnterMas(A,n); // заповнюємо масив A розм. n*n з клави
PrintMas(A,n); // друк масив A розм. n*n
//==============================================================================
do{
cout<<"Matrix\n Enter I = ";
cin>>i;
if ((i<1) || (i>n)) cout<<"ERROR!\n";
}while ((i<1) || (i>n));
//==============================================================================
do{
cout<<"Matrix\n Enter J = ";
cin>>j;
if ((j<1) || (j>n)) cout<<"ERROR!\n";
}while ((j<1) || (j>n));
//==============================================================================
KillMartixMas(A, n,i,j);
PrintMas(A, n); // друк масив A розм. n*n
delete []A; // звільняємо пам'ять
system("pause");
return 0;
}
END of ANSWER ====================================
ANSWER ====================================
як можна записати це ---*(A+i*n+j), щоб не було вказіника
END of ANSWER ====================================
ANSWER ====================================
як можна записати це ---*(A+i*n+j), щоб не було вказіника
END of ANSWER ====================================
|