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

Магический квадрат (через производный класс) - C++

Восстановить пароль Регистрация
 
kib
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 22
23.10.2010, 01:10     Магический квадрат (через производный класс) #1
Здравствуйте!
Знаю, что на форуме неоднократно рассматривалась проблема разработки программы для построения магического квадрата, но то, в чем я не могу разобраться, я здесь не нашла.
Необходимо разработать программу для построения магического квадрата любого нечетного порадка из последовательных натуральных числе по специальному методу. При этом нужно реализовать базовый класс квадратной матрицы и класс магического квадрата, производный от базового. Преподаватель дал план написания, не могу разобраться с тем, почему компилятор ругается (в 47 строке). Затрудняюсь с самим выводом через два аргумента len и tab[row][col]. Что нужно писать в printf ("%...", len, tab[row][col])? Видимо, я не совсем понимаю суть введенного цикла в int Magic::maxlen(), а именно, что он меняет в квадратной матрице, которую мы до этого заполнили нулями. В закомментированном отрывке void Magic::magodd() организую алгоритм построения, это по силам.
Вот то, что удалось написать:
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
86
87
#include <stdio.h>
#include <stdlib.h>
class Matrix
{
   protected:
      unsigned **tab; //указатель на двумерный массив беззнаковых чисел, содержащий матрицу магического квадрата
      int row; //строки матрицы
      int col; //столбцы матрицы
   public:
      Matrix (int, int); //создаю конструктор класса Matrix
      ~Matrix(); //создаю деструктор Matrix
};
Matrix::Matrix (int r, int c) 
{
   int i;
   row = r;
   col = c;
   tab = new unsigned*[row]; //Распределаю память под 1-мерный массив на беззнаковые целые размером row по адресу tab
   for (i = 0; i < row; i++)
      tab[i] = new unsigned[row];
}
//Уничтожаю объекты класса Matrix с помощью деструктора
Matrix::~Matrix() 
{
   int i;
   for (i = 0; i < row; i++)
   delete[]tab[i];
   delete[]tab;
}
//Создание класса, производного от Martix
class Magic:public Matrix
   {
      int degree; //порядок матрицы магического квадрата      
      public:
         Magic (int); //конструктор класса Magic
         //~Magic();
         void magodd(); //формирую магический квадрат нечетного порядка
         void print(); //вывод магического квадрата
   };
int maxlen();
Magic::Magic(int n):Matrix(n, n)
{
   degree = n;
   for (row = 0; row < degree; row++)
      for (col = 0; col < degree; col++)
         tab[row][col] = 0;
   int Magic::maxlen()
   {
      int val = degree*degree;
      int len = 0;
      while (val>0)
      {
         val/=10;
         len++;
      }
   return len;
   }
}
void Magic::magodd()
{
   /*int a;
   tab[row-1][col] = a;
   a == 1;*/
}
void Magic::print()
{
   int len = maxlen();     
   for (row = 0; row < degree; row++)
   {
      for (col = 0; col < degree; col++)
      printf ("%...", len, tab[row][col]);
         //printf ("%d\t",tab[row][col]);
         printf("\n");
   }
}
int main (int argc, char *argv[])
{
   if (argc >2)
   printf ("\nUncorrect input data.\n");
   else
   {
      Magic mag(atoi(argv[1]));    
      mag.magodd();
      mag.print();
      return 0;
   }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2010, 01:10     Магический квадрат (через производный класс)
Посмотрите здесь:

Магический квадрат C++
Магический квадрат C++
Есть производный класс и базовый; при чём производный использует только ЧАСТЬ ресурсов базового, правильно ли это? C++
Магический квадрат C++
C++ Магический квадрат
Магический квадрат C++
C++ Разработать производный от абстрактного класса Figure класс и класс, производный от производного
Магический квадрат C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
23.10.2010, 13:23     Магический квадрат (через производный класс) #2
Определение функций внутри других запрещено
kib
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 22
23.10.2010, 19:29  [ТС]     Магический квадрат (через производный класс) #3
спасибо большое! теперь все понятно!
Yandex
Объявления
23.10.2010, 19:29     Магический квадрат (через производный класс)
Ответ Создать тему
Опции темы

Текущее время: 20:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru