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

квадратная матрица магическим квадратом - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Обёртка над Variable arguments http://www.cyberforum.ru/cpp-beginners/thread218029.html
Здравствуйте! У меня есть вот такой шаблон: template<typename TYPE> vector<TYPE> MakeVector(int Count,...) { vector<TYPE> Arr;Arr.resize(Count); va_list vl;va_start(vl,Count);for(int i=0;i<Count;i++)Arr=va_arg(vl,TYPE); return Arr; } мне надо сделать над ним обёртку, к примеру такую:
C++ Копировать все элементы исходного массива в новый массив, предварительно изменив их согласно условию Дан массив m. Надо переписать в массив n, где каждый элемент равен m*(сумма квадратов от 1до7). Например, массив m = { 3, 5, 2, 1 }; тогда: n=3*(32) n=5*(32+52) n=2*(32+52+22) n=1*(32+52+22+12) Буду премного благодарен. http://www.cyberforum.ru/cpp-beginners/thread218018.html
структуры C++
Описать тип struct Interval, задающий замкнутый интервал на действительной оси. Реализовать в виде отдельных функций следующие операции над интервалами: а) пересечение, б) интервальная оболочка (наименьший интервал, содержащий в себе два заданных), в) проверка включения одного интервала в другой, г) проверка принадлежности действительного числа интервалу, д) проверка симметричности...
C++ Обработка одномерных массивов.
В массиве X(n) после каждого отрицательного элемента вставить ноль. Определить, поменялось ли местоположение минимального элемента массива. Найти сумму четных и произведение нечетных элементов массива. Помогите пожалуйста!!! Добавлено через 15 минут Ну очень срочно надо, а в программировании не очень хорошо разбираюсь!
C++ Описать класс "Прямая" http://www.cyberforum.ru/cpp-beginners/thread218010.html
класс - прямая члены класса - Координаты двух точек (x1,y1) и (x2,y2) методы - Конструктор, метод вывода уравнения прямой операторы перегрузки - Проверка параллельности 2х прямых ( ), определение угла между 2-мя прямым(%) исходные данные - Прямая АВ: A(xa,ya), B(xb,yb) Прямая CD: C(xc,yc), D(xd,yd) результаты - Вывести уравнения прямых линий. Если прямые не параллельны, то найти и вывести...
C++ структура :( Имеются сведения об m мастерских:название мастерской,количество работников,количество заказов.Определить количество мастерских с наибольшим количеством заказов на 1 работника и само это количество. sved.nazvanie название мастерской sved.rabotnik кол-во работников sved.zakaz кол-во заказов mastr структура #include<iostream.h> #include<conio.h> struct mastr подробнее

Показать сообщение отдельно
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
22.12.2010, 17:26     квадратная матрица магическим квадратом
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
#include <iostream>
#include <algorithm>
#include <conio.h>
#include <stdio.h>
#include <numeric>
 
using namespace std;
 
void Fail(void)
{
    cout << "Введенная матрица не является магическим квадратом" << endl;
    _getch();
    exit(EXIT_FAILURE);
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    size_t m;
 
    cout << "Введите порядок матрицы " << endl;
    cin >> m;
 
    int **matrix = (int**) realloc(NULL, sizeof(int*) * m);
    for (size_t i = 0; i < m; ++i)
        matrix[i] = (int*) realloc(NULL, sizeof(int) * m);
 
    // вводим матрицу;
    cout << "Введите элементы матрицы последовательно " << endl;
    for (size_t i = 0; i < m; ++i)
        for(int j = 0; j < m; ++j)
            cin >> matrix[i][j];
 
    int PartSum = accumulate(matrix[0], matrix[0] + m, 0);
    // проверяем является ли матрицы магическим квадратом;
    // 1. равенство по строкам;
    for(size_t i = 1; i < m; ++i)
        if (PartSum != accumulate(matrix[i], matrix[i] + m, 0))
            Fail();
 
    // 2. Равенство по стобцам;
    for(size_t i = 1; i < m; ++i)
        if (PartSum != accumulate(*(matrix + i),*(matrix + i) + m, 0))
            Fail();
 
    // 3. Проверка по диагонали;
    int Sum1 = 0, Sum2  = 0;
    for (size_t i = 0; i < m; ++i)
        Sum1 += matrix[i][i], Sum2 += matrix[i][m - i - 1];
    if (PartSum != Sum1 || PartSum != Sum2)
        Fail();
 
    cout << "Введенная матрицы является магическим квадратом" << endl;
    _getch();
    for (size_t i = 0; i < m; ++i)
        matrix[i] = (int*) realloc(matrix[i], NULL);
    matrix = (int**) realloc(matrix, NULL);
 
    return 0;
}
 
Текущее время: 21:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru