0 / 0 / 0
Регистрация: 29.08.2018
Сообщений: 22
1

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

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

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

Сам код :

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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2019, 18:47
Ответы с готовыми решениями:

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

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

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

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

9
Злостный нарушитель
9278 / 5019 / 1150
Регистрация: 12.03.2015
Сообщений: 23,660
05.02.2019, 18:53 2
Реализацию деструктора где потерял?
1
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
05.02.2019, 18:58 3
Цитата Сообщение от tzh_xyz Посмотреть сообщение
Напечатал то, что смог
Прежде чем печатать стоит пораскинуть мозгами)
Цитата Сообщение от Verevkin Посмотреть сообщение
Реализацию деструктора где потерял?
Не думаю что это единственная ошибка.
1
Модератор
Эксперт С++
13451 / 10716 / 6392
Регистрация: 18.12.2011
Сообщений: 28,602
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
0 / 0 / 0
Регистрация: 29.08.2018
Сообщений: 22
05.02.2019, 19:06  [ТС] 5
Раскидывал как мог) просто не могу понять как правильно все описать. То есть как правильно оформить инициализацию методов в классе и их реализацию. И как видно по коду не понимаю как в методах поиска индексов присвоить значения индексов переменной.
0
Злостный нарушитель
9278 / 5019 / 1150
Регистрация: 12.03.2015
Сообщений: 23,660
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
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
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
0 / 0 / 0
Регистрация: 29.08.2018
Сообщений: 22
05.02.2019, 19:16  [ТС] 8
Сергей Сергеевич! Мои Вам почтение и благодарность! Какой я тупой... но обещаю исправиться! Единственная проблема он почему-то не хочет выдавать информацию при вводе номера последней строки(5)

Добавлено через 3 минуты
Azazel-San, это максимальный индекс элемента
0
Модератор
Эксперт С++
13451 / 10716 / 6392
Регистрация: 18.12.2011
Сообщений: 28,602
06.02.2019, 05:54 9
Цитата Сообщение от tzh_xyz Посмотреть сообщение
номера последней строки(5)
Первая строка имеет номер 0,
последняя - 4, а не 5
0
0 / 0 / 0
Регистрация: 29.08.2018
Сообщений: 22
06.02.2019, 07:21  [ТС] 10
zss, Да, как только написал сразу вспомнил, понял насколько глупо выглядит вопрос, хотел убрать из ответа, но почему-то не смог отредактировать сообщение. Еще раз большое спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2019, 07:21
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru