transpozycja macierzy

0

Witam. Chciałbym aby ktos uprzejmy i chetny pomogl laikowi w dopieszczeniu/poprawieniu kodu. (jak sama nazwa tematu wskazuje, chodzi mi o transponowanie macierzy)
Oto kodziki:
nie wiem ktory lepszy i czytelniejszy oraz bardziej poprawny...
#include<iostream>

using namespace std;

int main()
{
int n, m;
cout << "Liczba wierszy: ";
cin >> n;
cout << "Liczba kolumn: ";
cin >> m;
double macierz[n][m];
double macierzT[m][n];

for(int i = 0; i < n; i++) //wstawianie danych
{
for(int j = 0;j < m; j++)
{
cout << "Wyraz [" << i << "][" << j << "]: ";
cin >> macierz[i][j];
}
}

for(int i = 0; i < n; i++) //transponowanie macierzy
{
for(int j = 0;j < m; j++)
macierzT[j][i]=macierz[i][j];
}

cout << "Macierz:" << endl;
for(int i = 0; i < n; i++) //wyswietlanie macierzy
{
for(int j = 0;j < m; j++)
{
cout << macierz[i][j] << " ";
}
cout << endl;
}

cout << endl;

cout << "Macierz transponowana:" << endl;
for(int i = 0; i < m; i++) //wyswietlanie macierzy transponowanej
{
for(int j = 0;j < n; j++)
{
cout << macierzT[i][j] << " ";
}
cout << endl;
}
system("PAUSE");
return 0;
}

#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
int **pTabA,**pTabT,m,n;

//----------wczytanie macierzy----------
cout<<"Podaj rozmiar(mxn) macierzy A:\n";
cout<<"ilosc wierszy: ";
cin>>m;
cout<<"ilosc kolumn: ";
cin>>n;

     pTabA = new int*[m]; 
     for(int i=0;i<m;i++) 
     { 
             pTabA[i] = new int[n]; 
     } 

     pTabT = new int*[n]; 
     for(int i=0;i<n;i++) 
     { 
             pTabT[i] = new int[m]; 
     } 

     cout<<"Powstala macierz A o wymiarach "<<m<<" na "<<n<<"\n\n"; 

     cout<<"Zainicjalizuj macierz A wartosciami\n"; 
     for(int i=0;i<m;i++) 
     {        
             for(int j=0;j<n;j++) 
             { 
                     cout<<"Podaj wartosc dla wspolrzednych "<<i<<" "<<j<<": "; 
                     cin>>pTabA[i][j]; 
             } 
     } 
     cout<<"\nMacierz przed transpozycja A = "; 
     for(int i=0;i<m;i++) 
     {cout<<"\n";    
             for(int j=0;j<n;j++) 
             { 
                     cout<<pTabA[i][j]<<"\t"; 
             } 
     } 

     //-----transpozycja macierzy----- 

     for(int i=0;i<m;i++) 
     { 
             for(int j=0;j<n;j++) 
             { 
                     pTabT[j][i]=pTabA[i][j];                                
             } 
     } 

     cout<<"\nMacierz transponowana A = "; 
     for(int i=0;i<n;i++) 
     {cout<<"\n"; 
             for(int j=0;j<m;j++) 
             { 
                     cout<<pTabT[i][j]<<"\t"; 
             } 
     } 

     for(int i=0; i<m; i++) 
     delete [] pTabA[i]; 

     delete []pTabA; 

     for(int i=0; i<n; i++) 
       delete [] pTabT[i]; 

     delete []pTabT; 

     cout<<"\n\n"; 
     system("pause"); 
     return 0; 

}

pozdrawiam i dziekuje z góry za pomoc

0

tutaj jeszcze mam kodzik ktory przeslal mi uzytkownik tego forum ale cos jest nie tak bo zle czyta wartosci wpisane i zle wyswietla transpozycje

#include <iostream>

using namespace std;

void pokaz(int** matrix, int m, int n)
{
for(int i = 0; i < m; i++)
{
cout << "\n";
for(int j = 0; j < n; j++)
{
cout << matrix[i][j] << " ";
}
}
}

