|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.11.2009, 21:13 | #1 |
Пользователь
Регистрация: 19.11.2009
Сообщений: 15
|
Проблема с калькулятором для матриц на С
В общем проблема следующая:
1.Я могу написать обычный калькулятор для чисел , а вот для матриц нет т.к. : Для чисел я считал так : (данный пример без скобок , но в них проблем нет) для примера 2*4-3 Я сначала считаю 2*4 , и моя строка принимает вид 8-3 , далее считаю ее.Но для примера А*4-3 такой прикол не пойдет (А - квадратная заданная матрица, а числа я просто домножаю на единичную матрицу , и далее рассматриваю операции для матриц) но тут посчитав значение А*4 у меня проблема т.к. надо создать новую матрицу например В , и далее уже работать с ней. Понимаю что надо работать с malloc , но ее я плохо знаю (синтаксис понимаю , но не совсем пойму как ее правильно надо втулить сюда (не могли бы с этим помочь) ) |
30.11.2009, 21:18 | #2 | |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
Цитата:
Последний раз редактировалось NiCola999; 30.11.2009 в 21:27. |
|
30.11.2009, 21:20 | #3 |
Пользователь
Регистрация: 18.03.2009
Сообщений: 89
|
Ты хоть какой-нибудь код приведи, что-ли. А то сложно понять, как это все реализовано и как лучше доделывать.
|
30.11.2009, 21:46 | #4 |
Пользователь
Регистрация: 19.11.2009
Сообщений: 15
|
NiCola999 я умножаю на единичную для того , что бы потом пользоваться умножением для матриц.
По большому счету задача вообще не сделана т.к. есть пока (помимо всяких чисто декоративных вещей) только операции над матрицами,но если это поможет Код:
|
30.11.2009, 21:59 | #5 | |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
ну всё хорошо кроме
Код:
Цитата:
A*5*6*7*8*9*2*3*4*233*3*3333*3*33*3 33*3 итд то калькулятор будет довольно долго перемножать эти матрицы... почему нельзя сделать простые функции для операций типа матрица (операнд) число вот для примера умножение на число Код:
Последний раз редактировалось NiCola999; 30.11.2009 в 22:05. |
|
30.11.2009, 22:11 | #6 |
Пользователь
Регистрация: 18.03.2009
Сообщений: 89
|
alexobenikov, а кода самого калькулятора нет?
То есть, как я понимаю, пользователь вводит строку: "A*2+1" (Допустим, у нас есть матрица А и 1 - это единичная матрица). Надо это все посчитать. Тогда один из простых способов - рекурсивный вызов одной и той же функции. Например: matrix calculate(char* str) Она получает строку "А*2+1" и находит в ней оператор, который должен выполнится последним (здесть это "+"). Потом разбивает строку на две подстроки: "А*2" и "1" и вызывает сама себя, то есть типа такого: case '+': return calculate("A*2") + calculate("1"); допустим, calculate("1") вернет единичную матрицу, а calculate("A*2") пойдет тем же путем - найдет операцию умножения, и: case '*': return calculate("A") * calculate("2") Ну это условно. Тогда никакого геморроя с промежуточными значениями не будет - они посчитаются "на лету". P.S. А для матриц неплохо бы класс завести и операторы +, -, * перегрузить. Тогда код будет горазда читабельней. Но это уж как хочешь. |
01.12.2009, 18:28 | #7 | |
Пользователь
Регистрация: 19.11.2009
Сообщений: 15
|
Хорошо, давайте разберем пример ( 2*А-3*В-4*А ) *A
наше выражение станет calculatе ( calculate( 2*А ) - calculate( 3*В ) - calculate (4*A) ) * calculate ( A ) далее каждый из calculate тоже расподается до "простых" символов и.т.д. я примерно сделал набросок Код:
Цитата:
|
|
01.12.2009, 19:16 | #8 |
Пользователь
Регистрация: 18.03.2009
Сообщений: 89
|
Ошибка из-за того, что ты берешь адрес b, хотя это и есть указатель.
вместо return sum ( count(a,&a[i-1]) , count(&a[i+1] , &b ) ); неплохо бы return sum ( count(a, a + i - 1) , count(a + i + 1 , b ) ); |
01.12.2009, 19:24 | #9 | |
Пользователь
Регистрация: 18.03.2009
Сообщений: 89
|
Цитата:
|
|
03.12.2009, 18:37 | #10 |
Пользователь
Регистрация: 19.11.2009
Сообщений: 15
|
В общем написал свою прогу - но она не правильно считает - не подскажите где может быть загвоздка
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обработка Матриц(Упорядочивание Элементов,Вывод На Экран Матриц При Условии...) | timepoka | Помощь студентам | 8 | 01.07.2011 13:20 |
функции для формирования и обработки матриц | aka_faith | Общие вопросы C/C++ | 0 | 15.05.2009 01:40 |
Помогите с калькулятором | vishnya454 | Помощь студентам | 8 | 07.01.2009 10:35 |
Проблема з калькулятором | carbon383 | Помощь студентам | 22 | 02.11.2008 11:49 |
Проблемы с калькулятором | MAKEDON | Помощь студентам | 18 | 02.08.2008 14:30 |