Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2009, 20:40   #11
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Немного посмотрел:
- если у компилятора включить Range checking и Overflow checking, то в место AV покажет место где не правильные индексы у матриц.
- код кнопок создания матриц показал что не учтен или перепутан факт
что у грида сперва колонки а потом строки
Код:
aGrid.Cells[colInd, rowInd] := IntToStr(aMxArr[rowInd, colInd])
Подробности смотри в прикрепленном.
Правил только умножение и добавил второй вариант ( без массивов )
- смотри самую нижнюю кнопку
Вложения
Тип файла: zip Matricy.zip (4.2 Кб, 30 просмотров)
s.Creator вне форума Ответить с цитированием
Старый 11.12.2009, 12:42   #12
Manik
Пользователь
 
Аватар для Manik
 
Регистрация: 08.12.2009
Сообщений: 24
По умолчанию

Спасибо огромное!
  • про компилятор не знала,(вернее,не умела использовать ничего кроме тудо F9) спасибо!
  • про то, что у грида сначала столбцы, а потом строки я слышу впервые (удивительно ,как всё это работало раньше...)

буду изучать код, пока очень сложно привыкнуть к Вашей интерпретации.

Ещё раз спасибо)
я вырасту большим и умным)
Manik вне форума Ответить с цитированием
Старый 11.12.2009, 13:55   #13
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Цитата:
Сообщение от Manik Посмотреть сообщение
Спасибо огромное!
  • про компилятор не знала,(вернее,не умела использовать ничего кроме тудо F9) спасибо!
  • про то, что у грида сначала столбцы, а потом строки я слышу впервые (удивительно ,как всё это работало раньше...)

буду изучать код, пока очень сложно привыкнуть к Вашей интерпретации.

Ещё раз спасибо)
Про настройки и отладчик Delphi почитай обязательно - иногда одна точка остановки и несколько нажатий F7,F8 быстрее решают проблему, чем куча советов.

Про интерпретацию не совсем понял.
Если про именование переменных и компонентов, то лучше сразу привыкать давать осмысленные наименования ( для серьезного проекта я бы использовал еще более полные наименования ).
Представь что через пару лет тебе захотелось что то подправить или взять в другой проект - открываешь, а там Grid1, Grid26, m, i ... придется
день потрать чтоб вспомнить. А если куча проектов?
Да и при самом написании ( в данном случае например ) сразу видно куда ставится индекс на столбец и с какой матрицей работаем.
Если про сам алгоритм и использование функций. Так функции для того и нужны, чтоб не писать дважды одно и тоже.
У Тебя при каждом действии перевод из Грида в массив и обратно - написала 2 функции и вставляй во все обработчики кнопок.

Будут вопросы пиши - можно в личку.
s.Creator вне форума Ответить с цитированием
Старый 11.12.2009, 14:20   #14
Manik
Пользователь
 
Аватар для Manik
 
Регистрация: 08.12.2009
Сообщений: 24
По умолчанию

это первый более-менее серьёзный проект+первый опыт работы с приложениями.
сейчас да, вижу что действительно так так удобнее.
но когда в голове были все номера кнопочек, а вдруг вместо них непривычные сокращения, поначалу непросто сориентироваться)

вопросы будут точно)
ещё раз спасибо)
я вырасту большим и умным)
Manik вне форума Ответить с цитированием
Старый 11.12.2009, 23:29   #15
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

Не нужно называть переменные как "m1, n1, m2, n2, arr1, arr2, arr3" - можно ж запутаться...
Пока вы делаете программу, вы скорее всего ориентируетесь где кто, а вот сторонний человек точно запутается...
А спустя пару месяцев после "сдачи" проекта и вы станете запутываться...



Умножение матриц...

Во первых надо учесть, что AxB не равно BxA...
В первом посте умножалась матрица "arr2" на матрицу "arr1" - так и нужно было? (кстати почему б не назвать матрицы просто "A" и "B"? )

А во-вторых про размерности матриц: <A(nxm) x B(mxp) = C(nxp)> - нужно всего три переменные (пусть они так и будут называться: <n, m, p: Integer;> )



Как раз недавно делал умножение матриц...
Код:
 // Матрицу nxm умножить на матрицу mxp:

For i:=0 to n-1 Do
      Begin
      For j:=0 To p-1 Do
            Begin
            S:=0;
            For k:=0 To m-1 Do
                  Begin
                  S:=S+a[i, k]*b[k, j];
                  End;
            c[i, j]:=S;
            End;
      End;
