Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.58/12: Рейтинг темы: голосов - 12, средняя оценка - 4.58
tzh_xyz
0 / 0 / 0
Регистрация: 29.08.2018
Сообщений: 22
1

Проблемы с созданием класса Матрица

05.02.2019, 18:47. Просмотров 2326. Ответов 9
Метки нет (Все метки)

Здравствуйте товарищи форумчане!
Пишу с просьбой о помощи с созданием класса. Делаю класс матрица с конструктором задающим кол-во срок и столбцов и заполняющим матрицу случайными числами. Также имеются методы вывода матрицы на экран, нахождения индексов максимального и минимального элементов, а также метод для нахождения суммы элементов заданной строки. Напечатал то, что смог, и в ответ был обложен трехэтажным матом от компилятора.

Сам код :

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
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
 
using namespace std;
 
class Matrix {
    private:
        int **x;
        int k,z;
        
    public: 
        Matrix();
        Martrix(int k1, int z1);
        int SumMtxLn(int k1, int z1);
        void Show();
        int MaxEmtIdx(int k1, int z1);
        int MinEmtIdx(int k1, int z1);
        ~Matrix();
};
 
Matrix::Matrix() 
{
    k = 0;
    z = 0;
    x = NULL;
}
 
Matrix::Matrix(int k1, int z1) 
{
    srand(time(NULL));
    k = k1;
    z = z1;
    int i, j;
    x = new int*[k];
    for(i=0;i<k;i++)
       x[i] = new int[z];
    for(i=0;i<k;i++)
       for(j=0;j<z;j++)
          x[i][j] = rand() % 27;
}
 
int Matrix::SumMtxLn(int k1, int z1)
{
    int i, j;
    int sum[k] = {0};
       for(j=0;j<z;j++)
       {
           sum[k] += x[k][j];
       }
    
             
}
 
void Matrix::Show()
{
    int i, j;
    for(i=0;i<k;i++)
    {
       for(j=0;j<z;j++)
       cout<<x[i][j]<<" ";
       cout<<endl;
    }
}    
 
int Matrix::MaxEmtIdx(int k1, int z1)
{   
    int i, j;   
    int maxei = x[0][0];
    int y, w;
    for(i=0;i<k;i++)
    {
        for(j=0;j<z;j++)
        
            if(x[i][j]>maxei)
            {
                w = x[i]
                y = x[j];
            }
   }
}
    
int Matrix::MinEmtIdx(int k1, int z1)
{
    int i, j;
    int minei = x[0][0];
    for(i=0;i<k;i++)
        for(j=0;j<z;j++)
        {
            if(x[i][j]<minei)
            {
                 = [i];
            }
        }
        
}
 
int main
{
    setlocale(LC_ALL, " ");
    int k9, a, b, c;
    cout<<"Введите номер строки";
    cout<<endl;
    cin>>k;
    
    Matrix Z(5,7);
    Z.Show;
    Z.MaxEmtIdx = a;
    Z.MinEmtIdx = b;
    Z.SumMtxLn(k, 7) = c;
    
    cout<<"Индекс максимального элемента : "<<a<<endl;
    cout<<"Индекс минимального элемента : "<<b<<endl;
    cout<<"Сумма элементов строки № : "<<k<<cendl;
    
    
    
return 0;
}
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2019, 18:47
Ответы с готовыми решениями:

Проблемы с созданием потока stringstream
Компилятор ругается на строку stringstream str Пишет: main.cpp:18:19: error: aggregate...

Проблема с созданием экземпляра класса
Добрый день! Есть файл &quot;File.cpp&quot;, в нём находится точка входа и класс &quot;Helper&quot;. Пытаюсь...

Проблемы с использованием класса
Задача Водителям не безразличен пробег их авто. Один водитель записал свои данные о нескольких...

Проблемы с шаблоном класса
Здравствуйте, помогите пожалуйста понять в чем ошибка, пытаюсь написать шаблон класса векторов, но...

Проблемы к обращению класса как к полю другого
Ребят подскажите, когда я обращаюсь к классу как к полю то выдаёт ошибку :&quot;Отсутствует оператор...

9
Verevkin
2486 / 1323 / 327
Регистрация: 12.03.2015
Сообщений: 7,127
05.02.2019, 18:53 2
Реализацию деструктора где потерял?
1
Azazel-San
Mental handicap
1083 / 541 / 154
Регистрация: 24.11.2015
Сообщений: 2,195
Завершенные тесты: 1
05.02.2019, 18:58 3
Цитата Сообщение от tzh_xyz Посмотреть сообщение
Напечатал то, что смог
Прежде чем печатать стоит пораскинуть мозгами)
Цитата Сообщение от Verevkin Посмотреть сообщение
Реализацию деструктора где потерял?
Не думаю что это единственная ошибка.
1
zss
Модератор
Эксперт С++
8622 / 7574 / 4683
Регистрация: 18.12.2011
Сообщений: 20,114
Завершенные тесты: 1
05.02.2019, 19:05 4
Лучший ответ Сообщение было отмечено tzh_xyz как решение

