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

Описать функцию Compare - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.68
papercut99
0 / 0 / 0
Регистрация: 20.05.2009
Сообщений: 9
25.05.2009, 16:52     Описать функцию Compare #1
Последняя из 6 задачек (5 осилил, 1 с вашей помощью)

Описать функцию Compare(A,B,n), возвразающую 1, если можно преобразовать квадратную матрицу А размером n x n
в матрицу B, отражениями относительно главной и побочной диагонали, и 0 в обратном случае.


Очень приветствуется код. Заранее спасибо!

Добавлено через 17 часов 56 минут 14 секунд
Ну пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16945 / 5350 / 329
Регистрация: 30.03.2009
Сообщений: 14,384
Записей в блоге: 26
25.05.2009, 17:17     Описать функцию Compare #2
Из матрицы A получаешь матрицу C через отражение относительно длиагонали. Сравниваешь с B, если совпадают - возращаешь 1. Потом из A получаешь C но через другую диагональ. Если совпадают - возращаешь 1, иначе 0
papercut99
0 / 0 / 0
Регистрация: 20.05.2009
Сообщений: 9
26.05.2009, 08:52  [ТС]     Описать функцию Compare #3
Друзья мои, пока я решал другие 2 задачки время утекло и теперь я категорически не успеваю к завтра.... кто чем может в плане кода помочь с этой задачкой помоги пожалуйста, завтра последний день

Большое спасибо за помощь.

Добавлено через 6 часов 48 минут 21 секунду
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
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
//---------------------------------------------------------------------------
#pragma argsused
 
// функция отражающая матрицу относительно главной диагонали
void glavOtrazh(int **A, int n)
{
 int tmp;
 for(int i=0; i<n; i++)
  for(int j=i; j<n; j++)
   {
    tmp = A[i][j];
    A[i][j] = A[j][i];
    A[j][i] = tmp;
   }
}
 
 
main () {
int n=2;
 
//создаем и заполняем матрицу В, которая не будет изменятся
int** B = new int*[n];
 
for(int i = 0; i < n; ++i)
  B[i] = new int[n];
 
  for(int i = 0; i < n; ++i)
  for(int j = 0; j < n; ++j){
    cout << "B[" << i + 1 << "][" << j + 1 << "]= ";
     cin >> B[i][j];
    }
 
  for(int i = 0; i < n; ++i){
 
for(int j = 0; j < n; ++j)
  cout << B[i][j] <<" ";
 
    cout << endl;
  }
 
// создаем и заполняем матрицу А
int** A = new int*[n];
 
for(int i = 0; i < n; ++i)
  A[i] = new int[n];
 
  for(int i = 0; i < n; ++i)
  for(int j = 0; j < n; ++j){
    cout << "A[" << i + 1 << "][" << j + 1 << "]= ";
     cin >> A[i][j];
    }
 
  for(int i = 0; i < n; ++i){
 
for(int j = 0; j < n; ++j)
  cout << A[i][j] <<" ";
 
    cout << endl;
  }
 
//отражаем матрицу А относительно главной диагонали
glavOtrazh(A,n);
Подскажите, как теперь описать требуемую функцию Compare, котарая сравнит полученную матрицу А с В ?

Пожалуйста, мне через 3 часа уже сдавать....
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16945 / 5350 / 329
Регистрация: 30.03.2009
Сообщений: 14,384
Записей в блоге: 26
26.05.2009, 10:09     Описать функцию Compare #4
C
1
2
3
4
5
6
7
8
9
10
11
12
// Возвращаем 1, если матрицы A и B равны, иначе 0
int
compare_matrixes(int **A, int **B, int n)
{
 for(int i=0; i<n; i++)
  for(int j=0; j<n; j++)
   {
      if (A[i][j] != B[i][j])
        return 0;
   }
  return 1;
}
papercut99
0 / 0 / 0
Регистрация: 20.05.2009
Сообщений: 9
26.05.2009, 10:17  [ТС]     Описать функцию Compare #5
Почему то она у меня по первому элементу сравнивает:
Подскажите где я налажал?
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
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
//---------------------------------------------------------------------------
#pragma argsused
//---------функция отражающая матрицу
void glavOtrazh(int **A, int n)
{
 int tmp;
 for(int i=0; i<n; i++)
  for(int j=i; j<n; j++)
   {
    tmp = A[i][j];
    A[i][j] = A[j][i];
    A[j][i] = tmp;
   }
}
//---------функция сравнивающая матрицы
int Compare(int **A, int**B, int n) {
int i,j;
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
{
if (A[i][j]==B[i][j])   {
cout<<"ravna";
return 1;   }
else                      {
cout<<"ne ravna";
return 0;
}
}
}
//---------этапы
int main () {
int n=2;
//------------------вводим B
int** B = new int*[n];
 
for(int i = 0; i < n; ++i)
  B[i] = new int[n];
 
  for(int i = 0; i < n; ++i)
  for(int j = 0; j < n; ++j){
    cout << "B[" << i + 1 << "][" << j + 1 << "]= ";
     cin >> B[i][j];
    }
 
  for(int i = 0; i < n; ++i){
 
for(int j = 0; j < n; ++j)
  cout << B[i][j] <<" ";
 
    cout << endl;
  }
 
//------------------вводим A
int** A = new int*[n];
 
for(int i = 0; i < n; ++i)
  A[i] = new int[n];
 
  for(int i = 0; i < n; ++i)
  for(int j = 0; j < n; ++j){
    cout << "A[" << i + 1 << "][" << j + 1 << "]= ";
     cin >> A[i][j];
    }
 
  for(int i = 0; i < n; ++i){
 
for(int j = 0; j < n; ++j)
  cout << A[i][j] <<" ";
 
    cout << endl;
  }
 
//--------отражаем
glavOtrazh(A,n);
//---------проверяем
Compare( A, B,  n);
getch();
}
//---------------------------------------------------------------------------
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16945 / 5350 / 329
Регистрация: 30.03.2009
Сообщений: 14,384
Записей в блоге: 26
26.05.2009, 10:40     Описать функцию Compare #6
Когда у тебя времени мало, ты хоть ставь вопрос чётко. Людям, которые тебе бесплатно помогают, как-то впадлу разбираться, а в чём же суть вопроса состоит
papercut99
0 / 0 / 0
Регистрация: 20.05.2009
Сообщений: 9
26.05.2009, 10:44  [ТС]     Описать функцию Compare #7
Извините, я на больную голову плохо соображаю.

Вопрос:


Цитата Сообщение от papercut99 Посмотреть сообщение
//---------функция сравнивающая матрицы
int
Compare(int **A, int**B, int n)
{
int i,j;
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
{
if (A[i][j]==B[i][j])
{
cout<<"ravna"; return 1;
}
else
{
cout<<"ne ravna";
return 0;
}
}
}
вот эта функция почему то сравнивает матрицы только по первому элементу, т.ематрица
C
1
2
1 2
3 4
Будет равна матрице
C
1
2
1 6
8 9
потому что первые элементы равны
а матрица
C
1
2
2 3
2 1
не будет равна
C
1
2
1 3
2 1
что в принципе конечно верно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16945 / 5350 / 329
Регистрация: 30.03.2009
Сообщений: 14,384
Записей в блоге: 26
26.05.2009, 11:09     Описать функцию Compare #8
Ты переврал мой код, поменяв местами "return 0" и "return 1"
Внутри if'а выход в случае НЕравенства, а ты сделал наоборот
papercut99
0 / 0 / 0
Регистрация: 20.05.2009
Сообщений: 9
26.05.2009, 11:11  [ТС]     Описать функцию Compare #9
Цитата Сообщение от Evg Посмотреть сообщение
Ты переврал мой код, поменяв местами "return 0" и "return 1"
Внутри if'а выход в случае НЕравенства, а ты сделал наоборот
Да, это мой старый вариант, с вашим тоже самое, функция как будто дальше первого элемента не смотрит(
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16945 / 5350 / 329
Регистрация: 30.03.2009
Сообщений: 14,384
Записей в блоге: 26
26.05.2009, 11:14     Описать функцию Compare #10
Сделай код с печатями и посмотри, что получается:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Возвращаем 1, если матрицы A и B равны, иначе 0
int
compare_matrixes(int **A, int **B, int n)
{
 for(int i=0; i<n; i++)
  for(int j=0; j<n; j++)
   {
      cout << "A[" << i << "][" << j << "] = " << A[i][j] << endl;
      cout << "B[" << i << "][" << j << "] = " << B[i][j] << endl;
      if (A[i][j] != B[i][j])
      {
        cout << "Ne ravno" << endl;
        return 0;
      }
   }
  cout << "Ravno" << endl;
  return 1;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2009, 11:17     Описать функцию Compare
Еще ссылки по теме:

Описать функцию в с++ C++
C++ Описать функцию
Описать функцию C++ C++
Описать функцию C++

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

Или воспользуйтесь поиском по форуму:
papercut99
0 / 0 / 0
Регистрация: 20.05.2009
Сообщений: 9
26.05.2009, 11:17  [ТС]     Описать функцию Compare #11
Огромное спасибо!!))))))))))))))
Все заработало!!!!!!!))))))))))))))))))
Побежал защищать!!!!!!!)))))))))))))

Спасибо!!!!!!!)))))))))
Yandex
Объявления
26.05.2009, 11:17     Описать функцию Compare
Ответ Создать тему
Опции темы

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