Цитата:
не учтен или перепутан факт что у грида сперва колонки а потом строки
О, да... Я как-то тоже сначала не обратил внимания...
Смотрю в отладчике - а все матрицы транспонированные... о_О
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 21.12.2009, 15:16   #16
Manik
Пользователь
 
Аватар для Manik
 
Регистрация: 08.12.2009
Сообщений: 24
По умолчанию

Прошла куча времени,мне случилось невовремя заболеть, и внезапно случилась дата сдачи курсовой,
а половины функционала так и нет-я увлеклась наведением "красоты" и напрочь забыла

нужно:
-считать определитель матрицы
-замена\добавление нового столбца

прекрасно понимаю, что такие вопросы всем надоели, ибо хотят ни за что получить всё и сразу, поэтому надеюсь в процессе самой кой-чего понаписать.
и вообще,надеюсь больше такого не повторять,да)

во вложении моя же лаба
ну..мало ли)

буду рада любой критике и помощи.
заранее спасибо)
Вложения
Тип файла: rar kurs.rar (2.9 Кб, 17 просмотров)
я вырасту большим и умным)
Manik вне форума Ответить с цитированием
Старый 21.12.2009, 15:51   #17
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Молодец, уже легко смотрится код.

Давай по подробней о проблемах, я уже забыл про определитель и с заменой не понял. добавление
Код:
LeftMatrixGrid.ColCount := LeftMatrixGrid.ColCount + 1;
Или надо что-то другое?

Про критику ( скорее пожелания ) :
- обработчик LeftMatrixGridKeyPress можно для обоих использовать один.
для второй просто его же выбираешь в выпадающем списке ( там где OnKeyPress ) А для читаемости я б его переименовал ( MatrixsGridKeyPress ) и привязал к обоим.
- проблема с пустыми ячейками - если пустая то будет исключение. ( дойдут руки - займись ).
s.Creator вне форума Ответить с цитированием
Старый 21.12.2009, 16:10   #18
Manik
Пользователь
 
Аватар для Manik
 
Регистрация: 08.12.2009
Сообщений: 24
По умолчанию

Рада слышать)

про определитель сейчас штудирую форум..
нужно вставлять целый столбец...
как это реализовать и оформить я с трудом понимаю(
* во вложении собственно задание

про пустые ячейки: пока пытаюсь написать обработчик, чтобы выскакивал бокс "вы ввели не все ячейки" и курсор выделял пустые.

но пока главное-дописать основные куски)
Изображения
Тип файла: jpg PIC-0191.jpg (112.7 Кб, 126 просмотров)
я вырасту большим и умным)
Manik вне форума Ответить с цитированием
Старый 21.12.2009, 16:42   #19
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

А как же с пунктами 1 и 3 спец требований ?

Про замену/добавление - может под каждой матрицей кнопки добавить столбец заменить столбец или в меню.
Кстати для каждой матрицы свой пункт меню там подкпункты
загрузить, создать, добавить столбец, заменить столбец, сохранить.
и пункт "действия" ( умножить, сложить ... ) можно дублировать кнопками и результат показывать в модальном окне.

Про изменение размеров ничего в задании.
s.Creator вне форума Ответить с цитированием
Старый 21.12.2009, 16:51   #20
Manik
Пользователь
 
Аватар для Manik
 
Регистрация: 08.12.2009
Сообщений: 24
По умолчанию

а что с ними?
пункт 3 я откровенно не понимаю(
а первый я так понимаю, сводится к тому, что у меня должны быть тесты, которые я могу предоставить в файлике. Про ввод данных из файлов речи не было.

изменение размеров было сделано в тему того, что размер матрицы может быть любым.

про замену столбца:

как реальзовать для матрицы
1 2 3 замену 2 столбца например на 3 нуля?
4 5 6
7 8 9

я понимаю, что требудется именно это..
пока не совсем понимаю, как это сделать)
я вырасту большим и умным)

Последний раз редактировалось Manik; 21.12.2009 в 16:54.
Manik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Умножение матриц Alyonka_v Помощь студентам 2 18.08.2009 21:51
Ввод векторов и матриц, умножение матрицы на вектор и вычисление скалярного призведения двух векторов zverushka Помощь студентам 18 20.02.2009 15:25