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

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

Войти
Регистрация
Восстановить пароль
 
tibik
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 2
#1

Магический квадрат, предикаты - C++

15.12.2012, 23:57. Просмотров 1022. Ответов 1
Метки нет (Все метки)

Доброе время суток, господа.
Молю вас о помощи.

Есть сие задание:
Составить программу для решения одной из следующих задач. Предъявить три листинга.

1. Текст задачи. Спецификации (утверждения), выраженные в виде предикатов предусловия, постусловия, инвариантов, охраны циклов, ограничивающей функции. Текст программы с указанием точек проверки истинности утверждений.

2. Текст программы, где проверка истинности утверждений реализована в виде функций. Результаты правильного прогона программы.

3. Текст программы, в которую Вы специально вносите различные ошибки. Результаты ошибочных прогонов программы (2-3 прогона).

Взял тему магический квадрат. Реализована индийским (сиамским) методом по Постникову. Имеется код, все работает.

Помогите составить текст задачи согласно первому пункту.

Код:

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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
int n;
cout << "Enter square size: ";
cin >> n;
 
while (n % 2 == 0)
{
cout << "Size should be even! Try again: ";
cin>>n;
}
 
int **matrix = new int *[n]; 
for (int i = 0; i < n; ++i)
{
matrix = new int [n];
}
 
int nsqr = n * n;
int i = 0, j = n / 2;
 
for (int k = 1; k <= nsqr; ++k)
{
matrix[j] = k;
i--;
j++;
if (k % n == 0) //Если кратно размерности квадрата,
{ 
i += 2; //то сдвигаемся на уровень вниз.
--j; 
}
else 
{
if (j == n) 
{
j -= n;
}
else if (i < 0)
{
i += n; 
}
}
}
 
cout << "\n";
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
cout << setw(3) << matrix[j] << " ";
}
cout << endl;
}
 
for (i = 0; i < n; i++)
delete [] matrix;
delete [] matrix;
 
return 0;
}
Добавлено через 13 часов 46 минут
Все еще нужна помощь.

Добавлено через 3 часа 42 минуты
При копировании в коде появились ошибки, вот правильный код:
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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <vector>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int n;
    cout << "Enter square size: ";
    cin >> n;
    
    while (n % 2 == 0)
    {
        cout << "Size should be even! Try again: ";
        cin>>n;
    }
    
    int **matrix = new int *[n]; 
    for (int i = 0; i < n; ++i)
    {
        matrix[i] = new int [n];
    }
    
    int nsqr = n * n;
    int i = 0, j = n / 2;
    for (int k = 1; k <= nsqr; ++k)
    {
        matrix[i][j] = k;
        i--;
        j++;
        if (k % n == 0) //Если кратно размерности квадрата,
        {i += 2; //то сдвигаемся на уровень вниз.
        --j; 
        }
        else 
        {
            if (j == n) 
            {
                j -= n;
            }
            else if (i < 0)
            {
                i += n; 
            }
        }
    }
    
    cout << "\n";
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            cout << setw(3) << matrix[i][j] << " ";
        }
        cout << endl;
    }
    
    for (i = 0; i < n; i++)
        delete [] matrix[i];
    delete [] matrix;
    return 0;
}
Добавлено через 8 часов 32 минуты
Ап, до понедельника очень надо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2012, 23:57     Магический квадрат, предикаты
Посмотрите здесь:

Магический квадрат) - C++
Определить, является ли заданная квадратная матрица порядка n магическим квадратом, т.е. матрицей, у которой суммы элементов строк и...

Магический квадрат - C++
можно составить магический квадрат с первых 36 простых чисел? (сумма элементов которой в каждой срок, в каждом столбцы и по каждой...

Магический квадрат - C++
прошу помочь в такой схеме решения магического квадрата. #include &lt;iostream&gt; using namespace std; #include &lt;Windows.h&gt; #include...

Магический квадрат - C++
Задана матрица целых чисел. Определить является ли она магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и...

Магический квадрат - C++
с клавы вводиться число N. нужно сделать магический квадрат с размерами

Магический квадрат - C++
Опишу проблему, первая лаба по Си++, в прошлом году был просто Си, в Си немного понимаю, а теперь прога которую над сделать, ну не...

Магический квадрат - C++
Задача: Написать программу, которая определяет, явдяется ли заданная целочисленная квадратная матрица порядка N 'магическим квадратом',...

Магический квадрат - C++
Всем привет! Вот во вторник экзамен по программированию, препод дала задачки разобрать пять штук, для подготоки, помогите если не сложно. ...

Задача.Магический квадрат. - C++
Хочу решить задачу. http://atpp.vstu.edu.ru/cgi-bin/arh_problems.pl?id_prb=994. Подскажите по какому принципу действовать? С чего...

Магический квадрат матрицы - C++
Доброго времени суток. Помогите пож-ста. Условие с++: Квадратная матрица M, состоящая из целых чисел, вводится с клавиатуры....

Магический квадрат и другие задачи - C++
здравствуйте. Мне очень не обходима ваща помощь в следуших заданиях. 1. Дана целая квадратная матрица n-го порядка. Определить, является...

Задача с матрицей (магический квадрат) - C++
Дана матрица А целых чисел. Будет ли эта матрица магическим квадратом, тобто такой, у которой сумы элементов в каждой строке и столбце...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Trisha Ray
80 / 0 / 0
Регистрация: 01.02.2012
Сообщений: 93
05.03.2013, 23:51     Магический квадрат, предикаты #2
Привет! Можешь помочь?

По задаче надо разработать объектно-ориентированную программу для построения магического квадрата любого нечетного порядка из последовательных натуральных чисел по сиамскому методу в следующем варианте. Начальное значение 1 необходимо записать в клетку слева от центра квадрата. Заполнение следующих клеток последовательными числами должно происходить налево и вниз по диагонали. Если очередная клетка уже занята, то следующее число нужно записать на 2 клетки слева от предыдущего. Когда число оказывается за границей квадрата, его необходимо перенести внутрь квадрата, изменив заграничную координату на порядок квадрата. Результат построения магического квадрата по указанным правилам должен отображаться в поток стандартного вывода. Значение порядка квадрата должно передаваться программе аргументом командной строки. При разработке программы следует реализовать класс квадратной матрицы магического квадрата. Конструктор класса должен обеспечивать динамическое распределение памяти по защищенному адресу для двумерного массива, а также надо предусмотреть компонентные методы для его заполнения.
Ответ Создать тему
Опции темы

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