GVA SUPPORT

Відповідь на запитання № 1308645180
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 ====================================

	
Ваша відповідь