Форум программистов, компьютерный форум CyberForum.ru

Транспонирование матрицы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 122, средняя оценка - 4.70
PontiyPilat
0 / 0 / 0
Регистрация: 19.10.2008
Сообщений: 5
31.10.2008, 22:19     Транспонирование матрицы #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>
#include <stdlib.h>
 
void transponirovanie(int**mass1, int stolb, int str)
{int **mass2;
int i,j;
mass2=(int**)malloc(sizeof(int*)*stolb);
for(i=0;i<str;i++)
        mass2[i]=(int*)malloc(sizeof(int)*str);
    for (i=0;i<stolb;i++)
    
        for (j=0;j<str;j++)
    mass2[i][j]=mass1[j][i];
printf("transponirovannaya matriza imeet vid: \n\n\n");
        for (i=0;i<str;i++)
        {
            for (j=0;j<stolb;j++)
            printf("%d ", mass2[i][j]);
        printf("\n\n");
        }
free(mass2);
        
}
int main ()
{
    int i,j,str,stolb;
    int **mass1;
str=0;
    printf( "vvedite kol-vo strok v pervoy matrice\n");
scanf ("%d", &str);
    printf( "vvedite kol-vo stolbcov v pervoy matrice\n");
    scanf("%d", &stolb);
mass1=(int**)malloc(sizeof(int*)*stolb);
    for(i=0;i<str;i++)
        mass1[i]=(int*)malloc(sizeof(int)*str);
    printf ("vvedite elementi pervogo massiva\n");
    for (i=0;i<str;i++)
    
        for (j=0;j<stolb;j++)
 
    scanf ("%d", &mass1[i][j]);
    
transponirovanie(mass1,stolb,str);
free(mass1);
 
 
}
Эта прога работает при квадратных матрицах,а при НЕквадратных матрицах работать не хочет. В чем ошибка? Помогите пожалуйста.

Добавлено через 41 минуту 17 секунд
тут походу с выделением памяти не так.Борода какая-то.

все супер.Тема закрыта. Ошибка исправлена уже сейчас.Так что если что-исходник на будущее. Транспонированная матрица.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2008, 22:19     Транспонирование матрицы
Посмотрите здесь:

Транспонирование матрицы C++
транспонирование матрицы C++
Транспонирование матрицы. C++
Транспонирование матрицы C++
C++ Транспонирование матрицы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yurasik
 Аватар для Yurasik
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 9
18.12.2010, 21:29     Транспонирование матрицы #2
И в чем была ошибка? Объясните для новичков
Ekaterina-PC
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 3
18.12.2010, 22:28     Транспонирование матрицы #3
Ответьте в чем ошибка всё-таки была??? Ничего поделать не могу с прямоугольной матрицей (((( Оч надо, плииз.....
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
18.12.2010, 22:45     Транспонирование матрицы #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <ctime>
#include <iomanip>
 
using namespace std;
 
int main()
{
        srand(static_cast<int>(time(NULL)));
        int **mat;
        int M,N;
        cout<<"Enter M -> ";
        cin>>M;
        mat=new int*[M];
        cout<<"Enter N -> ";
        cin>>N;
        cout<<endl<<"Matrix: "<<endl;
          for(int i=0; i<M; i++)
          {
              mat[i]=new int[N];
               for(int j=0; j<N; j++)
               {
                  mat[i][j]=rand()%80;
                  cout<<setw(4)<<mat[i][j]<<setw(4);
               }
             cout<<endl;
          }
          cout<<endl<<"Transposed matrix:"<<endl;
        for(int j=0; j<N; j++)
          {
               for(int i=0; i<M; i++)
               {
                    cout<<setw(4)<<mat[i][j]<<setw(4);
               }
             cout<<endl;
          }
         system("pause");
                for(int i=0; i<M; i++)
                   delete mat[i]; 
                       delete [] mat;
         return 0;
}
Ekaterina-PC
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 3
18.12.2010, 23:26     Транспонирование матрицы #5
а без помощи манипуляторов никак нельзя, просто математически? Ну хотя так, естественно проще, но боюсь, что преподу не понравится...(а за эту идейку спасибки!!!)
Yurasik
 Аватар для Yurasik
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 9
21.12.2010, 00:13     Транспонирование матрицы #6
В чем ошибка в строке 9:

srand(static_cast<int>(time(NULL)));

Почему пишет expression syntax?
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
21.12.2010, 00:34     Транспонирование матрицы #7
Yurasik, какой компилятор?
Yurasik
 Аватар для Yurasik
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 9
21.12.2010, 00:37     Транспонирование матрицы #8
чтоб начать пользоваться этой программой нужно
1) включить библиотеки #include<stdio.h> и #include<stdlib.h>
2) в 9 строке написать srand((time(NULL)));
3) удалить int в 37 строке
4)
Примечание: программа заполняет матрицу случайными числами а не нашими нужными
***для незнающих

