![]() |
|
Модераторы: bsa |
![]()
|
|
| Hohhi |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
Приветствую всех!
Делаю лабу по с++, казалось бы ерунда, а я не знаю, как выделять память под двумерный массив произвольной длины. Вот на всякий случай задание: Создать класс Matrix-матрица. Данный класс содержит указатель на float, количество строк и столбцов и переменную - код ошибки. Определить конструктор без параметров, конструктор с одним параметром – квадратная матрица и конструктор с двумя параметрами – прямоугольная матрица и др. Определить методы доступа: возвращение и определение значения элемента (i,j). Определить функции сложения и вычитания (матрицы с матрицей), умножение матрицы на матрицу. Определить умножение матрицы на число. Проверить работу этого класса. В случае нехватки памяти, несоответствия размерностей, выхода за пределы используемой памяти устанавливать код ошибки. Вот как примерно будет выглядеть класс:
Когда я пытаюсь сделать так,
или вот так
компилятор не пропускает меня по непонятной мне причине. Помогите разобраться Это сообщение отредактировал(а) Hohhi - 28.9.2008, 21:37 |
||||||
|
|||||||
| IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
Если хочешь создать матрицу n на m, то так
-------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
| Hohhi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
IKM2007, Большое спасибо за оперативность и за то, что с подсказкой попали в точку.
Ещё один вопрос. Что посоветуете почитать по поводу указателей на указатели, а то когда дело доходит до них я просто теряюсь, и даже не понимаю как рассуждать. Может какую то книжку, статью, ещё раз спасибо Это сообщение отредактировал(а) Hohhi - 28.9.2008, 21:29 |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
а какая разница? в плане просто надо рассматривать указатель на указатель именно как "указатель" на "что-то". И логика работы с указателем ну ничем не отличается от "стандартного". Ну а далее, уже работаете с этим "чем-то" (в даннном случае это "массив указателей").... нарисуйте квадратики, что на что указывает и все поймете.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Hohhi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
странно как-то, но прога у меня глючит. В чём моя ошибка?
Это сообщение отредактировал(а) Hohhi - 29.9.2008, 14:52 |
|||
|
||||
| Avaj |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 14.7.2008 Где: Владивосток. Репутация: 1 Всего: 3 |
||||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: нет Всего: 116 |
Мало того, она еще и не везде компилируется (ну, скажем, GCC отказывается компилировать программу, потому что case у тебя "перепрыгивает" инициализацию переменной)... Ну, а глюки - проверь:
|
|||
|
||||
| Hohhi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
volvo877, соласен, уже сам заметил, но дело даже не в этом, а в том, что при инициализации в элемент матрицы [0,0] записывается не понятное какое значение, а если прогу мучить подольше, то начинают пропадать буквы из надписей меню, выводимые cout, перед switch. Вобщем как мне кажется, что- то тут не то, а что именно не понимаюи где тоже, поэтому кинул весь код
Добавлено @ 17:28 volvo877, если инициализировать переменную не в case всё замечательно работает, но почему мне не понятно Это сообщение отредактировал(а) Hohhi - 29.9.2008, 17:45 |
|||
|
||||
| IKM2007 |
|
||||||||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
Можешь в конструкторе, когда создаешь матрицу, все элементы пронулить
У меня тоже твоя прога не компилится(Visual Studio 2005) из за case-ов.
-------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
||||||||
|
|||||||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: нет Всего: 116 |
Потому что
|
|||
|
||||
| Hohhi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
IKM2007, понял, видимо проблема действительно кроется в областях видимости, спасибо, работает
|
|||
|
||||
| Hohhi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
Доправил прогу, остался один минус, причём довольно таки серьёзный, после посылки матрицы в качестве аргумента в какой либо метод, она изменяется.
Доделанный код на всякий случай:
Пример. m1.Sum(m2); при этом в m1 сохраняется сумма верно, а в m2 находится странный набор чисел. |
|||
|
||||
| Hohhi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
причина ясна, при вызове m1.Sum(m2), для m2, вызывается дестуктор. Но почему мне не ясно.
|
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: нет Всего: 116 |
Сделай так:
|
|||
|
||||
| Hohhi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
volvo877, спасибо, во я тормоз, теперь лаба точно готова, спасибо
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |