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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как добавить объект в середину массива, состоящего из полиморфных объектов? http://www.cyberforum.ru/cpp-beginners/thread180184.html
У меня возникла проблемка с добавлением. Привожу свою функцию добавления, может прояснит, где у меня ошибка. Проблема в том, что первый раз добавляет эдемент, а во второй программа перестает работать с надписью Null pointer asigment. void add(int &n, Person *a) { int i,j,k,m,flag=0; Person *b,*c; if(n==9 || n==0)cout<<"Nothing to add!"; else { cout<<"1) Person"<<endl<<"2)...
C++ Почему при инициализации данных программа работает быстрей? Почему при инициализации данных программа работает быстрей? http://www.cyberforum.ru/cpp-beginners/thread180177.html
C++ Определить, сколько цифр содержит число
5 задача во вложение помагите в моём быдло коде количество цифр длинного ряда выводит а какая цифра не то значение если есть другие варианты предлогайте только надо всё в майне сделать и только циклвми( cout << "введите число n\n"; cin >> n; system("cls"); int u,y,o; if(n<0) n*=-1; for(long int i=1,Tekuwaya,TekuwayaSave=0,maxCifra=0,maxCifra2=0,vhodCifra;n>0; ) {
Вычислить значения функций при различных значениях x C++
Помогите! Вычислить значения функций y(x) и z(x, y) при различных значениях x. Пожалуйста!)
C++ Тема "Структура" http://www.cyberforum.ru/cpp-beginners/thread180147.html
Помогите с задачей! • Задано множество объектов, каждый из которых описывается совокупностью признаков Р1, Р2, Р3, Р4, Р5, Р6 (таблица 1). Требуется: - выбрать объекты, признаки которых удовлетворяют условиям из таблицы 2; - для этих объектов распечатать признаки, указанные в таблице 3. • Указания Индивидуальные задания определяются таблицей 4. Параметры значений...
C++ Объясните ошибку. (cout in iostream) //intvars.cpp // работа с переменными целого типа #include <iostrem> using namespace std; int main() { int var1; // описание переменной var1 int var2; // описание переменной var2 var1 = 20; // присвоение значения переменной var1 var2 = var1 + 10; // присвоение значения переменной var2 подробнее

Показать сообщение отдельно
kib
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 22

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

23.10.2010, 01:10. Просмотров 724. Ответов 2
Метки (Все метки)

Здравствуйте!
Знаю, что на форуме неоднократно рассматривалась проблема разработки программы для построения магического квадрата, но то, в чем я не могу разобраться, я здесь не нашла.
Необходимо разработать программу для построения магического квадрата любого нечетного порадка из последовательных натуральных числе по специальному методу. При этом нужно реализовать базовый класс квадратной матрицы и класс магического квадрата, производный от базового. Преподаватель дал план написания, не могу разобраться с тем, почему компилятор ругается (в 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;
   }
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru