Софтинка

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Софтинка

Сообщение xqz_me » 21.11.2006 (Вт) 20:14

Ну вот, решил написать софтинку, которая
а) вычисляет любое выражение,
б) ищет корни любого уравнения трёмя довольно прогрессивными способами.

Немного подумав, я решил, что анализировать это выражение я запарюсь и тут мне пришла в голову идея, что не зря добрые люди придумали vbscript. Поскольку задачу необходимо было выполнить на c++, я всё писал на Microsoft Visual C++ 6.0. Также неплохо принять во внимание, что с++ я изучаю месяц и такая безобидная вещь как заменить в строке x на x+0.000001 у меня выглядит довольно страшно.

Сначала я сделал программу, которая находит трёмя способами решение заданного уравнения. Она работала отлично. Например, если в прикреплённом ниже коде заменить содержимое функции fu на выражение f(p), а в функции ff написать (f(p+0.000001)-f(p))/0.000001 (численная производная в точке p), то можно получить корни уравнения f(x) с заданной точностью.

Потом я прикрутил к этому всему возможность работы с произвольным выражением, и начались проблемы. Собственно принцип понятен: под каждое выражение генерится скрипит, запускается на исполнение, а я его результат возвращается в прогу. Но из-за не особо хорошего знания си, мне пришлось сделать это через файлы. Именно поэтому поисходят накладки типа
1+1=0
2+3=2
3+7=5
4-7=10
Кроме того, это ещё и медленно. Идеальный вариант был бы, если бы прога писала в скрипт указатель на некоторую переменную, а скрипт бы про помощи copy memory писал бы в неё ответ. Однако, как выяснилось, указатель - не есть абсолютный адрес оперативки, для каждого процесса свои адреса и работать это не будет (так мне Хакер объяснил). Слышал про pipe, но как его реализовать не знаю.

Хотел бы попросить прокомментировать код и идею, а тык же помощи в борьбе с этой проблемой...

Вот что получилось в итоге:
Вложения
solver.cpp.gif
Переименуйте в solver.cpp
(4.93 Кб) Скачиваний: 40

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Софтинка

Сообщение tyomitch » 21.11.2006 (Вт) 20:57

xqz_me писал(а):Кроме того, это ещё и медленно. Идеальный вариант был бы, если бы прога писала в скрипт указатель на некоторую переменную, а скрипт бы про помощи copy memory писал бы в неё ответ. Однако, как выяснилось, указатель - не есть абсолютный адрес оперативки, для каждого процесса свои адреса и работать это не будет (так мне Хакер объяснил).

Дык, а что мешает запускать скрипт в том же процессе? :-?
Изображение

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 21.11.2006 (Вт) 21:01

А поподробней можно?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.11.2006 (Вт) 21:07

Изображение

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 21.11.2006 (Вт) 21:25

Да... Долго ж мне это переваривать придётся. :(

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.11.2006 (Вт) 21:49

Угу.
Так вам, сишникам :-P
Изображение

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 21.11.2006 (Вт) 21:58

Я не сишник :D Я тока за vb. Просто я ж не виноват что его включили в программу обучения. :)

А можно теперь эту статью не поподробней, а наооборот, вкратце... Как рапустить скрипт внутри процесса? :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.11.2006 (Ср) 9:50

Если на VB, то при помощи ScriptControl-а.
Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 22.11.2006 (Ср) 16:47

А кто его мешает использовать в C++?
Изображение


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 66

    TopList