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

Снова я со своей квадратной матрицей. - C++

Восстановить пароль Регистрация
 
wildfires
1 / 1 / 0
Регистрация: 09.01.2012
Сообщений: 114
26.03.2012, 22:10     Снова я со своей квадратной матрицей. #1
Вроде доделал программу, которая проверяет матрицу на латинский и магический квадрат:
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <iostream.h>
#include <conio.h>
#include <math.h>
 
using namespace std;
int **mass = 0;
int n,i,j;
 
//Вводимо матрицю
int     **Matrix(int n)
{int **matr = new int *[n];
for (int i = 0; i < n; ++i)
matr[i] = new int [n];
for(int i = 0; i < n; i++)
{for(int j = 0; j < n; j++)
{cout << "\n Vvedit` element ryadka " <<i+1 <<" stovbcya " <<j+1 <<" : ";
cin >> matr[i][j];}}
return matr;}
 
//перегляд матриці
void output(int n)
{for(int i = 0; i < n; i++)
{for(int j = 0; j < n; j++)
{cout << mass[i][j] << "\t";}
cout << endl;}}
 
//перевірка на латинський квадрат
void lat (void)
{
int lat=0;
int summa=n*(n+1)/2;
for(int i = 0; i < n; i++)
{for(int j = 0; j < n; j++)
{if (mass[i][j]>n||mass[i][j]<1)
lat=1;} }
//сума рядків
for(int i = 0; i<n; ++i){
int sumr = 0;
for(int j = 0; j<n; ++j){
sumr += mass[i][j];}
if (summa!=sumr) lat=1;}
//сума стовбчиків
for(int j = 0; j<n; ++j){
int sums = 0;
for(int i = 0; i<n; ++i){
sums += mass[i][j];}
if (summa!=sums) lat=1;}
if (lat==1)
cout<<"Kvadrat ne latunskiy";
else cout<<"Kvadrat latunskiy";
}
 
//перевірка на магічний квадрат
void mag (void)
{
int lat=0;
int summa=(n*(pow(n,2)+1))/2;
for(int i = 0; i < n; i++)
{for(int j = 0; j < n; j++)
{if (mass[i][j]<1)
lat=1;} }
//сума рядків
for(int i = 0; i<n; ++i){
int sumr = 0;
for(int j = 0; j<n; ++j){
sumr += mass[i][j];
} if (summa!=sumr) lat=1;}
//сума стовбчиків
for(int j = 0; j<n; ++j){
int sums = 0;
for(int i = 0; i<n; ++i){
sums += mass[i][j];
}
if (summa!=sums) lat=1;}
//сума головної діагоналі
int gdio=0;
for(i=0;i<n;i++)
gdio+= mass[i][i];
if (summa!=gdio) lat=1;
//сума побічної діагоналі
int ddio=0;
for(i=0;i<n;i++)
ddio+= mass[i][n-i-1];
if (summa!=ddio) lat=1;
//перевірка
if (lat==1)
cout<<"Kvadrat ne magichniy";
else cout<<"Kvadrat magichniy";
}
 
//головна программа
void main()
{int r;
{mass = Matrix(n);
while (1)
{clrscr();
cout<<"Vvedit` matrucy 1\nPereglyad matruci 2\nLat 3\nMag 4\nVuxid 4\n\nVvedit` regum \n";
cin>>r;
switch (r)
{case 1:{
{for (int i = 0; i <n; i++)
delete [] mass[i];
delete [] mass;}
cout << "\n Vvedit` rozmirnist` : ";
cin >> n;
Matrix(n);break;}
case 2:{ output(n);break;}
case 3:{ lat();break;}
case 4:{ mag();break;}
case 5:exit(1);}
getch();
}}}
Только работает с матрицами, размерность которых меньше 4*4, если ввожу матрицу 4*4, то появляется ошибка, в чем проблема ?
Снова я со своей квадратной матрицей.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2012, 22:10     Снова я со своей квадратной матрицей.
Посмотрите здесь:

C++ Граф задается своей матрицей смежностей; вывести на экран матрицу инцидентности графа.
Граф задается своей матрицей смежностей вывести на экране окружения каждой его вершины C++
C++ работа с квадратной матрицей.
C++ По заданной квадратной матрице из нулей и единиц определите, может ли данная матрица быть матрицей смежности простого неориентированного графа
C++ Программа с использованием функции. По заданной квадратной матрицей розмиолм 10х10 построить вектор длиной 19
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
26.03.2012, 22:13     Снова я со своей квадратной матрицей. #2
Явно напортачил с указателями или выделением памяти.
То ли за границы массива выходишь, то ли вообще, где-то указатель на невыделенную память указывает.
wildfires
1 / 1 / 0
Регистрация: 09.01.2012
Сообщений: 114
26.03.2012, 22:43  [ТС]     Снова я со своей квадратной матрицей. #3
Пересмотрел уже раз 20, не могу найти в чем проблема(
wildfires
1 / 1 / 0
Регистрация: 09.01.2012
Сообщений: 114
31.03.2012, 13:20  [ТС]     Снова я со своей квадратной матрицей. #4
Апну тему, так и не разобрался в чем проблема
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
31.03.2012, 13:31     Снова я со своей квадратной матрицей. #5
Код отформатирован ужасно.
Ошибка тут
Цитата Сообщение от wildfires Посмотреть сообщение
cin >> n;
Matrix(n);break;}
wildfires
1 / 1 / 0
Регистрация: 09.01.2012
Сообщений: 114
31.03.2012, 13:41  [ТС]     Снова я со своей квадратной матрицей. #6
soon, а в чем там проблема, я просто хотел, что бы при нажатие 1 мы создавали новую матрицу, при этом удаляли старую и могли выбрать новую размерность матрицы
TwiX
59 / 59 / 1
Регистрация: 27.10.2011
Сообщений: 189
31.03.2012, 13:56     Снова я со своей квадратной матрицей. #7
Цитата Сообщение от wildfires Посмотреть сообщение
а в чем там проблема
C++
1
2
cin >> n;
mass=Matrix(n);break;}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2012, 14:18     Снова я со своей квадратной матрицей.
Еще ссылки по теме:

Выполнить над квадратной матрицей А порядка n последовательность действий, указанную в задании C++
C++ работа с квадратной матрицей
Составить описание класса для работы с квадратной целочисленной матрицей C++

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,584
Записей в блоге: 17
31.03.2012, 14:18     Снова я со своей квадратной матрицей. #8
wildfires Ищи ошибки ставя брекпоинты и трассируя пошагово
Yandex
Объявления
31.03.2012, 14:18     Снова я со своей квадратной матрицей.
Ответ Создать тему
Опции темы

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