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

Определить является ли двумерный массив логическим квадратом - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Напечатать все слова последовательности, которые встречаются в ней по одному разу. http://www.cyberforum.ru/cpp-beginners/thread548905.html
Дана последовательность слов. Напечатать все слова последовательности, которые встречаются в ней по одному разу. :( (P.S.ответьте пожалуйста полно...С++ знаю плохо.)
C++ Побитовые операции Задача должна быть реализована в с++ но пришлось временно писать в дельфи. суть такая: входящие число в диапазоне 0-n (8 байт) выходящие группа чисел в виде нескольких байт с помощью которых можно представить число. Пример: входящие 65535 выходящие два числа 255 и 127. Проблемма заключаеться в том что я не уверен правильно ли выходят числа а именно в каком порядке их надо вставить. Ну... http://www.cyberforum.ru/cpp-beginners/thread548886.html
C++ Метод релаксации неправильно работает
Мне необходимо решить уравнение Пуассона методом релаксации для области во вложении. (Она целиком лежит в квадрате 3х3). Я написал код для метода релаксации, однако он даёт неправильный результат. Помогите найти ошибку. N - количество частей, Omega - параметр релаксации, eps - точность, phi - матрица начальных приближений, f - функция распределения, U - нужная матрица. void Relax(int N,...
Не могу понять свою ошибку! C++
Здравствуйте! Скажите, в чем моя ошибка... При вводе чисел 1 1 1 в исходный файл программа выдаёт "YES", но при вводе 2 2 4, программа выдает "NO"... #include <iostream> using namespace std; int main(){ freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); long a, b, c; cin >> a, b, c;
C++ Как нарисовать график? http://www.cyberforum.ru/cpp-beginners/thread548849.html
У меня заданы функции: y1=a0+a1*x/exp(1/x) y2=a0+a1*log(sqrt(x)) и массив известных значений У a0,a1 известны, x- заданный массив как построить график, этих функций (y,y1,y2) в консоли?
C++ Деревья Не можете ли подсказать как решить задачку: Проверить, является ли двоичное дерево AVL-деревом? подробнее

Показать сообщение отдельно
HighPredator
5458 / 1824 / 335
Регистрация: 10.12.2010
Сообщений: 5,391
Записей в блоге: 3
15.04.2012, 15:52     Определить является ли двумерный массив логическим квадратом
Альтернативное решение.
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
#include<iostream>
#include<time.h>
 
#define N 4
#define M 2*N+2
 
using namespace std;
 
int main()
{
    srand(time(0));
    int A[N][N];//собственно матрица
    int Sums[M];//массив сумм
    int i,j;//переменные цикла
    int t;//параметр для проверки всех сумм на равенство
    //заполняем матрицу случайными числами и выводим
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
        {
            A[i][j]=rand()%10;
            cout<<A[i][j]<<" ";
        }
        cout<<endl;
    }
    //инициализируем массив сумм нулем
    for(i=0;i<M;i++) Sums[i]=0;
    //считаем суммы по всем строкам
    for(i=0;i<N;i++)
    {       
        for(j=0;j<N;j++) Sums[i]=Sums[i]+A[i][j];
    }
    //считаем суммы по всем столбцам
    for(j=0;j<N;j++)
    {
        for(i=0;i<N;i++) Sums[N+j]=Sums[N+j]+A[i][j];
    }
    //считаем сумму по диагоналям
    for(i=0;i<N;i++)
    {
        Sums[M-2]=Sums[M-2]+A[i][i];//главная
        Sums[M-1]=Sums[M-1]+A[i][N-i+1];//побочная
    }
    t=Sums[0];
    for(i=1;i<M;i++) t=t^Sums[i];//элегантно проверяем на равенство))
    if(t==0) cout<<"Matrix is a logical null."<<endl;
    else cout<<"Matrix is not a logical null."<<endl;
    getchar();
    return 0;
}
В данной реализации, вместо логического флага используется битовая операция исключающего или (xor или ^ для си++) для каждого элемента массива сумм. Суть такого подхода в том, что xor двух равных чисел равен нулю. С учетом того, что в задаче количество сумм всегда кратно двум, то применив такую операцию для всего массива сумм, будет получаться ноль, если все суммы равны, т.е. матрица является логическим квадратом. И не ноль, соответственно, в противном случае.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru