Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

С++ TMatrix Ошибка - C++

10.06.2010, 17:23. Просмотров 683. Ответов 0
Метки нет (Все метки)

Помогите исправить ошибку в программе:

Задание:
Разработать класс TMatrix для работы с квадратной матрицей, содержащей целые числа. Матрица содержит не более 10 строк и столбцов. Класс должен содержать следующие элементы.
Поля (скрытые):
количество строк матрицы (или столбцов, раз она квадратная)
массив элементов матрицы размерностью 10*10
Методы:
конструктор по умолчанию, формирующий матрицу размером 10*10, заполненную нулями; конструктор, формирующий матрицу заданных размеров, заполненную нулями; конструктор, формирующий матрицу заданных размеров, заполненную случайными числами в заданном диапазоне (диапазон задается в виде двух значений – минимального и максимального); конструктор-копировщик
методы-функции для ввода значений матрицы с клавиатуры и для вывода матрицы на экран
метод-функция для транспонирования матрицы (т.е. строки сделать столбцами)
методы-функции для вычисления суммы элементов на главной и побочной диагоналях (главная диагональ проходит от левого верхнего угла к правому нижнему, а побочная – от правого верхнего к левому нижнему)

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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
#include <iostream>
 
/* Описание класса Tmatrix согласно задания */
 
#define MATRIXSIZE   10    // размер матрицы. Считаем что число
                                строк равно числу столбцов, поэтому задаем
                                     размерность одним значением
 
class TMatrix{
   public:
 
      // Конструктор по умолчанию
 
      TMatrix  ();
 
      // Конструктор формирующий матрицу заданного размера
 
      TMatrix  (int size);
 
      // Конструтор формирующий матрицу заданного
                  размера и заполняющий его случайными значениями
                      в заданном диапазоне или нулями
 
      TMatrix  (int size,int min,int max);
 
      // Конструктор создающий копию переданного ему класса TMatrix
 
      TMatrix  (TMatrix& m);
 
      // деструктор класса, можно переопределять
 
      virtual ~TMatrix();
 
      // метод для записи значения в заданую координату
 
      virtual void input(int col,int row,int value);
 
      // метод для чтения значения из указанной строки и колонки
 
      virtual int read(int col,int row);
 
