Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2012, 17:18   #1
zubber94
Пользователь
 
Регистрация: 28.03.2012
Сообщений: 14
По умолчанию Транспонирование матриц С++

Транспонирование не выполняется. Где ошибка, скажите пожалуйста.

Код:
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <time.h>

void vvod_matrA(float **, int), vvod_matrB(float **, int), 
vyvod_matr(float **, int), 
transpose(float **, int),
mult_matr(float **, float **, float **, int); 

void main()
{
	srand(time(NULL));
	int r;
	cout<<"R= "; cin>>r;
	float **m1=new float *[r], **m2=new float *[r], **m3=new float *[r];
	for(int i=0; i<r; i++)
	{
		m1[i]=new float[r];
		m2[i]=new float[r];
		m3[i]=new float[r];}

	vvod_matrA(m1,r);
	vvod_matrB(m2,r);
	vyvod_matr(m1,r);
	vyvod_matr(m2,r);

	transpose(m1,r);
	transpose(m2,r);

	vyvod_matr(m1,r);
	vyvod_matr(m2,r);

	mult_matr(m1,m2,m3,r);
	vyvod_matr(m3,r);	
}
//-------------------------------
void vvod_matrA(float **m, int r)
{
	for(int i=0; i<r; i++)
	for(int j=0; j<r; j++)
	m[i][j]=rand()%10-5;
}
//-------------------------------
void vvod_matrB(float **m, int r)
{
	for(int i=0; i<r; i++){
	for(int j=0; j<r; j++)
	{
		if(i<=j)m[i][j]=1./(i+j-1+2);
		else m[i][j]=1./(i+j+1+2);
	}}
}

void vyvod_matr(float **m, int r)
{
	for(int i=0; i<r; i++)
	{	
		cout<<'\n';
	    for(int j=0; j<r; j++)
		cout<<m[i][j]<<'\t';
	}
	cout<<endl;
}

void transpose(float **m, int r)
{
	float tmp;
	for(int i=0; i<r; i++)
	for(int j=0; j<r; j++)
	{		
	    tmp=m[i][j];
		m[i][j]=m[j][i];
	    m[j][i]=tmp;
	}
}

void mult_matr(float **m1, float **m2, float **m3, int r)
{
	int i,j;
	for(i=0; i<r; i++)
	for(j=0; j<r; j++)
	{   m3[i][j]=0;
		for(int k=0; k<r; k++)
		m3[i][j]+=m1[i][k]*m2[k][j];
	}	
}
zubber94 вне форума Ответить с цитированием
Старый 01.04.2012, 18:01   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Оно выполняется. Даже дважды!
Код:
   ...
   for ( i = 0; i < r-1; i++ ) {
      for ( j = i+1; j < r; j++ ) {	
         ...
Vago вне форума Ответить с цитированием
Старый 01.04.2012, 21:03   #3
zubber94
Пользователь
 
Регистрация: 28.03.2012
Сообщений: 14
По умолчанию

Ой, точно, спасибо!
zubber94 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для любых 2 матриц (вводятся) надо найти объединение и пересечение этих матриц (Pascal) novicok Помощь студентам 6 15.09.2011 09:51
Обработка Матриц(Упорядочивание Элементов,Вывод На Экран Матриц При Условии...) timepoka Помощь студентам 8 01.07.2011 13:20
Транспонирование king13 Microsoft Office Excel 3 03.02.2011 13:50
Си/Си++ Транспонирование матриц Маришка_Курносова Помощь студентам 0 10.09.2010 15:11
транспонирование матриц kate158 Общие вопросы Delphi 7 21.12.2008 16:39