int main()
{
int **matrixA, **matrixT, m,n;

    // ----------wczytanie macierzy---------- 
    cout << "Podaj rozmiar(mxn) macierzy A:\n"; 
    cout << "ilosc wierszy: "; 
    cin >> m; 
    cout << "ilosc kolumn: "; 
    cin >> n; 

    cout << "Powstala macierz A o wymiarach " << m << " na " << n << "\n\n"; 
    cout << "Zainicjalizuj macierz A wartosciami\n"; 

    matrixA = new int*[m]; 
    for(int i = 0; i < m; i++) 
    {        
            for(int j = 0; j < n; j++) 
            { 
                    matrixA[i] = new int[n]; 
                    cout << "Podaj wartosc dla wspolrzednych " << i << " " << j << ": "; 
                    cin >> matrixA[i][j]; 
            } 
    } 

    cout<<"\nMacierz przed transpozycja A = "; 
    pokaz(matrixA, m, n);

    // -----transpozycja macierzy----- 
    matrixT = new int*[n]; 
    for(int i = 0; i < m; i++) 
    { 
            for(int j = 0 ; j < n; j++) 
            { 
                    matrixT[i] = new int[m]; 
                    matrixT[j][i] = matrixA[i][j];                                
            } 
    } 

    cout<<"\nMacierz transponowana A = "; 
    pokaz(matrixT, n, m);

    for(int i = 0; i < m; i++) 
            delete [] matrixA[i]; 

    delete[] matrixA; 

    for(int i = 0; i < n; i++) 
            delete[] matrixT[i]; 

    delete[] matrixT; 

    cin.ignore();
    cin.get();

    return 0; 

}

0
looser92 napisał(a)

Witam. Chciałbym aby ktos uprzejmy i chetny pomogl laikowi w dopieszczeniu/poprawieniu kodu. (jak sama nazwa tematu wskazuje, chodzi mi o transponowanie macierzy)
Oto kodziki:
nie wiem ktory lepszy i czytelniejszy oraz bardziej poprawny...

#include<iostream>
 
using namespace std;
 
int main()
{
   int n, m;
   cout << "Liczba wierszy: ";
   cin >> n;
   cout << "Liczba kolumn: ";
   cin >> m;
   double macierz[n][m];
   double macierzT[m][n];
 
   for(int i = 0; i < n; i++) //wstawianie danych
   {
       for(int j = 0;j < m; j++)
       {
         cout << "Wyraz [" << i << "][" << j << "]: "; 
         cin >> macierz[i][j];
       }   
   }
 
   for(int i = 0; i < n; i++) //transponowanie macierzy
   {
       for(int j = 0;j < m; j++)
         macierzT[j][i]=macierz[i][j];
   }
 
   cout << "Macierz:" << endl;
   for(int i = 0; i < n; i++) //wyswietlanie macierzy
   {
       for(int j = 0;j < m; j++)
       {
         cout << macierz[i][j] << " ";
       }
       cout << endl;
   }
 
   cout << endl;
 
   cout << "Macierz transponowana:" << endl;
   for(int i = 0; i < m; i++) //wyswietlanie macierzy transponowanej
   {
       for(int j = 0;j < n; j++)
       {
         cout << macierzT[i][j] << " ";
       }
       cout << endl;
   }
   system("PAUSE");
   return 0;
}



#include "stdafx.h" 
#include <iostream> 
 
using namespace std; 
 
int main() 
{ 
         int **pTabA,**pTabT,m,n; 
 
//----------wczytanie macierzy---------- 
         cout<<"Podaj rozmiar(mxn) macierzy A:\n"; 
         cout<<"ilosc wierszy: "; 
         cin>>m; 
         cout<<"ilosc kolumn: "; 
         cin>>n; 
 
         pTabA = new int*[m]; 
         for(int i=0;i<m;i++) 
         { 
                 pTabA[i] = new int[n]; 
         } 
 
         pTabT = new int*[n]; 
         for(int i=0;i<n;i++) 
         { 
                 pTabT[i] = new int[m]; 
         } 
 
         cout<<"Powstala macierz A o wymiarach "<<m<<" na "<<n<<"\n\n"; 
 
         cout<<"Zainicjalizuj macierz A wartosciami\n"; 
         for(int i=0;i<m;i++) 
         {        
                 for(int j=0;j<n;j++) 
                 { 
                         cout<<"Podaj wartosc dla wspolrzednych "<<i<<" "<<j<<": "; 
                         cin>>pTabA[i][j]; 
                 } 
         } 
         cout<<"\nMacierz przed transpozycja A = "; 
         for(int i=0;i<m;i++) 
         {cout<<"\n";    
                 for(int j=0;j<n;j++) 
                 { 
                         cout<<pTabA[i][j]<<"\t"; 
                 } 
         } 
 
         //-----transpozycja macierzy----- 
 
         for(int i=0;i<m;i++) 
         { 
                 for(int j=0;j<n;j++) 
                 { 
                         pTabT[j][i]=pTabA[i][j];                                
                 } 
         } 
 
         cout<<"\nMacierz transponowana A = "; 
         for(int i=0;i<n;i++) 
         {cout<<"\n"; 
                 for(int j=0;j<m;j++) 
                 { 
                         cout<<pTabT[i][j]<<"\t"; 
                 } 
         } 
 
         for(int i=0; i<m; i++) 
         delete [] pTabA[i]; 
 
         delete []pTabA; 
 
         for(int i=0; i<n; i++) 
           delete [] pTabT[i]; 
 
         delete []pTabT; 
 
         cout<<"\n\n"; 
         system("pause"); 
         return 0; 
}

pozdrawiam i dziekuje z góry za pomoc

0

<quote=looser92>Witam. Chciałbym aby ktos uprzejmy i chetny pomogl laikowi w dopieszczeniu/poprawieniu kodu. (jak sama nazwa tematu wskazuje, chodzi mi o transponowanie macierzy)
Oto kodziki:
nie wiem ktory lepszy i czytelniejszy oraz bardziej poprawny...

#include<iostream>
 
using namespace std;
 
int main()
{
   int n, m;
   cout << "Liczba wierszy: ";
   cin >> n;
   cout << "Liczba kolumn: ";
   cin >> m;
   double macierz[n][m];
   double macierzT[m][n];
 
   for(int i = 0; i < n; i++) //wstawianie danych
   {
       for(int j = 0;j < m; j++)
       {
         cout << "Wyraz [" << i << "][" << j << "]: "; 
         cin >> macierz[i][j];
       }   
   }
 
   for(int i = 0; i < n; i++) //transponowanie macierzy
   {
       for(int j = 0;j < m; j++)
         macierzT[j][i]=macierz[i][j];
   }
 
   cout << "Macierz:" << endl;
   for(int i = 0; i < n; i++) //wyswietlanie macierzy
   {
       for(int j = 0;j < m; j++)
       {
         cout << macierz[i][j] << " ";
       }
       cout << endl;
   }
 
   cout << endl;
 
   cout << "Macierz transponowana:" << endl;
   for(int i = 0; i < m; i++) //wyswietlanie macierzy transponowanej
   {
       for(int j = 0;j < n; j++)
       {
         cout << macierzT[i][j] << " ";
       }
       cout << endl;
   }
   system("PAUSE");
   return 0;
}



#include "stdafx.h" 
#include <iostream> 
 
using namespace std; 
 
int main() 
{ 
         int **pTabA,**pTabT,m,n; 
 
//----------wczytanie macierzy---------- 
         cout<<"Podaj rozmiar(mxn) macierzy A:\n"; 
         cout<<"ilosc wierszy: "; 
         cin>>m; 
         cout<<"ilosc kolumn: "; 
         cin>>n; 
 
         pTabA = new int*[m]; 
         for(int i=0;i<m;i++) 
         { 
                 pTabA[i] = new int[n]; 
         } 
 
         pTabT = new int*[n]; 
         for(int i=0;i<n;i++) 
         { 
                 pTabT[i] = new int[m]; 
         } 
 
         cout<<"Powstala macierz A o wymiarach "<<m<<" na "<<n<<"\n\n"; 
 
         cout<<"Zainicjalizuj macierz A wartosciami\n"; 
         for(int i=0;i<m;i++) 
         {        
                 for(int j=0;j<n;j++) 
                 { 
                         cout<<"Podaj wartosc dla wspolrzednych "<<i<<" "<<j<<": "; 
                         cin>>pTabA[i][j]; 
                 } 
         } 
         cout<<"\nMacierz przed transpozycja A = "; 
         for(int i=0;i<m;i++) 
         {cout<<"\n";    
                 for(int j=0;j<n;j++) 
                 { 
                         cout<<pTabA[i][j]<<"\t"; 
                 } 
         } 
 
         //-----transpozycja macierzy----- 
 
         for(int i=0;i<m;i++) 
         { 
                 for(int j=0;j<n;j++) 
                 { 
                         pTabT[j][i]=pTabA[i][j];                                
                 } 
         } 
 
         cout<<"\nMacierz transponowana A = "; 
         for(int i=0;i<n;i++) 
         {cout<<"\n"; 
                 for(int j=0;j<m;j++) 
                 { 
                         cout<<pTabT[i][j]<<"\t"; 
                 } 
         } 
 
         for(int i=0; i<m; i++) 
         delete [] pTabA[i]; 
 
         delete []pTabA; 
 
         for(int i=0; i<n; i++) 
           delete [] pTabT[i]; 
 
         delete []pTabT; 
 
         cout<<"\n\n"; 
         system("pause"); 
         return 0; 
}

  
 pozdrawiam i dziekuje z góry za pomoc</quote>

1 użytkowników online, w tym zalogowanych: 0, gości: 1