Решение

Столько ошибок сделать - это надо было постараться
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
class Matrix {
private:
    int **x;
    int k, z;
 
public:
    Matrix();
    Matrix(int k1, int z1);
    int SumMtxLn(int k);
    void Show();
    int MaxEmtIdx();
    int MinEmtIdx();
    ~Matrix();
};
Matrix::Matrix()
{
    k = 0;
    z = 0;
    x = NULL;
}
Matrix::~Matrix()
{
    for (int i = 0; i < k; i++)
        delete[] x[i];
    delete[] x;
}
 
Matrix::Matrix(int k1, int z1)
{
    srand((unsigned)time(NULL));
    k = k1;
    z = z1;
    int i, j;
    x = new int*[k];
    for (i = 0; i < k; i++)
        x[i] = new int[z];
    for (i = 0; i < k; i++)
        for (j = 0; j < z; j++)
            x[i][j] = rand() % 27;
}
 
int Matrix::SumMtxLn(int k)
{
    int sum = 0;
    for (int j = 0; j < z; j++)
    {
        sum += x[k][j];
    }
    return sum;
}
 
void Matrix::Show()
{
    int i, j;
    for (i = 0; i < k; i++)
    {
        for (j = 0; j < z; j++)
            cout << x[i][j] << " ";
        cout << endl;
    }
}
 
int Matrix::MaxEmtIdx()
{
    int maxei = x[0][0];
    for (int i = 0; i < k; i++)
    {
        for (int j = 0; j < z; j++)
            if (x[i][j] > maxei)
            {
                maxei = x[i][j];
            }
    }
    return maxei;
}
 
int Matrix::MinEmtIdx()
{
    int minei = x[0][0];
    for (int i = 0; i < k; i++)
        for (int j = 0; j < z; j++)
        {
            if (x[i][j] < minei)
            {
                minei= x[i][j];
            }
        }
    return minei;
}
 
