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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.68
papercut99
0 / 0 / 0
Регистрация: 20.05.2009
Сообщений: 9
#1

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

25.05.2009, 16:52. Просмотров 3323. Ответов 10
Метки нет (Все метки)

Последняя из 6 задачек (5 осилил, 1 с вашей помощью)

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


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

Добавлено через 17 часов 56 минут 14 секунд
Ну пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2009, 16:52     Описать функцию Compare
Посмотрите здесь:

Задачка на массивы (описать функцию случайной генерации элементов массива, а за тем логическую функцию) - C++
Необходимо описать функцию случайной генерации элементов массива, а за тем логическую функцию, которая в новом массиве получит все значения...

Compare vs == - C++
может вопрос странный, но какая строчка будет работать быстрее? !(*iter1).compare(*iter2) или *iter1 == *iter2

Описать функцию - C++
Описать функцию TriangleP(a, h, P), находящую периметр P равнобедренного треугольника по его основанию a и высоте h, проведенной к...

Описать функцию - C++
Помогите пожалуйста. Описать функцию, которая вычислит значение полинома в точке x Y(x)=(11*x^10)+(10*x^9)+(9*x^8)+...+2*x+1 Обратиться...

Описать функцию - C++
Используя указатели,описать функцию,подсчитывающую количество отрицательных элементов в одномерном массиве. Привети пример вызова...

Описать функцию Even - C++
Создать функцию Even(k) логического типа,возвращающую True , если целый параметр К является чётным и False в противном случае. С ее помощью...

Описать функцию C++ - C++
Описать функцию: PowerA3(A), возвращающую третью степень числа A (A - вещественный параметр), С помощью этой функции найти третьи степени...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт CАвтор FAQ
17469 / 5707 / 362
Регистрация: 30.03.2009
Сообщений: 15,663
Записей в блоге: 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
Эксперт CАвтор FAQ
17469 / 5707 / 362
Регистрация: 30.03.2009
Сообщений: 15,663
Записей в блоге: 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
Эксперт CАвтор FAQ
17469 / 5707 / 362
Регистрация: 30.03.2009
Сообщений: 15,663
Записей в блоге: 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
Эксперт CАвтор FAQ
17469 / 5707 / 362
Регистрация: 30.03.2009
Сообщений: 15,663
Записей в блоге: 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
Эксперт CАвтор FAQ
17469 / 5707 / 362
Регистрация: 30.03.2009
Сообщений: 15,663
Записей в блоге: 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++
Помогите описать функцию в с++, y'' - xy' - y=0, для дальнейшей работы с ней.

Описать функцию - C++
Описать функцию для вывода на экран натуральных чисел из файла целых чисел в восьмеричном виде,не используя printf Добавлено через 1...

Описать функцию Minmax (X, Y) - C++
Описать функцию Minmax (X, Y), записывающий в переменную X минимальное из значений X и Y, а в переменную Y - максимальное из этих значений...

Описать функцию CircleS(R) - C++
Описать функцию CircleS(R) вещественного типа, находящую площадь круга радиуса R(R - вещественное). С помощью этой функции найти площади...

Описать функцию DigitN(K, N - C++
Описать функцию DigitN(K, N) целого типа, возвращающую N-ю циф-ру целого положительного числа K (цифры в числе нумеруются справа на-лево)....


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

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

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

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