Ошибки в строковых функциях

Ошибки в строковых функциях - Сообщения

#1 Опубликовано: 28.11.2012 15:23:00
Rubidy

Rubidy

1 сообщений из 32 понравились пользователям.

Группа: User

Для методички делал примеры по разделам.
Ошибки можно посмотреть в прикреплённом файле.
Строки.sm (11 КиБ) скачан 35 раз(а).
#2 Опубликовано: 28.11.2012 19:20:56
Mike Kaganski

Mike Kaganski

184 сообщений из 434 понравились пользователям.

Группа: User

В последнем примере результат функции findstr - это матрица. Сравнивать её со скалярным нулём некорректно. К сожалению, из функций проверки типов есть только IsString. (Пожелание: ввести функцию типа typeOf(), возвращающую, например, числовую константу, обозначающую тип результата выражения: 1-число, 2-матрица, 3-строка, 4-система... Кроме того, функции типа findstr() могли бы в случае неудачи возвращать матрицу нулевого размера, что позволило бы просто использовать для контроля результата функцию length().)
Вы могли бы сделать примерно так:

---
Чего-то я наусложнял. Прямая проверка прекрасно работает:
[MATH lang=ENG](matrix(1,1)≡-1)=0[/MATH]
Не работает сравнение "больше/меньше" между разнородными значениями, но это только логично.
Безымянный.png
С уважением, Михаил Каганский
#3 Опубликовано: 29.11.2012 05:35:44
Rubidy

Rubidy

1 сообщений из 32 понравились пользователям.

Группа: User

Спасибо.

Значит локализовалась ошибка только со str2num для формул, содержащих запятую
Строки 2.sm (13 КиБ) скачан 31 раз(а).
#4 Опубликовано: 29.11.2012 10:07:58
Mikka

Mikka

36 сообщений из 206 понравились пользователям.

Группа: User

Провел маленькое исследование.
В общем если ничего не трогать в настройках, то например команды wfile и rfile работают, и содержимое файла такое :
"sys(sin(1);cos(1);2;1)"

Результат операции num2str такой:
"sys(sin(1),cos(1),2,1)"

При этомзамена разделителя аргументов в настройках никоим образом не влияет на num2str ..

З.ы. вот этот вариант не работает:

S:num2str(sys(sin(x),cos(x),2,1))
S="sys(sin(1),cos(1),2,1)"
wfile(S,test)
rfile(test)=#

а этот работает:

S:num2str(sys(sin(x),cos(x),2,1))
S="sys(sin(1),cos(1),2,1)"
S:strrep(S,",",";" )
wfile(S,test)
rfile(test)=#
Не официальный справочник http://sites.google.com/site/mikkhalichlab/ jabber конференция smath@conference.jabber.ru
  • Новые сообщения Новые сообщения
  • Нет новых сообщений Нет новых сообщений