Добавлено через 1 минуту
Borland С++ 3.1 короче дрова
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
21.12.2010, 00:38     Транспонирование матрицы #9
Yurasik, то есть, вы уже розобрались?
Yurasik
 Аватар для Yurasik
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 9
22.12.2010, 00:09     Транспонирование матрицы #10
чтоб начать пользоваться этой программой нужно
1) написать шапку
C++
1
2
3
4
5
#include<iostream.h>
#include<time.h>
#include<iomanip.h>
#include<stdio.h>  
#include<stdlib.h>
2) в 9 строке написать
C++
1
srand((time(NULL)));
3) удалить int в 37 строке

Примечание: программа заполняет матрицу случайными числами а не нашими
***для незнающих

И все же она поможет мне написать курсовую, спасибо

Добавлено через 10 минут
Немного переделанная программа Понтия Пилата, сделанная красивым зелёным цветом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include<iostream.h> 
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
void transponirovanie(int**mass1, int stolb, int str)
{
clrscr();
int **mass2;
int i,j;
mass2=(int**)malloc(sizeof(int*)*stolb);
for(i=0;i<str;i++)
    mass2[i]=(int*)malloc(sizeof(int)*str);
    for (i=0;i<stolb;i++)
 
    for (j=0;j<str;j++)
    mass2[i][j]=mass1[j][i];
    textcolor (GREEN);
cprintf("\n transponirovannaya matrica imeet vid: ");
cout<<endl<<endl;
    for (i=0;i<str;i++)
    {
        for (j=0;j<stolb;j++)
        {cout.width(3); cout<<mass2[i][j];}
    printf("\n\n");
    }
free(mass2);
  getch();
}
int main ()
{
    int i,j,str,stolb;
    int **mass1;
str=0;
textcolor (GREEN);
cprintf("\n vvedite kol-vo strok v matrice ");
cscanf ("%d", &str);
    cprintf("\n vvedite kol-vo stolbcov v matrice ");
    cscanf("%d", &stolb);
mass1=(int**)malloc(sizeof(int*)*stolb);
    for(i=0;i<str;i++)
    mass1[i]=(int*)malloc(sizeof(int)*str);
    textcolor (GREEN);
    cprintf ("\n vvedite samu matricu ");
    cout<<endl;
 
    for (i=0;i<str;i++)
 
    for (j=0;j<stolb;j++)
 
    scanf ("%d", &mass1[i][j]);
 
transponirovanie(mass1,stolb,str);
free(mass1);
 
 getch();
}
 
[size="1"][color="grey"][I]Добавлено через 23 часа 9 минут[/I][/color][/size]
Возможно ли разбить эту программу на функции?
 
#include<iostream.h>
#include<iomanip.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{
clrscr();
      
int **mat;
           int M,N;
                cout<<"Enter M -> ";
                cin>>M;
 
                mat=new int*[M];
 
                cout<<"Enter N -> ";
                cin>>N;
 
                cout<<endl<<"Matrix: "<<endl;
                  for(int i=0; i<M; i++)
                  {
                          mat[i]=new int[N];
                           for(int j=0; j<N; j++)
                           {
                  cin>>mat[i][j];
                  
               }
             cout<<endl;
          }
                  cout<<endl<<"Transposed matrix:"<<endl;
        for(int j=0; j<N; j++)
                  {
                           for(int i=0; i<M; i++)
                           {
                cout<<setw(4)<<mat[i][j];
                           }
         cout<<endl;
          }
         system("pause");
        for(i=0; i<M; i++)
           delete mat[i];
               delete [] mat;
               getch();
         return 0;
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2010, 13:15     Транспонирование матрицы
Еще ссылки по теме:

C++ Транспонирование матрицы
C++ Транспонирование матрицы
C++ Транспонирование матрицы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ekaterina-PC
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 3
22.12.2010, 13:15     Транспонирование матрицы #11
Которая с зелененьким цветом не работает для матрицы любой размерности, а только для квадратных матриц((((((((((
Yandex
Объявления
22.12.2010, 13:15     Транспонирование матрицы
Ответ Создать тему
Опции темы

Текущее время: 20:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru