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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 122, средняя оценка - 4.70
PontiyPilat
0 / 0 / 0
Регистрация: 19.10.2008
Сообщений: 5
#1

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

31.10.2008, 22:19. Просмотров 15047. Ответов 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
#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 секунд
тут походу с выделением памяти не так.Борода какая-то.

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

Транспонирование матрицы - C++
Транспонировать матрицу(сделать строки столбцами) z = \begin{vmatrix} 2 &amp; 5 &amp; 1 &amp; 0\\ 0 &amp; 3 &amp; 5 &amp; 4\\ 1 &amp; 2 &amp; 0 &amp; 3 \end{vmatrix} ...

Транспонирование матрицы - C++
Объясните где ошибка и как ее исправить Задание написать функцию переворачивающие двумерный массив. так чтобы Х у первого массива было бы...

транспонирование матрицы - C++
Имеется матрица размерности(6 на 3) необходимо ее транспонировать! вот мой код count=3; n=6; void __fastcall...

Транспонирование матрицы - C++
Что-то я совсем запуталась,не могу понять как транспонировать матрицу:/ --Вызвать функцию transpose(), формирующую матрицу b,...

транспонирование матрицы - C++
Из квадратной матрицы X построить матрицу Y, заменив строки столбцами (транспонирование матрицы). Исходную и полученную матрицу вывести на...

Транспонирование матрицы - C++
Всем привет есть код транспонирования матрицы. Алгоритм вроде бы рабочий но, почему то не работает с обычной(не квадратной) матрицей. ...

10
Yurasik
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 9
18.12.2010, 21:29 #2
И в чем была ошибка? Объясните для новичков
0
Ekaterina-PC
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 3
18.12.2010, 22:28 #3
Ответьте в чем ошибка всё-таки была??? Ничего поделать не могу с прямоугольной матрицей (((( Оч надо, плииз.....
0
MILAN
886 / 780 / 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;
}
2
Ekaterina-PC
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 3
18.12.2010, 23:26 #5
а без помощи манипуляторов никак нельзя, просто математически? Ну хотя так, естественно проще, но боюсь, что преподу не понравится...(а за эту идейку спасибки!!!)
0
Yurasik
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 9
21.12.2010, 00:13 #6
В чем ошибка в строке 9:

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

Почему пишет expression syntax?
0
MILAN
886 / 780 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
21.12.2010, 00:34 #7
Yurasik, какой компилятор?
0
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 короче дрова
0
MILAN
886 / 780 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
21.12.2010, 00:38 #9
Yurasik, то есть, вы уже розобрались?
0
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;
 
}
0
Ekaterina-PC
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 3
22.12.2010, 13:15 #11
Которая с зелененьким цветом не работает для матрицы любой размерности, а только для квадратных матриц((((((((((
0
22.12.2010, 13:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2010, 13:15
Привет! Вот еще темы с ответами:

Транспонирование матрицы - C++
Двумерные массивы: 2)Из матрицы X=( xi,k) построить матрицу Y=( yi,k), заменив строки столбцами (транспонирование матрицы). Полученную...

Транспонирование матрицы - C++
Здравствуйте! Пишу функцию для транспонирования матрицы... Вот код: void tran(){ int n,m; cout &lt;&lt; &quot;Введите кол-во строк: &quot;; ...

Транспонирование матрицы - C++
Всем доброго времени суток, дорогие!:) Банальный вопрос такой, но не пойму в чём дело. Пишу тут заготовку (или как пафоснее назвать -...

Транспонирование матрицы - C++
Помогите пожалуйста разобраться. Транспонирована ли матрица в заданном коде? Точнее, что является транспонированием в заданном коде. ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru