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

Определить, является ли матрица магическим квадратом - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ признак конца ввода http://www.cyberforum.ru/cpp-beginners/thread367049.html
Здравствуйте. Учу С++ по книге Дейтела так вот там пример программы #include <iostream> #include <locale.h> using namespace std; main() {
C++ Мини-программа #include <iostream> using namespace std; int chnch(int); int main() { int a; cin >> a; cout << chnch(a); return 0; } http://www.cyberforum.ru/cpp-beginners/thread367043.html
Помогите с inline функцией C++
Нужно написать программу, вычисляющую определитель второго порядка с помощью inline функции ( при этом данные должны вводиться пользователем) нуб нубом есть только inline {int opred(int a) (return (а*a - а*a) ; } И ещё программу, которая вычисляет частичную сумму ряда: \sum_{n=1}^{\propto }\frac{{n}^{2}}{{(n+2)}^{2}}
C++ проблема с задачкой
#include <iostream> using namespace std; int main() { int n,i,max,min,N,m, sum=0; int*A; cout<<"vvedite razmer massiva n="; cin>>n; A=new int; for(i=0;i<n;i++) { cout<<"a=";
C++ Перегрузка оператора [] http://www.cyberforum.ru/cpp-beginners/thread367029.html
подскажите пожалуйста, как реализовать класс, в котором оператор перегружен так, что позволяет записать случайный символ, указанный в качестве индекса, в файл?
C++ Помогите решить задачу на C++ В общем, суть задачи такова: у меня есть массив, допустим: x|x| Hello | World x|x| What|is |your| name x|x|112233 Максимум элементов в строке массива - 100. Нужно удалить только крайние пробелы (по 1 штуке - не более) исключая первые две ячейки в каждой строке. Я попытался набросать код, но постоянно вылезает ошибка: // сокращение крайних пробелов int rsp, lsp=0; for (int t1=0; t1<i;... подробнее

Показать сообщение отдельно
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
16.10.2011, 13: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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <stdio.h>
 
int is_magic_square(int *, int);
void print_matrix(int *, int);
 
int main()
{
    int  m[3][3] = {
        {2, 7, 6},
        {9, 5, 1},
        {4, 3, 8}
    };
    int m1[4][4] = {
        {7, 12, 1, 14},
        {2, 13, 8, 11},
        {16, 3, 10, 5},
        {9, 6, 15,  4}
    };
    int m2[4][4] = {
        {7, 12, 1, 14},
        {2, 13, 7, 11}, /* 7 is wrong */
        {16, 3, 10, 5},
        {9, 6, 15,  4}
    };
 
    print_matrix(*m, 3);
    printf(is_magic_square(*m, 3) ? "is a magic" : "is not a magic");
    printf(" square!\n\n");
 
    print_matrix(*m1, 4);
    printf(is_magic_square(*m1, 4) ? "is a magic" : "is not a magic");
    printf(" square!\n\n");
 
    print_matrix(*m2, 4);
    printf(is_magic_square(*m2, 4) ? "is a magic" : "is not a magic");
    printf(" square!\n\n");
    return 0;
}
 
 
#define INDEX(i, j, ord) ((ord) * (i) + (j))
/*
 * is_magic_square: processes static square matrices
 * of any order, does not handle dynamic arrays
 */
int is_magic_square(int *m, int order)
{
    int i, j, sum;
    int prevs;  /* previous sum */
 
    sum = 0;    
    for (i = 0; i < order; i++) {  /* rows */
        prevs = sum;
        for (sum = j = 0; j < order; j++)
            sum += m[ INDEX(i, j, order) ];
        if (i != 0 && sum != prevs)
            return 0;
    }
    for (j = 0; j < order; j++) {  /* columns */
        prevs = sum;
        for (sum = i = 0; i < order; i++)
            sum += m[ INDEX(i, j, order) ];
        if (sum != prevs)
            return 0;
    }
    prevs = sum;            /* first diagonal */
    for (i = j = sum = 0; i < order; i++, j++)
        sum += m[ INDEX(i, j, order) ];
    if (prevs != sum)
        return 0;
    prevs = sum;           /* second diagonal */
    for (i = sum = 0, j = order-1; i < order; i++, j--)
        sum += m[ INDEX(i, j, order) ];
    if (prevs != sum)
        return 0;
    return 1;
}
 
void print_matrix(int *m, int order)
{
    int i;
 
    for (i = 0; i < order * order; i++)
        printf("%2d%c", m[i], ((i+1) % order) ? ' ' : '\n');
}
 
Текущее время: 20:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru