|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.11.2009, 18:57 | #1 |
Пользователь
Регистрация: 19.11.2009
Сообщений: 15
|
Вопрос по строкам / задача "матричный калькулятор"
Здравствуйте - подкинули мне тут задачку - написать "матричный калькулятор", то есть
Вводишь: 2 квадратные матрицы А и В , далее вводишь какое-нибудь произвольное выражение из серии 4*А+5*(В/А-8) Должно вывести: "ответную" матрицу Уже сделал все операции для матриц,так же сделал функцию перевода int в матричную форму,более менее придумал сам алгоритмом... Так вот решая столкнулся с проблемой - Как мне в строке определить что это за символ передо мной - число( int ) , или знак , или Буква? ( пока вижу только такой вариант - если а[i] не char А и не char В и не знак (пробел + - * / ( ) - то тогда инт - но я не знаю как эт оформить может if (все это) a[i]=perevod_int_v_matrix(a[i]) ) и второй вопрос правильный ли подход нахождения скобок: Код:
+ начинающий Последний раз редактировалось Sazary; 19.11.2009 в 20:35. |
19.11.2009, 19:29 | #2 |
Форумчанин
Регистрация: 01.09.2008
Сообщений: 178
|
Недавно обсуждался примерно такой же вопрос. Если точно не знаешь как будет выглядеть выражение, то лучше организовать посимвольную проверку выражения
Код:
Быть радикальным - значит понять вещь в её корне. К.Маркс
|
19.11.2009, 19:56 | #3 |
Пользователь
Регистрация: 19.11.2009
Сообщений: 15
|
Да , но мне не понятно как быть с приоритетом операции
ведь тут не 2 элемента и например если такой пример 2+2*2 - то должно вывести 6 , а выведет 8 , хотя... ладно тут я понял. А не могли бы вы написать функцию isalpha или isdigit |
19.11.2009, 20:29 | #4 | |
Форумчанин
Регистрация: 01.09.2008
Сообщений: 178
|
Цитата:
Могу посоветовать посмотреть реализацию калькулятора, которую предлагает Страуструп здесь.
Быть радикальным - значит понять вещь в её корне. К.Маркс
|
|
19.11.2009, 20:38 | #5 |
Пользователь
Регистрация: 19.11.2009
Сообщений: 15
|
Спасибо, а глупый вопрос - как они в реале будут выглядеть , видишь ли у нас препод запрещает пользоваться всевозможными функциями вплоть до strlen пока не напишешь такую же сам...
PS спасибо |
19.11.2009, 21:26 | #6 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
Код:
Последний раз редактировалось NiCola999; 19.11.2009 в 21:57. |
19.11.2009, 22:51 | #7 |
Пользователь
Регистрация: 19.11.2009
Сообщений: 15
|
но тогда вопрос - а как быть с двузначными числами?
или что писать if( isdigit(a[i-1])!=0 && isdigit(a[i])!=0) наше число = a[i-1]*10+a[i] или я что-то не понимаю? |
19.11.2009, 23:30 | #8 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
у тебя же выражение представляет собой строку. Строка это массив символов
например выражение "10+5=15" будет представлять собой массив '1','0','+','5','=','1','5' в твоем случае придется проверять каждый символ в цикле преобразовать символ в число можно функцией atoi(char); |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
Считывание строк из файла. перемещение по строкам "веред"-"назад" | Larkin. | Помощь студентам | 2 | 15.06.2009 17:58 |
"Калькулятор в Delphi" в теоретические аспекты??? | jenja | Общие вопросы Delphi | 1 | 25.05.2008 23:23 |
"Транспортная задача", "Поиск решения" | Perroman | Microsoft Office Excel | 3 | 12.12.2007 17:12 |