      // метод для транспонирования матрицы
          (колонки меняются значениями со строками
 
      virtual void transparate();
 
      // метод для вычисления суммы главной диагонали
 
      virtual int summaindiag();
 
      // метод для вычисления суммы побочной диагонали
 
      virtual int summadddiag();
 
   private:
 
      // метод заполняет матрицу нулями
 
      virtual void fillzero();
 
      // метода заполняет матрицу случайными значениями в заданном диаппазоне
 
      virtual void randomfill(int min,int max);
 
   protected:
      int      *matrix;       // собсвенно сама матрица, двухмерная
                                                заданого размера
      int      matrixsize;    // для сохранения размера матрицы
      void init     (int size,int max,int min); // инициализация класса
};
 
// инициализация класса
 
void TMatrix::init     (int size,int max,int min){
   // создание матрицы заданного размера
 
   matrix=new int[size*size];
 
   // сохрание размера созданой матрицы
 
   matrixsize=size;
 
   // если значения max и min равны и равны нулю, то заполнить
                          матрицу нулями вызовом соответсвующего метода
 
   if ( max==min && max==0 && min==0 )
      fillzero();                        // заполнить нулями
   else
      randomfill(min,max);               // заполнить случайными значениями
                                              в указанном диаппазоне
}
 
// Конструктор по умолчанию, и он же формирующий матрицу
                 заданного размера
 
TMatrix::TMatrix()
{
   init (MATRIXSIZE,0,0); // инициализировать класс и заполнить матрицу нулями
}
 
// Конструктор формирующий матрицу заданного размера и заполняет ее нулями
 
TMatrix::TMatrix  (int size){
   init (size,0,0);
}
 
// Конструтор формирующий матрицу заданного размера и заполняющий
     его случайными значениями в заданном диапазоне или нулями
 
TMatrix::TMatrix  (int size,int min,int max){
 
   init (size,min,max);    // сформировать матрицу заданного размера
                 и заполнить случайными значениями в указанном диаппазоне
 
}
 
// Конструктор создающий копию переданного ему класса TMatrix
 
TMatrix::TMatrix  (TMatrix& m){
   init(m.matrixsize,0,0);
 
   for(int i=0;i<(matrixsize*matrixsize);i++){  // копируем значения
                                                     переданной матрицы
      matrix[i]=m.matrix[i];
   }
 
}
 
 
// метод для записи значения в заданую координату
 
void TMatrix::input(int col,int row,int value){
 
   matrix[(row*matrixsize)+col] = value;
 
}
 
// метод для чтения значения из указанной строки и колонки
 
int TMatrix::read(int col,int row){
 
   return matrix[(row*matrixsize)+col];
 
}
 
// метод для транспонирования матрицы (колонки меняются значениями
                                                 со строками
 
void TMatrix::transparate(){
 
   int   value;
   int   value2;
 
   for (int col=0;col<matrixsize;col++){
      for(int row=0;row<matrixsize;row++){
         value=read(row,col);
         value2=read(col,row);
         input(col,row,value);
         input(row,col,value2);
      }
   }
}
 
// метод для вычисления суммы главной диагонали
 
int TMatrix::summaindiag(){
   int sum=0;
 
   for(int i=0;i < matrixsize;i++){
      sum=sum+read(i,i);
   }
 
   return sum;
}
 
// метод для вычисления суммы побочной диагонали
 
int TMatrix::summadddiag(){
 
   int sum=0;
 
   for(int i=matrixsize-1;i>=0;i--){
      sum=sum+read(i,i);
   }
 
   return sum;
}
 
// Деструктор класса
 
TMatrix::~TMatrix(){
   delete matrix;
};
 
// метод заполняет матрицу нулями
 
void TMatrix::fillzero(){
 
   for(int i=0;i<(matrixsize*matrixsize);i++)
      matrix[i]=0;
}
 
// метода заполняет матрицу случайными значениями в заданном диаппазоне
 
void TMatrix::randomfill(int min,int max){
 
   int   rnd=0;      // для сохранения случайного числа
   int   count=0;    // общий счетчик значений
   int   row=0;      // текущая строка
   int   col=0;      // текущая колонка
 
   while(count < (matrixsize*matrixsize)){
 
      rnd=rand();        // присвоить случайное значение переменной
 
      // если значение в указанном диаппазоне то запомнить его в матрице
 
      if ( rnd > min && rnd < max ) {
         count++;       // увеличить общий счетчик
 
         // вызов метода для сохранения значения в соответсвующую ячейку
 
         input( col,row,rnd );
 
         // увеличить счетчик строк и колонок с контролем за размером
 
         col++;
 
         if ( col > (matrixsize-1) ){
            col=0;         // колонку сбрасываем на нулевую
            row++;         // переходим на следующую строку
         }
 
      }
 
   };
}
 
 
// запуск программы на выполнение
 
int main()
{
   TMatrix  matrix();                              // использование
             конструктора по умолчанию 10х10 и заполнить матрицу нцлями
 
   TMatrix  definedmatrix(20);                     // использование матрицы
                                           20х20 и заполнить матрицу нулями
 
   TMatrix  definedrandommatrix(40,38,4000);       // создаь матрицу 40х40
                         и заполнить значениями в диаппазоне от 38 до 4000
 
 
 
    return 0;
}
Добавлено через 4 часа 24 минуты
уже ненадо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2010, 17:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос С++ TMatrix Ошибка (C++):

Разработать класс Tmatrix - C++
Здравствуйте!Помогите сделать задачу Разработать класс Tmatrix для работы с двумерным массивом (матрицей), содержащим целые числа....

TPosition.cpp|49|error: declaration of 'TMatrix Turn' shadows a parameter - C++
class TVector { //------------------------------------------------------------------------------------------------- public :...

Ошибка Tmatrix, исправить код - Delphi
вот текст проги , нужна помощь с выделенным куском текста unit Unit4; interface uses Windows, Messages, SysUtils,...

Реализация методов SetItem GetItem класса TMatrix - Delphi
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids,...

IIS- asp ошибка: HTTP 500.100 - Внутренняя ошибка сервера - ошибка ASP Internet Information Services - C# ASP.NET
Привет! Конфигурация win2000pro sp2, стандартный IIS, IE 5. При попытке обратиться к сценарию(asp) получаю ошибку: &lt;пропуск&gt; ......

1C 8.x Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка записи! - 1С
Доброго всем времени суток! подскажи пожалуйста как исправить ошибку: Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2010, 17:23
Привет! Вот еще темы с ответами:

Ошибка при добавлении в файл. Ошибка 101: Ошибка записи на диск (Error 101: Disk write error). - Turbo Pascal
Здравствуйте, возникла проблема такого плана. Нужно произвести добавление записи в файл, но после успешного создания и чтения вылазиет...

Ошибка разбора XML/ Ошибка при вызове метода контекста (Прочитать) - 1С
1C 8.2 Документооборот КОРП 1.2 Текст ошибки {ОбщийМодуль.АвтозаполнениеШаблоновФайловКлиентСервер.Модуль(616)}: Ошибка при вызове...

ASP: Response.Redirect - не работает, ошибка `500 - Внутренняя ошибка сервера' - C# ASP.NET
Всем привет! Есть в ASP-сраничке такой код: Response.Redirect 'page1.asp?ReturnTo=page2.asp' Эта конструкция работала на IIS 4,...

Interbase Ошибка SQL запроса , в базе работает, а через IBQuery в Delphi ошибка - Delphi БД
В Combobox загружены имена организаций. Нужно выполнить запрос на вывод всех полей таблицы организаций при выборе имени в Combobox. При...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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