C - transponowanie macierzy

Awatar użytkownika
qaz
Użytkownik
Użytkownik
Posty: 486
Rejestracja: 28 paź 2006, o 21:56
Płeć: Kobieta
Lokalizacja: Gobbos' Kingdom
Podziękował: 311 razy
Pomógł: 5 razy

C - transponowanie macierzy

Post autor: qaz »

Potrzebuję program transponujący macierz, wczesniej wprowadzona o dowolnym wymiarze, moze ktos dysponuje takim? Bylabym wdzieczna ...
MGT
Użytkownik
Użytkownik
Posty: 107
Rejestracja: 7 lis 2006, o 12:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Pomógł: 20 razy

C - transponowanie macierzy

Post autor: MGT »

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i,j,n,m,**mac;

scanf("%d %d",&n,&m); /* wyniar macierzy n wierszy, m kolumn */

mac = (int **) malloc(n*sizeof(int));
for(i=0;i<n;i++) mac[i] = (int *) malloc(m*sizeof(int));

for(i=0;i<n;i++)
    for(j=0;j<m;j++)
        scanf("%d",&mac[i][j]);

/* wyswietl macierz transponowana */
for(i=0;i<m;i++)
    {
    for(j=0;j<n;j++)
        printf("%d ",mac[j][i]);
    printf("
");
    }
return 0;
}

Jeśli się nigdzie nie pomyliłem!
Awatar użytkownika
qaz
Użytkownik
Użytkownik
Posty: 486
Rejestracja: 28 paź 2006, o 21:56
Płeć: Kobieta
Lokalizacja: Gobbos' Kingdom
Podziękował: 311 razy
Pomógł: 5 razy

C - transponowanie macierzy

Post autor: qaz »

cos mi nie dziala chyba, jak nalezy wprowadzac te dane, bo nie ma opisu.
PS. ale i tak dzięki
dreake
Użytkownik
Użytkownik
Posty: 36
Rejestracja: 30 lip 2006, o 21:05
Płeć: Mężczyzna
Lokalizacja: Krakow
Podziękował: 6 razy

C - transponowanie macierzy

Post autor: dreake »

Jak to jak nalezy wprowadzac dane... Przeciez masz kod u gory. Najpierw podajesz wymiar macierzy (m,n) a potem m*n elementow macierzy.
Awatar użytkownika
qaz
Użytkownik
Użytkownik
Posty: 486
Rejestracja: 28 paź 2006, o 21:56
Płeć: Kobieta
Lokalizacja: Gobbos' Kingdom
Podziękował: 311 razy
Pomógł: 5 razy

C - transponowanie macierzy

Post autor: qaz »

tak tez robie i ... :/
Awatar użytkownika
Emiel Regis
Użytkownik
Użytkownik
Posty: 1495
Rejestracja: 26 wrz 2005, o 17:01
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 71 razy
Pomógł: 225 razy

C - transponowanie macierzy

Post autor: Emiel Regis »

Mam nadzieje że nie zakręcę Ci w głowie programem w C++.
Napisalem go teraz, zajmuje wiecej tekstu, natomiast jest znacznie bardziej czytelny niż poprzednika i klarowniejszy do celów edukacyjnych.

Kod: Zaznacz cały

#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;
} 
Zresztą skompiluj go sobie to sama wszystko zobaczysz; )
Pozdrawiam!
MGT
Użytkownik
Użytkownik
Posty: 107
Rejestracja: 7 lis 2006, o 12:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Pomógł: 20 razy

C - transponowanie macierzy

Post autor: MGT »

qaz pisze:cos mi nie dziala chyba, jak nalezy wprowadzac te dane, bo nie ma opisu.
PS. ale i tak dzięki
tak jak napisał Dreake:
\(\displaystyle{ m n\\
ft[\begin{array}{ccc}a_{1 1}&...&a_{1 n}\\...&...&...\\a_{1 m}&...&a_{n m}\end{array}\right]}\)



np:
2 4
1 2 3 4
9 8 7 6
ODPOWIEDZ