С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 2
Регистрация: 28.11.2012
Сообщений: 37

Класс матрица

12.06.2013, 09:50. Показов 1090. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Реализовать класс матрица, который содержит следующие методы: добавить строку к матрице, удалить строку из матрицы, получить и установить значение элемента матрицы, размер матрицы, считать матрицу из стандартного потока, записать матрицу в стандартный поток.

Добавлено через 24 минуты
вот немного сделал но чет не работает


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
#include "StdAfx.h"
#include "Matrix.h"
#include <iostream>
#include <locale>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
 
Matrix::Matrix(void) 
{}
 
Matrix::~Matrix(void)
{           
    for (int z=0; z<m; z++)
    delete[] arr[z];
    delete[] arr;
}
 
void Matrix::menu()
{
    setlocale (LC_ALL, "Russian");
    system("cls");
    puts("|-----------------МЕНЮ----------------|");
    puts("|-------------------------------------|");
    puts("|------- |1|- Создать матрицу    -----|");
    puts("|------- |2|- Вывести матрицу    -----|");
    puts("|------- |3|- Выход              -----|");
    puts("|-------------------------------------|");
    char ch;
    do
    {
        ch = _getch();
        switch(ch)
        {
        case '1': create(); menu();
        case '2': print(); menu();
        case '3': exit(0);
        }
    }
    while(strchr("123", ch));
}
 
void Matrix::create(void)
{
system("cls");
setlocale (LC_ALL, "Russian");
cout << "Введите количество строк: ";
cin >> n;
cout << "\nВведите количество столбцов: ";
cin >> m;
arr = new int *[n];
for (int i = 1; i < n+1; i++)
    {
        arr[i] = new int [m];
        for (int j=1; j < m+1; j++)
            {
                cout << "["<< i <<"]["<<j << "]" << " = " ;
                cin >> arr[i][j];
            }
    }
cout << endl << "Матрица создана!!!" << endl;
getch ();
}
 
void Matrix::print(void)
{
system("cls");
cout << "\nНаша матрицa ";
cout <<"\n";
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
cout << arr[i][j] << '\t';
cout <<"\n"<<"\n";
}
getch();
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.06.2013, 09:50
Ответы с готовыми решениями:

Определить базовый класс "Матрица" и класс-потомок "Треугольная матрица"
Нужно определить класс &quot;матрица&quot; с возможностью динамического выделения и освобождения памяти, наполнения матрицы, сохранения и чтения из...

Класс Матрица
Помогите пожалуйста, новичок в c++. Задание следующее: 3. Описать тип-объект MATRIX (матрица произвольной размерности M*N) и его методы:...

Класс Матрица
Вообщем задали мне в универе написать программу для работы с матрицами. Для этого нужно создать класс Матрица. Вообщем я только начал и...

8
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
12.06.2013, 11:14
Цитата Сообщение от tank100994 Посмотреть сообщение
вот немного сделал но чет не работает
в чем это выражается?

И что за смесь ввода/вывода
Цитата Сообщение от tank100994 Посмотреть сообщение
C++
1
2
3
puts("|-----------------МЕНЮ----------------|");
//...
cout << "Введите количество строк: ";
1
0 / 0 / 2
Регистрация: 28.11.2012
Сообщений: 37
12.06.2013, 11:17  [ТС]
смесь ввода вывода)) это исправим))
меня интересуют функции создания и распечатки матрицы
при выполнении ошибка глянь плз че я неправильно сделал...
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
12.06.2013, 11:21
Цитата Сообщение от tank100994 Посмотреть сообщение
C++
1
2
3
4
5
arr = new int *[n];
for (int i = 1; i < n+1; i++)
    {
        arr[i] = new int [m];
        for (int j=1; j < m+1; j++)
Выход за пределы. Индексация [0;n), а у Вас получается (0;n]
с m тоже самое
1
0 / 0 / 2
Регистрация: 28.11.2012
Сообщений: 37
12.06.2013, 11:25  [ТС]
как исправить?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
12.06.2013, 11:28
C++
1
for (int i = 0; i < n; i++)
и второй цикл так же:
C++
1
for (int j=0; j < m; j++)
1
0 / 0 / 2
Регистрация: 28.11.2012
Сообщений: 37
12.06.2013, 11:33  [ТС]
а типа убрать n+1 и m+1, а сделать просто n и m?

Добавлено через 25 секунд
а вы уже ответили))

Добавлено через 25 секунд
ну щя попробую))

Добавлено через 2 минуты
все работает блин аж стыдно както это курсовая поэтому возможно вопросы будут еще...
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
12.06.2013, 11:34
Цитата Сообщение от tank100994 Посмотреть сообщение
а типа убрать n+1 и m+1, а сделать просто n и m?
И еще нули не забыть вместо единичек в print же Вы именно так и сделали
1
0 / 0 / 2
Регистрация: 28.11.2012
Сообщений: 37
13.06.2013, 17:56  [ТС]
да я знаю ))) все исправил все работает))
невнимательность вот и все((

Добавлено через 43 минуты
можеш сделать добавление и удаление строк ? ато я щя транспонированием занят
не успеваю курсач на вторник нужно сделать(( первый курсач - это сложно

Добавлено через 22 часа 38 минут
там надо n увеличить или уменьшить на 1 и перевыделить память? но я незнаю как перевыделить эту память. помоги плз с этой функцией...

Добавлено через 6 часов 43 минуты
вот посмотри че неправильно плз:

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
void Matrix::Dstroka(void)
{
    system("cls");
    srand(time(NULL));
    setlocale (LC_ALL, "Russian");
    int* newLine = new int[m];
    int** arr1 = new int*[n+1];
    int pos;
    cin >> pos;
    for (int i = 0; i < (n+1); i++)
    {
        if (i < m+1)                //строки до нужного номера
            arr1[i] = arr[i];
        else if (i > pos)           //строки после нужного номера
            arr1[i] = arr[i - 1];
        else                    //запись новой строки
            arr1[i] = newLine;
    }
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
        {
            arr1[i][j] = rand()%100;
        }
    delete arr;
    cout << "Строка добавлена!!!";
    _getch ();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.06.2013, 17:56
Помогаю со студенческими работами здесь

Класс Матрица
Задание: создать класс - матрица, которая у private имеет указатель на данные действительного типа, количество строк и столбцов. Определить...

Класс матрица
Здравствуйте. У меня есть класс матрицы: #pragma once #ifndef classMatrix_h #define classMatrix_h #include...

Класс матрица
Доброго времени суток. Есть класс матрица с указателем и размерностями строк и столбцов. Проблема в том что не работает функция...

Класс Матрица
Помогите мне пожалуйста разобраться с классом реализующий матрицы. Я пытаюсь инициализировать матрицу и заполнить ее элементами но не...

с++ класс матрица
Вот из этого как то надо сделать наследование и полиморфизм, питался делать наследование не выходило по тому что писало что &quot;:&quot;...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru