Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 09.08.2015
Сообщений: 8

Объявление матрицы в классе

28.08.2015, 13:32. Показов 1187. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Захотел объявить и инициализировать матрицу в классе, и вывести определенные строки и столбцы. Но я с объявлением не получилось.
Подскажите, что лишнее и чего нету нужного и возможно то что я упустил.
Мой код: Matrisa.h
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
#include <iostream>
using namespace std;
class Matrisa 
{
private : 
    int N;
    int ma;
    int Strok;
    int Stolb;
 
public: 
 
    Matrisa (){}
    Matrisa (int Nu,int strok_m,int stolb_m) {}
    Matrisa (int **M,int Nu=0) 
    {
        N=Nu;
        ma=**M;
        int **ma=new int *[Nu];
    for(int i=0;i<N;i++)
        ma[i]=new int [Nu];
 
    int p=0;
    for(int i=0;i<N;i++)
        for(int j=0;j<N;j++)
        ma[i][j]=p++;
    }
 
    
 
 
    void show(int **ma,int strok,int stolb)
    {
        for(int i=0;i<strok;i++)
        {
            for(int j=0;j<stolb;j++)
            {
                cout<<ma[i][j]<<" ";
            }
            cout<<endl;
        }
    }
};
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
#include <iostream>
#include <iomanip>
#include <cmath> 
#include "Matrisa.h"
using namespace std;
int main()
{
setlocale(0,"");
    int N,stolb,strok;
        cout<<"Введите размер матрицы (N) - ";
        cin>>N;
 
        cout<<"Введите количество строк, которые Вы хотите вывести. Примечание: не больше размера матриц (N) - ";
        cin>>strok;
 
        cout<<"Введите количество столбцов, которые Вы хотите вывести - ";
        cin>>stolb;
 
        Matrisa Ma(N,strok,stolb);
        Ma.show(strok,stolb);
    
    
 
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.08.2015, 13:32
Ответы с готовыми решениями:

Объявление константы в классе
Мне надо сделать класс в отдельном файле, я не использую main и не могу инициализировать константу вне класса, но мне надо ее использовать...

Объявление вектора в классе
Здравствуйте! объявляю структуру в h файле: struct Admin { char login_admin; char pass_admin; }; class Nev_potok_blok { ...

Объявление операторов в классе
Всем привет, объясните простым языком, когда используется ссылка(&amp;) и когда не используется. Вот например: Fraction&amp; operator +=...

2
 Аватар для _Valera_
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
28.08.2015, 13:53
Цитата Сообщение от JERIKO Посмотреть сообщение
void show(int **ma,int strok,int stolb)
принимает три параметра
Цитата Сообщение от JERIKO Посмотреть сообщение
Ma.show(strok,stolb);
Добавлено через 55 секунд
И если размеры уже передано в класс, то зачем передавать в функцию ?

Добавлено через 1 минуту
Цитата Сообщение от JERIKO Посмотреть сообщение
Matrisa Ma(N,strok,stolb);
вызвался второй конструктор, все поля остались не инициализированными

Добавлено через 8 минут
Цитата Сообщение от JERIKO Посмотреть сообщение
ma=**M;
* * * * int **ma=new int *[Nu];
????

Добавлено через 57 секунд
Цитата Сообщение от JERIKO Посмотреть сообщение
ma=**M;
?????

Добавлено через 1 минуту
Цитата Сообщение от JERIKO Посмотреть сообщение
cout<<"Введите размер матрицы (N) - ";
* * * * cin>>N;
в чем это интересно Вы размер матрицы измеряете?
1
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
28.08.2015, 15:51
JERIKO,
Matrix.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef MATRIX_H
#define MATRIX_H
class Matrix
{
    int **matrix;
    int rows, cols;
    void RandomFill();
    void KeyboardFill();
    public:
        Matrix(int rows, int cols);
        Matrix(const Matrix &m);
        ~Matrix();
        bool Fill();
        void Show() const;
};
#endif // MATRIX_H
Matrix.cpp
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
#include "Matrix.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
 
Matrix::Matrix(int r, int c) : rows(r), cols(c)
{
    matrix = new int*[r];
    for (int i = 0; i < r; ++i)
        matrix[i] = new int[c];
}
 
Matrix::Matrix(const Matrix &m)
{
    if (this != &m)
    {
        for (int i = 0; i < rows; ++i)
            delete[] matrix[i];
        delete[] matrix;
 
        rows = m.rows;
        cols = m.cols;
        matrix = new int*[rows];
        for (int i = 0; i < rows; ++i)
        {
            matrix[i] = new int[cols];
            for (int j = 0; j < cols; ++j)
                matrix[i][j] = m.matrix[i][j];
        }
    }
}
 
Matrix::~Matrix()
{
    for (int i = 0; i < rows; ++i)
        delete[] matrix[i];
    delete[] matrix;
}
 
void Matrix::RandomFill()
{
    srand(time(0));
    for (int i = 0; i < rows; ++i)
        for (int j = 0; j < cols; ++j)
            matrix[i][j] = rand() % 100;
}
 
void Matrix::KeyboardFill()
{
    std::cout << "Input matrix's values:" << std::endl;
    for (int i = 0; i < rows; ++i)
        for (int j = 0; j < cols; ++j)
        {
            std::cout << "Element[" << i+1 << "][" << j+1 << "]: ";
            std::cin >>  matrix[i][j];
        }
}
 
bool Matrix::Fill()
{
    int choice;
    std::cout << "1 - Random fill" << std::endl;
    std::cout << "2 - Fill from keyboard" << std::endl;
    std::cin >> choice;
    switch (choice)
    {
        case 1: RandomFill(); break;
        case 2: KeyboardFill(); break;
        default: return false;
    }
    return true;
}
 
void Matrix::Show() const
{
    std::cout << "Matrix:\n" << std::endl;
    for (int i = 0; i < rows; ++i)
    {   
        for (int j = 0; j < cols; ++j)
            std::cout << matrix[i][j] << ' ';
        std::cout << std::endl;
    }
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "Matrix.h"
#include <iostream>
 
int main()
{
    int rows, cols;
    std::cout << "Rows number: ";
    std::cin >> rows;
    std::cout << "Columns number: ";
    std::cin >> cols;
    Matrix m(rows, cols);
    if (m.Fill())
        m.Show();
    else
        std::cout << "Incorrect input!" << std::endl;
    
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.08.2015, 15:51
Помогаю со студенческими работами здесь

Непонятное объявление в классе
Здравствуйте! Помогите разобраться в следущем коде: typedef float (* ClassAFunc)(const float x, const float z);//откуда берется...

Объявление переменных в классе
#pragma once class streetdb { public: streetdb(void); ~streetdb(void); int admiral_1_137; private: };

объявление файловых потоков в классе
При объявлении потоков просто в функции все ок, объявляю поток в классе, компилятор ругается: &quot;error C4430: missing type specifier -...

Объявление константы и массива в классе
Задача: 1. объявить константу в созданном классе и сделать ее видимой для всех методов данного класса; 2. объявить массив, размер...

Объявление static переменной в классе
class Worker { private : struct WorkerItem { UnicodeString fio; UnicodeString depart; UnicodeString exp; ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru