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

функции и массивы - C++

Восстановить пароль Регистрация
 
Niklitel
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 17
12.11.2013, 17:26     функции и массивы #1
оформить транспонирование квадратной матрицы как функцию
и проверить ее на симметричность (тоесть совпадает ли начальная матрица с транспонированной), симметричность оформить как функцию.
не могу понять почему неправильно работает, подскажите пожалуйста=(
Код
#include <iostream>
#include <conio.h>
int trans(int **x,int nx)
{ int i,j,s,**h;
  h=new int*[nx];
  for (i = 0; i<nx; i++){
	  h[i]=new int [nx];
  }
  for (i = 0; i<nx; i++) {
	  for (j=0; j<nx; j++) {
		  h[i][j]=x[j][i];
	  }
  }
  return **h;
}
int simm(int **x,int **t,int nx)
{ int i,j;
  for (i=0; i<nx; i++){
	  for (j=0; j<nx; j++) {
		  if (x[i][j]!=t[i][j]) 
			  return 0;
	  }
  }
  return 1;
}
int main ()
{ setlocale(LC_ALL, "rus");
  using namespace std;
  int **a,**b,**c,**s;
  int i,j,n;
  cout<<"введите размерность квадратной матрицы a"<<endl;
  cin>>n;
  cout<<"введите элементы квадратной матрицы a"<<endl;
  a=new int*[n];
  for (i = 0; i<n; i++){
	  a[i]=new int [n];
	  for (j = 0; j<n; j++){
		  cin>>a[i][j];
	  }
  }
  s=new int*[n];
  for (i = 0; i<n; i++){
	  s[i]=new int [n];
  }
  **s=trans(a,n);
  for (i = 0; i<n; i++) {
	  for (j = 0; j<n; j++){
		  cout<<s[i][j];
	  }
  }
  if (simm(a,s,n)==1){
	  cout<<"матрица а симметричная"<<endl;
  }
  else cout<<"матрица а несимметричная"<<endl;
getch ();
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2013, 17:26     функции и массивы
Посмотрите здесь:

Массивы и функции C++
C++ Массивы и функции
массивы и функции C++
Функции и массивы в С++ C++
C++ Функции и массивы
Массивы + функции C++
C++ Си++ массивы, функции

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
13.11.2013, 02:04     функции и массивы #2
Цитата Сообщение от Niklitel Посмотреть сообщение
не могу понять почему неправильно работает, подскажите пожалуйста=(
Цитата Сообщение от Niklitel Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
int trans(int **x,int nx)
{
  int i,j,s,**h;
  h=new int*[nx];
  for (i = 0; i<nx; i++){
      h[i]=new int [nx];
  }
  ..
  return **h;
}
...
 **s=trans(a,n);
А как по-вашему это вообще должно работать? Разберитесь, что из себя предсталяет указатель на указатель, вам нужно возвращать int** и соответственно h(а не **h). И зачем вы выделяете память в main, если собрались делать это в функции trans(хотя лучше всё-таки сделать это в main)? Ну и освободить память тоже бы не мешало...
Yandex
Объявления
13.11.2013, 02:04     функции и массивы
Ответ Создать тему
Опции темы

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