int main()
{
    setlocale(LC_ALL, "Rus");
    int k;
    cout << "Введите номер строки" << endl;
    cin >> k;
 
    Matrix Z(5, 7);
    Z.Show();
    int a=Z.MaxEmtIdx();
    int b=Z.MinEmtIdx();
    int c=Z.SumMtxLn(k);
 
    cout << "Максимальный элемент : " << a << endl;
    cout << "Минимальноый элемент : " << b << endl;
    cout << "Сумма элементов строки № : " << k << "=" <<c<<endl;
    system("pause");
    return 0;
}
1
05.02.2019, 19:05
tzh_xyz
0 / 0 / 0
Регистрация: 29.08.2018
Сообщений: 22
05.02.2019, 19:06  [ТС] 5
Раскидывал как мог) просто не могу понять как правильно все описать. То есть как правильно оформить инициализацию методов в классе и их реализацию. И как видно по коду не понимаю как в методах поиска индексов присвоить значения индексов переменной.
0
Verevkin
2486 / 1323 / 327
Регистрация: 12.03.2015
Сообщений: 7,127
05.02.2019, 19:09 6
Реализацию деструктора где потерял?
Цитата Сообщение от Azazel-San Посмотреть сообщение
Не думаю что это единственная ошибка.
Просто в глаза бросилось.
Код
||=== Сборка: Debug in thread2399609 (compiler: GNU GCC Compiler) ===|
E:\Cpp Projects\thread2399609\main.cpp||In member function 'int Matrix::SumMtxLn(int, int)':|
E:\Cpp Projects\thread2399609\main.cpp|50|error: variable-sized object 'sum' may not be initialized|
E:\Cpp Projects\thread2399609\main.cpp|49|warning: unused variable 'i' [-Wunused-variable]|
E:\Cpp Projects\thread2399609\main.cpp|57|warning: no return statement in function returning non-void [-Wreturn-type]|
E:\Cpp Projects\thread2399609\main.cpp||In member function 'int Matrix::MaxEmtIdx(int, int)':|
E:\Cpp Projects\thread2399609\main.cpp|81|error: invalid conversion from 'int*' to 'int' [-fpermissive]|
E:\Cpp Projects\thread2399609\main.cpp|82|error: expected ';' before 'y'|
E:\Cpp Projects\thread2399609\main.cpp|74|warning: unused variable 'y' [-Wunused-variable]|
E:\Cpp Projects\thread2399609\main.cpp|85|warning: no return statement in function returning non-void [-Wreturn-type]|
E:\Cpp Projects\thread2399609\main.cpp||In member function 'int Matrix::MinEmtIdx(int, int)':|
E:\Cpp Projects\thread2399609\main.cpp|96|error: expected primary-expression before '=' token|
E:\Cpp Projects\thread2399609\main.cpp|96|error: expected '{' before ';' token|
E:\Cpp Projects\thread2399609\main.cpp||In member function 'int Matrix::MinEmtIdx(int, int)':|
E:\Cpp Projects\thread2399609\main.cpp|96|warning: lambda expressions only available with -std=c++11 or -std=gnu++11 [enabled by default]|
E:\Cpp Projects\thread2399609\main.cpp|100|warning: no return statement in function returning non-void [-Wreturn-type]|
E:\Cpp Projects\thread2399609\main.cpp|102|warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]|
E:\Cpp Projects\thread2399609\main.cpp|104|error: expected '}' before ';' token|
E:\Cpp Projects\thread2399609\main.cpp|104|error: invalid conversion from 'char*' to 'int' [-fpermissive]|
E:\Cpp Projects\thread2399609\main.cpp|106|error: 'cout' does not name a type|
E:\Cpp Projects\thread2399609\main.cpp|107|error: 'cout' does not name a type|
E:\Cpp Projects\thread2399609\main.cpp|108|error: 'cin' does not name a type|
E:\Cpp Projects\thread2399609\main.cpp|111|error: 'Z' does not name a type|
E:\Cpp Projects\thread2399609\main.cpp|112|error: 'Z' does not name a type|
E:\Cpp Projects\thread2399609\main.cpp|113|error: 'Z' does not name a type|
E:\Cpp Projects\thread2399609\main.cpp|114|error: 'Z' does not name a type|
E:\Cpp Projects\thread2399609\main.cpp|116|error: 'cout' does not name a type|
E:\Cpp Projects\thread2399609\main.cpp|117|error: 'cout' does not name a type|
E:\Cpp Projects\thread2399609\main.cpp|118|error: 'cout' does not name a type|
E:\Cpp Projects\thread2399609\main.cpp|122|error: expected unqualified-id before 'return'|
E:\Cpp Projects\thread2399609\main.cpp|123|error: expected declaration before '}' token|
||=== Build неудачно: 19 error(s), 7 warning(s) (0 minute(s), 0 second(s)) ===|
Добавлено через 2 минуты
Цитата Сообщение от tzh_xyz Посмотреть сообщение
понять как правильно все описать
Не надо так делать. Если не знаешь, что ты пишешь, то лучше начать с чего-то пропроще. Я по тексту вижу, что это писал чел, который С++ не знает.
1
Azazel-San
Mental handicap
1083 / 541 / 154
Регистрация: 24.11.2015
Сообщений: 2,195
Завершенные тесты: 1
05.02.2019, 19:11 7
Цитата Сообщение от tzh_xyz Посмотреть сообщение
#include <stdlib.h>
#include <conio.h>
#include <time.h>
Выкинуть, для С++ есть аналоги с префиксом с. Например #include <cstdlib>. conio.h - выкинуть и забыть навсегда. Вместо time.h -> chrono.
Цитата Сообщение от zss Посмотреть сообщение
C++
1
x = NULL;
Заменить на x = nullptr.

Так же в коде много лишних параметров.
Цитата Сообщение от tzh_xyz Посмотреть сообщение
C++
1
Z.MaxEmtIdx = a;
Это вообще шо?
1
tzh_xyz
0 / 0 / 0
Регистрация: 29.08.2018
Сообщений: 22
05.02.2019, 19:16  [ТС] 8
Сергей Сергеевич! Мои Вам почтение и благодарность! Какой я тупой... но обещаю исправиться! Единственная проблема он почему-то не хочет выдавать информацию при вводе номера последней строки(5)

Добавлено через 3 минуты
Azazel-San, это максимальный индекс элемента
0
zss
Модератор
Эксперт С++
8622 / 7574 / 4683
Регистрация: 18.12.2011
Сообщений: 20,114
Завершенные тесты: 1
06.02.2019, 05:54 9
Цитата Сообщение от tzh_xyz Посмотреть сообщение
номера последней строки(5)
Первая строка имеет номер 0,
последняя - 4, а не 5
0
tzh_xyz
0 / 0 / 0
Регистрация: 29.08.2018
Сообщений: 22
06.02.2019, 07:21  [ТС] 10
zss, Да, как только написал сразу вспомнил, понял насколько глупо выглядит вопрос, хотел убрать из ответа, но почему-то не смог отредактировать сообщение. Еще раз большое спасибо!
0
06.02.2019, 07:21
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2019, 07:21

Реализация класса матрица
День добрый форум! Хочу узнать ваше мнение по поводу того, как лучше реализовать класс матриц....

Создание класса Матрица
Не могу понять почему вылитает из программы вот код #include &lt;iostream&gt; using namespace std; ...

Проблемы с созданием класса
class Source { Source(String login,String password,String other) { ...


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

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

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