Программы. Программирование. Языки программирования.

Сообщение №9310 от 23 ноября 2003 г. 14:46
Тема: Программы. Программирование. Языки программирования.


Отклики на это сообщение:

Здравствуйте. Нужна программа в Паскале для решения формул Стирлинга для интерполирования функции или хотябы пример решения. Можете присылать на Pprokop@Yandex.ru
25 ноября 2003 г. 19:42:



В Паскаль уж сам конверти :)
Си: a*=b Паскаль: a:=a*b
Си: a=b Паскаль: a:=b
Си: a+=b Паскаль: a:=a+b
Си: a==b Паскаль: a=b
Си: a!=b Паскаль: a<>b
Си: double Паскаль: float
Си: for(int i= 0; i < count; i++) Паскаль: for i:=0 to count do

Интерполирование по трем отстоящим друг от друга на d точкам:
f(0)=y0
f(d)=y1
f(2d)=y2

double f(double x)
{
double xd= x - d;
double x2d = xd - d; // x-2d
return (y0*xd*x2d - y1*2*x*x2d + y2*x*xd) / d / d;
}

Интерполирование по четырем отстоящим друг от друга на d точкам:
f(0)=y0
f(d)=y1
f(2d)=y2
f(3d)=y3

double f(double x)
{
double xd= x - d;
double x2d = xd - d; // x-2d
double x3d = x2d - d; // x-3d
return ( - y0*xd*x2d*x3d + 3.0*y1*x*x2d*x3d - 3.0*y2*x*xd*x3d + y3*x*xd*x2d) / d / d / d / 6.0;
}

Интерполирование по любому конечному числу несовпадающих точек:
f(x[i]) = y[i]
Максимальное число точек - N, текущее число точек - count
1. Заводим вспомогательный массив px размером N
2. Последовательно добавляем сколько-то точек в массивы x, y и px, вызывая эту функцию:

void add(double x_, double y_)
{
x[count]= x_;
y[count]= y_;
double k, p= 1.0;
for(int i= 0; i < count; i++)
{
k= x[i] - x_;
px[i]*= k;
p*= -k;
}
px[count]= p;
count++;
}

3. Собственно интерполяция для произвольного x:

double f(double x_)
{
double dx[N];
int i, j;
for(i= 0; i < count; i++)
dx[i]= x_ - x[i];
double mul, sum= 0.0;
for(i= 0; i < count; i++)
{
mul= 1.0;
for(j= 0; j < count; j++)
{
if (i != j)
mul*= dx[j];
}
sum+= mul*y[i]/px[i];
}
return sum;
}


Здравствуйте! Нудна программа (алгоритм программы), на любом языке программирования, для решения систем линейных алгебраических уравнений МЕТОДОМ ОКАЙМЛЕНИЯ.
30 ноября 2003 г. 14:57:


Пожалуйста,помогите!!!!
Нужна программа на Си или Паскале, разгадывающая японские кроссворды, или предоставляющая пользователю такую возможность!! Вопрос жизни и смерти!!


> Пожалуйста,помогите!!!!
> Нужна программа на Си или Паскале, разгадывающая японские кроссворды, или предоставляющая пользователю такую возможность!! Вопрос жизни и смерти!!

сколько заплатишь? :))


Помогите!!!!
Необходима программа вычисляющая периметр выпулой оболочки в первом квандранте(четверти)
15 декабря 2003 г. 15:35

--------------------------------------------------------------------------------
Re: периметр выпуклой оболочки
nikvic
> Необходима программа вычисляющая периметр выпулой оболочки
Периметр или оболочку, т.е. цикл крайних точек?
Когда-то делал сие...
16 декабря 14:07



Математики! Большая проблема, нужно написать программу, для єтого сижу разбираюсь с алгоритмом Гуда-Томаса, но насколько тупо єто описано в книге, что трудно что понять.
Огромная просьба, опишите работу данного алгоритма!
Заранее благодарен!
16 декабря 2003 г. 23:01:


ребята, если не трудно, помогите реализовать решение систем уравнений методом
Гауса на Амзи прологе.
Спасибо за помощь!
29 декабря 2003 г. 23:10:


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


> Купил инструкции именно к этой версии, а ?-ой ко мне не становится

какой?

> - мало ресурса. Прокопался в Интернете полчаса и не нашёл работающих ссылок. В магазинах у нас не продают ...

интерфейс мапла мало меняется. поэтому ставьте лучше последнюю 9-ю версию...

В принципе, у меня вроде есть все версии начиная с 5-ой. Если прижмет - пишите мне на @rambler.ru


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

заранее спасибо.

sask@pochtamt.ru
15 января 2004 г. 00:50:


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

> заранее спасибо.

> sask@pochtamt.ru
> 15 января 2004 г. 00:50:

а по другому она и не решается... разве что какие нибудь спец случаи


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

Ну, во-первых, не проще ли в любом поисковике набрать
travelling salesman problem
А во-вторых...
http://www.acm.org/calgo/contents/
Алгоритм 750
(и еще сотни подобных...)
Метод ветвей и границ...


> Здравствуйте! Нудна программа (алгоритм программы), на любом языке программирования, для решения систем линейных алгебраических уравнений МЕТОДОМ ОКАЙМЛЕНИЯ.
> 30 ноября 2003 г. 14:57:

Напиши полностью задачу
Program@bk.ru


Мне очень хочется иметь к ней некоторые дополнительные пакеты, но их не особенно найдёшь. Может у кого есть или кто знает, где можно достать.... Особенно интересуют следующие:
Database Access Kit, Digital Image Processing, Dynamic Visualizer, Experimental Data Analyst, Neural Networks, Signals and Systems, Time Series, Wavelet Explorer.
Буду очень благодарен.
(Москва)
06 апреля 2004 г. 20:55:



Пусть EXP - класс языков, принимаемых машинами Тьюринга с экспоненциальным ограничением на время работы. Очевидно, NP содержится в EXP. Пусть L принадлежит EXP\P. Тогда время работы люб. машины, распознающей L, необходимо явл. огранич. снизу нек. экспонентой.

Прошу высказать мнения по поводу истинности этого утверждения и способов его док-ва.
05 мая 2004 г. 18:19:



Недорога
Давай мне на мыло инфу по этому каймелю или ссылку сделаю за 1 день
ikronos@mail.ru


На моем сайте
http://www.uir2004.narod.ru
или
http://uir2004.narod.ru
представлены 5 методов:
Прямоугольников,
Средних,
Трапеций,
Симпсона,
3/8.
Интересуют абсолютно любые замечания и предложения.

Численное интегрирование функций
27 июня 2004 г. 16:15:


Что значит - за экспоненциальное время. За экспоненциальное время - значит за O(e^x). То есть lim(e^x/f(x))=const, где f(x) - время работы алгоритма. Константа может быть произвольной, но для каждого экспоненциального алгоритма она фиксирована. При это на константу налагается ограничение - она строго больше нуля. Таким образом, существует нижняя грань оценки времени работы экспоненциальных алгоритмов - e^0, то есть ноль - но она не достижима на множестве L.



> Что значит - за экспоненциальное время. За экспоненциальное время - значит за O(e^x). То есть lim(e^x/f(x))=const, где f(x) - время работы алгоритма. Константа может быть произвольной, но для каждого экспоненциального алгоритма она фиксирована. При это на константу налагается ограничение - она строго больше нуля. Таким образом, существует нижняя грань оценки времени работы экспоненциальных алгоритмов - e^0, то есть ноль - но она не достижима на множестве L.

e^0, то есть ноль.
Поздравляю!!!


Посмотрите ссылку:

Четыре занятия по ООП

Не уверен, что она вас устроит, но написано живо.


В цеху производят N видов продукции. На производство каждого вида тратится разное количество электроэнергии. Каждый день производят различные комбинации видов продукции с разным процентным содержанием этих видов в ежедневном объеме производства. Есть итоговый расход энергии за каждый день и процентное содержание каждого вида продукции.
Нужен алгоритм нахождения расхода энергии на единицу каждого вида продукции.
--
Андрей.
05 августа 2004 г. 10:17:



> В цеху производят N видов продукции. На производство каждого вида тратится разное количество электроэнергии. Каждый день производят различные комбинации видов продукции с разным процентным содержанием этих видов в ежедневном объеме производства. Есть итоговый расход энергии за каждый день и процентное содержание каждого вида продукции.
> Нужен алгоритм нахождения расхода энергии на единицу каждого вида продукции.
> --
> Андрей.
> 05 августа 2004 г. 10:17:

Можно составить и решить систему уравнений. Рассуждения типа:

На производство единицы продукции вида P1 требуется электроэнергии E1 квт*час.
На производство единицы продукции вида P2 требуется электроэнергии E2 квт*час.
. . . . . .
На производство единицы продукции вида PN требуется электроэнергии EN квт*час.

E1, E2, . . . , EN - неизвестные величины.

Допустим, что в первый день было произведено K11 единиц продукции вида P1, K12 единиц продукции вида P2, ... ,K1N единиц продукции вида PN, при этом было затрачено электроэнергии D1.

Можно написать уравнение:
K11*E1 + K12*E2 + . . . + K1N*EN = D1

Можно составить такое уравнение для второго дня
K21*E1 + K22*E2 + . . . + K2N*EN = D2

Ну и так далее. За N дней (я не думаю, что N большое число) вы наберете N уравнений, можно будет составить систему:

K11*E1 + K12*E2 + . . . + K1N*EN = D1
K21*E1 + K22*E2 + . . . + K2N*EN = D2
K31*E1 + K32*E2 + . . . + K3N*EN = D3
. . . . . . . . . . . . . . . . . . .
KN1*E1 + KN2*E2 + . . . + KNN*EN = DN

Ее надо будет поисследовать (невырожденность, совместность); если все нормально, то попробовать решить. Если нет - попробовать составить систему из уравнений для других дней.

Нужно учесть, что числа у вас неточные, могут проблемы быть. Несколько систем придется составить и решить, сравнить результаты, выбрать наиболее правдоподобные. Тут трудно какой-то рецепт дать.

PS. Странная задача какая-то. Обычно расход электроэнергии заранее известен, в технологии все учитывается с точностью до долей процента...


Это задача оптимального планирования производства при условии минимального расхода электричества?

Константин.

> В цеху производят N видов продукции. На производство каждого вида тратится разное количество электроэнергии. Каждый день производят различные комбинации видов продукции с разным процентным содержанием этих видов в ежедневном объеме производства. Есть итоговый расход энергии за каждый день и процентное содержание каждого вида продукции.
> Нужен алгоритм нахождения расхода энергии на единицу каждого вида продукции.
> --
> Андрей.
> 05 августа 2004 г. 10:17:



> В цеху производят N видов продукции. На производство каждого вида тратится разное количество электроэнергии. Каждый день производят различные комбинации видов продукции с разным процентным содержанием этих видов в ежедневном объеме производства. Есть итоговый расход энергии за каждый день и процентное содержание каждого вида продукции.
> Нужен алгоритм нахождения расхода энергии на единицу каждого вида продукции.

Например, методом наименьших квадратов (в данном случае это регрессионный анализ)
Положим Y[i] - расход энергии в i- тый день
X[i,j] - объем производства j-того вида продукции в i-тый день (единиц)
A[j] - расход энергии на единицу j-того вида продукции
e[i] - случайные отклонения
Y[i]=SUMi A[j]*X[i,j] + e[i]
Опуская выкладки (любой курс регрессионного анализа)
получим оценку для A
A=(Xt*X)^(-1)*Xt*Y
Если число дней равно числу видов продукции, то задача упрощается до решения системы линейных уравнений
X*A=Y
Но в этом случае мы беззащитны перед ошибками, и практически это не рекомендуется...


> Здравствуйте. Нужна программа в Паскале "Интерполирование функций по формулам Стирлинга"


Подскажите как написать программу-калькулятор, работающую с целыми числами/дробями и переменными. Требуется преобразовать исходное выражение к простейшему виду(вместе с переменными).
К примеру (x*x+2x+4)/(x*x-4) должно получится (x+2)/(x-2)
22 февраля 2005 г. 22:51

--------------------------------------------------------------------------------
Re: калькулятор Арх
В ответ на: калькулятор от hb 22 февраля 2005 г.:
> Подскажите как написать программу-калькулятор, работающую с целыми числами/дробями и переменными. Требуется преобразовать исходное выражение к простейшему виду(вместе с переменными).
> К примеру (x*x+2x+4)/(x*x-4) должно получится (x+2)/(x-2)
Я понял так, что нужен алгоритм, а текст зависит от языка программирования.
Так как даны примерные условия, то и совет примерный. Как Вы сами преобразовываете одно выражение в другое, так и программа будет делать. Машина сама не будет ни чего придумывать. Сложность алгоритма зависит от того, для кого пишете программу. Догадываюсь - не для себя. Тогда начинаем с ввода и проверки данных. Лучше задать шаблон, где переменными будут только числа. Как в тексте написано, так и в шаблоне записать. Останется только вводить переменные и читать ответы. Можно, например, ограничить вводимые числа тремя знаками /Len Q <4 /. В алгоритме придется предусмотреть все возможные варианты решения: полож и отриц значения, совпадения и различия корней и их знаков, мнимый, или равный нулю, корень. То есть, все действия, которые Вы сами делали бы, будет делать автомат. Не более того. Последний шаг - вывод данных в шаблон и переход к приему нового задания. Когда намучаетесь с алгоритмом, тогда и решите: стоит ли овчинка выделки? Вы в MsExcel хотите калькулятор соорудить?
23 февраля 00:24


На самом деле, Вам, в частности, нужна реализация алгоритма деления многочлена на многочлен с остатком. Это довольно легко: можно считать, что многочлены реализованы в виде массивов коэффициентов, после чего тривиально производится вычисление степени следующего члена частного и коэффициента при ней - ну, и так далее.)))


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

> Ну, во-первых, не проще ли в любом поисковике набрать
> travelling salesman problem
> А во-вторых...
> http://www.acm.org/calgo/contents/
> Алгоритм 750
> (и еще сотни подобных...)
> Метод ветвей и границ...


дык это то же самое что и задача китайского почтальона ???


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

> > Ну, во-первых, не проще ли в любом поисковике набрать
> > travelling salesman problem
> > А во-вторых...
> > http://www.acm.org/calgo/contents/
> > Алгоритм 750
> > (и еще сотни подобных...)
> > Метод ветвей и границ...

>
> дык это то же самое что и задача китайского почтальона ???

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


Господа, не знаю, сюда ли вопрос, или куда... Я не математик, возможно вопрос глупый или не совсем хорошо мною выражен. Прошу прощения.

В общем, есть набор из N целых чисел. Есть задача, расположить их в M рядов так, чтобы сумма чисел в рядах была не меньше некоторых заданных чисел для каждого ряда.
Пример:
Есть числа: 100,300,150,50,2000,900,500 Общая сумма - 4000
Надо расположить числа в 3 ряда так, что бы суммы чисел в рядах были: 1-й ряд - 1000, 2-й ряд - 2500, 3-й ряд – 300, т.е. общая сумма чисел была 3800
Это примерный вариант. Чисел может быть много. Рядов мало. Разброс чисел и сумм рядов может быть большой. Использовать можно не все числа. Главное, что бы составить ряды. Понятно, что задача может не иметь решения.

Какие существуют алгоритмы, модели, в каком мне направлении искать ответ?
Большое спасибо.



> Господа, не знаю, сюда ли вопрос, или куда... Я не математик, возможно вопрос глупый или не совсем хорошо мною выражен. Прошу прощения.

> В общем, есть набор из N целых чисел. Есть задача, расположить их в M рядов так, чтобы сумма чисел в рядах была не меньше некоторых заданных чисел для каждого ряда.
> Пример:
> Есть числа: 100,300,150,50,2000,900,500 Общая сумма - 4000
> Надо расположить числа в 3 ряда так, что бы суммы чисел в рядах были: 1-й ряд - 1000, 2-й ряд - 2500, 3-й ряд – 300, т.е. общая сумма чисел была 3800
> Это примерный вариант. Чисел может быть много. Рядов мало. Разброс чисел и сумм рядов может быть большой. Использовать можно не все числа. Главное, что бы составить ряды. Понятно, что задача может не иметь решения.

> Какие существуют алгоритмы, модели, в каком мне направлении искать ответ?
> Большое спасибо.

Предлагаю такой алгоритм:
1 сортируем массив NNN по убыванию.Определяем длину ряда целых чисел N
Пока n2 Если S1>=S2 AND S1>=S3 Then S1=S1-NNN(n):SS1=SS1+N(n):n=n+1 переходк шагу 2
3 Если S2>=S1 AND S2>=S3 Then S1=S1-NNN(n):SS1=SS1+N(n):n=n+1 переходк шагу 2
4 Если S3>=S1 AND S3>=S2 Then S1=S1-NNN(n):SS1=SS1+N(n):n=n+1 переходк шагу 2
Конец цикла.
Смысл таков: в каком массиве больше сумма нужна, тому массиву отдаем очередное наибольшее целое число. Нужную сумму пересчитываем в том массиве, в котором добавили очередное число.


> Господа, не знаю, сюда ли вопрос, или куда... Я не математик, возможно вопрос глупый или не совсем хорошо мною выражен. Прошу прощения.

> В общем, есть набор из N целых чисел. Есть задача, расположить их в M рядов так, чтобы сумма чисел в рядах была не меньше некоторых заданных чисел для каждого ряда.
> Пример:
> Есть числа: 100,300,150,50,2000,900,500 Общая сумма - 4000
> Надо расположить числа в 3 ряда так, что бы суммы чисел в рядах были: 1-й ряд - 1000, 2-й ряд - 2500, 3-й ряд – 300, т.е. общая сумма чисел была 3800
> Это примерный вариант. Чисел может быть много. Рядов мало. Разброс чисел и сумм рядов может быть большой. Использовать можно не все числа. Главное, что бы составить ряды. Понятно, что задача может не иметь решения.

> Какие существуют алгоритмы, модели, в каком мне направлении искать ответ?
> Большое спасибо.

Эта задача похожа на задачу перевозки камней: есть камни разного веса, есть грузовики фиксированной грузоподъемности. Требуется перевезти камни за минимальное количество рейсов. Для этого нужно оптимальным образом разложить камни, т.е. так чтобы грузовики были максимально загружены...

Эта задача, наверное относится к теории, которая разные названия имеет, как то: вариационный анализ, методы оптимального управления, методы оптимизации...


Не знаю, где лучше задать этот вопрос.
Несколько лет назад я написал программу на Turbo Pascal+Windows98
для расчета индукции магнита, которая выдает результат в виде
графика с текстом на русском языке.
Сейчас при переходе на Windows XP обнаружил, что эта программа
вместо русских букв выдает "каракатицы".
В Windows XP нет команды, которая была в Windows 98. :
mode con codepage prepare=((866) C:\WIN98\COMMAND\ega3.cpi)
mode con codepage select=866
А старый Turbo Pascal показывает "каракатицы" в кодировке 1251.
Помогите решить эту проблему.
Телефона Била Гейца я тоже не знаю.:-)
10 марта 2006 г. 09:18:



> Не знаю, где лучше задать этот вопрос.
> Несколько лет назад я написал программу на Turbo Pascal+Windows98
> для расчета индукции магнита, которая выдает результат в виде
> графика с текстом на русском языке.
> Сейчас при переходе на Windows XP обнаружил, что эта программа
> вместо русских букв выдает "каракатицы".
> В Windows XP нет команды, которая была в Windows 98. :
> mode con codepage prepare=((866) C:\WIN98\COMMAND\ega3.cpi)
> mode con codepage select=866
> А старый Turbo Pascal показывает "каракатицы" в кодировке 1251.
> Помогите решить эту проблему.
> Телефона Била Гейца я тоже не знаю.:-)
> 10 марта 2006 г. 09:18:


А ты не работай в полноэкранном режиме. В окне буквы должны корректно отображаться.


> А ты не работай в полноэкранном режиме. В окне буквы должны корректно отображаться.

Не получается.
1.Я устанавливаю в свойствах ехе-файла оконный режим. Но программа
запускается в полноэкранном.
2.И почему Вы так решили? Ведь ХР работает в 1251 кодировке в обоих
режимах. Как "прикрутить" к ней 866 ?



Turbo Pascal+Windows XP


Не знаю, где лучше задать этот вопрос.
Несколько лет назад я написал программу на Turbo Pascal+Windows98
для расчета индукции магнита, которая выдает результат в виде
графика с текстом на русском языке.
Сейчас при переходе на Windows XP обнаружил, что эта программа
вместо русских букв выдает "каракатицы".
В Windows XP нет команды, которая была в Windows 98. :
mode con codepage prepare=((866) C:\WIN98\COMMAND\ega3.cpi)
mode con codepage select=866
А старый Turbo Pascal показывает "каракатицы" в кодировке 1251.
Помогите решить эту проблему.
Телефона Била Гейца я тоже не знаю.:-)
10 марта 2006 г. 14:25

--------------------------------------------------------------------------------
Re: Turbo Pascal+Windows XP Correct 10 марта 17:52
В ответ на: Turbo Pascal+Windows XP от AVG , 10 марта 2006 г.:
А Вы мне случайно не поможете? Мне нужно узнать алгоритм работы тестирующей программы. В базе данных вопросы и по пять ответов на каждый. Правильный только один.Хотелось бы знать,- какой.

--------------------------------------------------------------------------------
Re: Turbo Pascal+Windows XP correct 10 марта 17:54
В ответ на Re: Turbo Pascal+Windows XP от Correct , 10 марта 2006 г.:
> А Вы мне случайно не поможете? Мне нужно узнать алгоритм работы тестирующей программы. В базе данных вопросы и по пять ответов на каждый. Правильный только один.Хотелось бы знать,- какой.
E-mail: correct@mail.mipt.ru



> > А ты не работай в полноэкранном режиме. В окне буквы должны корректно отображаться.

> Не получается.
> 1.Я устанавливаю в свойствах ехе-файла оконный режим. Но программа
> запускается в полноэкранном.
> 2.И почему Вы так решили? Ведь ХР работает в 1251 кодировке в обоих
> режимах. Как "прикрутить" к ней 866 ?

Alt-Enter должен спасти. ;)

А почему - не знаю, всегда так работаю и получается.


> Не знаю, где лучше задать этот вопрос.
> Несколько лет назад я написал программу на Turbo Pascal+Windows98
> для расчета индукции магнита, которая выдает результат в виде
> графика с текстом на русском языке.
> Сейчас при переходе на Windows XP обнаружил, что эта программа
> вместо русских букв выдает "каракатицы".
> В Windows XP нет команды, которая была в Windows 98. :
> mode con codepage prepare=((866) C:\WIN98\COMMAND\ega3.cpi)
> mode con codepage select=866
> А старый Turbo Pascal показывает "каракатицы" в кодировке 1251.
> Помогите решить эту проблему.
> Телефона Била Гейца я тоже не знаю.:-)
> 10 марта 2006 г. 09:18:

Была у меня такая фигня. Перепиши русский текст латиницей (ручками) и не мучайся, быстрей будет. Прочитать что там раньше было написано можно из коммандера, жмешь F3, там есть опция - читать в кодировке DOS.



См. сайт www.nantipov.narod.ru

Книги и софт от проф. Аладьева


> Turbo Pascal+Windows XP

>
> Не знаю, где лучше задать этот вопрос.
> Несколько лет назад я написал программу на Turbo Pascal+Windows98
> для расчета индукции магнита, которая выдает результат в виде
> графика с текстом на русском языке.
> Сейчас при переходе на Windows XP обнаружил, что эта программа
> вместо русских букв выдает "каракатицы".
> В Windows XP нет команды, которая была в Windows 98. :
> mode con codepage prepare=((866) C:\WIN98\COMMAND\ega3.cpi)
> mode con codepage select=866
> А старый Turbo Pascal показывает "каракатицы" в кодировке 1251.
> Помогите решить эту проблему.
> Телефона Била Гейца я тоже не знаю.:-)
> 10 марта 2006 г. 14:25

Била Гейц для WinXP советует попробовать вот такую команду:
chcp.com 866
chcp.com дожен быть в каталоге с Windows в SYSTEM32 директории.


> Не знаю, где лучше задать этот вопрос.
> Несколько лет назад я написал программу на Turbo Pascal+Windows98
> для расчета индукции магнита, которая выдает результат в виде
> графика с текстом на русском языке.
> Сейчас при переходе на Windows XP обнаружил, что эта программа
> вместо русских букв выдает "каракатицы".
> В Windows XP нет команды, которая была в Windows 98. :
> mode con codepage prepare=((866) C:\WIN98\COMMAND\ega3.cpi)
> mode con codepage select=866
> А старый Turbo Pascal показывает "каракатицы" в кодировке 1251.
> Помогите решить эту проблему.
> Телефона Била Гейца я тоже не знаю.:-)
> 10 марта 2006 г. 09:18:


Била Гейц для WinXP советует попробовать вот такую команду:
chcp.com 866
Системный файл chcp.com можно найти в каталоге Windows в SYSTEM32 директории.
То есть открыть консоль (cmd),
набрать там C:\Windows\SYSTEM32\chcp.com 866
И запустить эту программу.
А вообще, если есть тексты программы, то можно все русские сообщения перекодировать в 1251 и пересобрать программу.
Проще всего это делать в Far'e.


Помогите кто-нить. Срочно надо к понедельнику программы!!!!!
1. Вручную преобразовать десятичное число в 16-ричную и двоичную системы счисления а) 3852 б) 72h C7h
2. Дана строка из четырех десятичных цифр. Если вторая и четвертая цифры различны, то поменять их местами, иначе - заменить первую и третью цифры на соответствующие строчные буквы('0' - на 'а','1' - на'b' и т.д.). Указать набор тестов. Проанализировать код одной из команд условного перехода.
Отчет должен содержать: текст программы с комментариями, набор тестов, результат анализа кода одной из команд условного перехода.
3. Даны массивы А и В из 16 слов. Если элемент А меньше соответствующего элемента массива В (числа беззнаковые), то обменять эти элементы местами. Сосчитать количество обменов. В массив С поместить адреса(смещения) этих элементов. Отчет должен содержать: текст программы с комментариями, входные и выходные значения массивов.
Если сможете решить, то пишите на почту:
moskva1987@mail.ru


> Помогите кто-нить. Срочно надо к понедельнику программы!!!!!
> 1. Вручную преобразовать десятичное число в 16-ричную и двоичную системы счисления а) 3852 б) 72h C7h
3852- 0
1926- 0
963-- 1
481-- 1
240-- 0
120-- 0
60--- 0
30--- 0
15--- 1
7---- 1
3---- 1
1---- 1
В итоге d 3852 = b 111100001100
h 72 = 7*16+2 = d 114 = b 1110010
h c7 = 12*16+7 = d 199 = b 11000111

> 2. Дана строка из четырех десятичных цифр. Если вторая и четвертая цифры различны, то поменять их местами, иначе - заменить первую и третью цифры на соответствующие строчные буквы('0' - на 'а','1' - на'b' и т.д.). Указать набор тестов. Проанализировать код одной из команд условного перехода.

Алгоритм нужен?
Допустим, строка записана по адресам 1000-1003
Пересылаем в регистр СХ код цифры из адреса 1000
Пересылаем в регистр АХ код цифры из адреса 1002
Вычитаем АХ=СХ-АХ
*Если нет 0 (JNZ 05) переход на пять шагов ниже
Пересылаем в регистр АХ код цифры из адреса 1002
Пересылаем из регистра АХ код цифры в адрес 1000
Пересылаем в регистр АХ код цифры из регистра СХ
Пересылаем из регистра АХ код цифры в адрес 1002
**Пересылаем в регистр АХ код цифры из адреса 1000
Прибавляем 16 к коду в регистре АХ, получим код соотв.буквы
Пересылаем в адрес 1000 код буквы из регистра АХ
Пересылаем в регистр АХ код цифры из адреса 1003
Прибавляем 16 к коду в регистре АХ, получим код соотв.буквы
Пересылаем в адрес 1003 код буквы из регистра АХ
End

> Отчет должен содержать: текст программы с комментариями, набор тестов, результат анализа кода одной из команд условного перехода.
> 3. Даны массивы А и В из 16 слов. Если элемент А меньше соответствующего элемента массива В (числа беззнаковые), то обменять эти элементы местами. Сосчитать количество обменов. В массив С поместить адреса(смещения) этих элементов. Отчет должен содержать: текст программы с комментариями, входные и выходные значения массивов.
> Если сможете решить, то пишите на почту:
> moskva1987@mail.ru


Во второй и третьей задачах надо написать программу с комментарием каждой строки программы! Ты мне сможешь помочь,если да, то напиши пожалуйста текст проги. Заранее спасибо


Помогите пожалйста написать программы, срочно надо сдать 17 апреля, а я без понятия как делать!!!!!
2. Дана строка из четырех десятичных цифр. Если вторая и четвертая цифры различны, то поменять их местами, иначе - заменить первую и третью цифры на соответствующие строчные буквы('0' - на 'а','1' - на'b' и т.д.). Указать набор тестов. Проанализировать код одной из команд условного перехода.
Отчет должен содержать: текст программы с комментариями, набор тестов, результат анализа кода одной из команд условного перехода.
3. Даны массивы А и В из 16 слов. Если элемент А меньше соответствующего элемента массива В (числа беззнаковые), то обменять эти элементы местами. Сосчитать количество обменов. В массив С поместить адреса(смещения) этих элементов. Отчет должен содержать: текст программы с комментариями, входные и выходные значения массивов.
Если сможете решить, то пишите на почту:
moskva1987@mail.ru


> Помогите пожалуйста написать программы, срочно надо сделать, а я без понятия как!!!!!
2. Дана строка из четырех десятичных цифр. Если вторая и четвертая цифры различны, то поменять их местами, иначе - заменить первую и третью цифры на соответствующие строчные буквы('0' - на 'а','1' - на'b' и т.д.). Указать набор тестов. Проанализировать код одной из команд условного перехода.
Отчет должен содержать: текст программы с комментариями, набор тестов, результат анализа кода одной из команд условного перехода.
3. Даны массивы А и В из 16 слов. Если элемент А меньше соответствующего элемента массива В (числа беззнаковые), то обменять эти элементы местами. Сосчитать количество обменов. В массив С поместить адреса(смещения) этих элементов. Отчет должен содержать: текст программы с комментариями, входные и выходные значения массивов.



> > Помогите пожалуйста написать программы, срочно надо сделать, а я без понятия как!!!!!

А на кого же ты учишься, дорогой, если тебя заставляют осваивать то, чего тебе вовсе не нужно. Не известна версия Ассемблера. Полагать 16разрядный процессор?

> 2. Дана строка из четырех десятичных цифр. Если вторая и четвертая цифры различны, то поменять их местами, иначе - заменить первую и третью цифры на соответствующие строчные буквы('0' - на 'а','1' - на'b' и т.д.). Указать набор тестов. Проанализировать код одной из команд условного перехода.

Цифры и буквы имеют свои стандартные коды, этими кодами и будем оперировать.
Строка записана по адресам 100h - 103h

MOV AL,[101]'загружаем код в регистр А
MOV BL,AL 'пересылаем код из А в В
MOV AL,[103]'загружаем код в А
CMP AL,BL 'сравниваем В с А
JZ 06 'если А=В, то переход на 6 шагов вниз
MOV AL,[103]'загружаем код в А
MOV [101],AL'запоминаем в ячейке 101 содержимое А
MOV AL,BL 'пересылаем код из В в А
MOV [103],AL'запоминаем в ячейке 101 содержимое А
JMP 05 'переход на 5 шагов вниз
MOV AL,[100]'загружаем код в А
ADD AL,11h 'прибавляем к коду цифры 17d, получим код буквы от "А" до "J"
MOV [100],AL'запоминаем в ячейке 100 содержимое А
MOV AL,[102]'загружаем код в А
ADD AL,11H 'прибавляем к коду цифры 17d, получим код буквы от "А" до "J"
MOV [102],AL'запоминаем в ячейке 102 содержимое А

> Отчет должен содержать: текст программы с комментариями, набор тестов, результат анализа кода одной из команд условного перехода.
> 3. Даны массивы А и В из 16 слов. Если элемент А меньше соответствующего элемента массива В (числа беззнаковые), то обменять эти элементы местами. Сосчитать количество обменов. В массив С поместить адреса(смещения) этих элементов. Отчет должен содержать: текст программы с комментариями, входные и выходные значения массивов.

MOV BX,100h'начало массива С адресов обмененых элементов
MOV DI,10h 'начало массива элементов А
MOV SI,20h 'начало массива элементов В
MOV CX,10h 'установка счетчика на 16 ходов
MOV AL,00
MOV [130],AL'обнуляем счетчик обменов по адресу 130h
MOV [BX],AL 'заранее вводим признак "0" адреса обмененых элементов 'начало цикла
MOV AL,[BX+SI]'загрузка в регистр AL из массива В
MOV DH,AL
MOV AL,[BX+DI]'загрузка в регистр AL из массива А
CMP AL,DL сравнение элементов А и В
JNB 0B 'если элемент А не меньше элемента В, т переход на 12 шагов вперед
MOV AL,[BX+DI] 'обмен элементов в массивах
MOV [BX+SI],AL
MOV AL,DL
MOV [BX+DI],AL
MOV AL,DI 'загрузка смещения адреса обмененых элементов
ADD AL,100h'прибавляем смещение к адресу начала массива С
MOV [BX],AL'запоминаем в массиве адрес
MOV AL,[130]'увеличиваем счетчик обменов на единицу
ADD AL,1
MOV [130],AL
MOV AL,00 'обнуляем регистр AL
INC BX 'увеличиваем индекс массивов А,В,С на единицу
DEC CX 'уменьшаем счетчик цикла на единицу
JNZ EA 'если счетчик цикла СХ не равен 0, то переход на 20 шагов назад.

От нечего делать написал, но вряд ли будет толк от такой помощи.


Язык символьных вычислений Mathematica
Как на языке Mathematica преобразовать систему уравнений в частных производных от декартовых координат к сферическим? (в частности, надо перевести уравнения Навье-Стокса из декартовых координат в сферические)
Спасибо!04 июня 2006 г. 14:22:


Народ! Помогите написать 2 проги, а то горю просто со сдачей зачетного курсача, только начали учиться, а уже курсач!!!! Помогите кто-нить написать проги!
1. В массиве слов (байтов) указанного размера в каждом элементе сбросить старший установленный бит (например: 00111010 --> 00011010). Если эту операцию удалось выполнить, то инвертировать четыре старших бита.
2. Выделить подстроку, заключенную между "самыми внешними" круглыми скобками. Разместить символы подстроки в обратном порядке и найти ее длину, а также номера позиций внешних круглых скобок. ("Строка пуста", "В строке нет открывающей круглой скобки", "В строке нет закрывающей круглой скобки","Порядок скобок перепутан").
Помогите, кто знает как написать,а то до меня никак не доходит.
12 сентября 2006 г. 19:25:



> ребята, если не трудно, помогите реализовать решение систем уравнений методом
> Гауса на Амзи прологе.
> Спасибо за помощь!
> 29 декабря 2003 г. 23:10:


  • 18993: Re: Программы. Программирование. Языки программирования. Rus 16 сентября 02:00
    В ответ на №9310: Программы. Программирование. Языки программирования. от , 23 ноября 2003 г.:
  • Народ.
    Вот такая ситуация.
    Экран переведен в графический режим. Функция readln(a). Когда вводишь значение этого "а", оно печатается на экране. Как сделать, чтоб этого не было.


    Модератор.
    Тема здесь "Функция ввода в Pascal". Просто видимо чего-то я не то сделал.


    > Народ.
    > Вот такая ситуация.
    > Экран переведен в графический режим. Функция readln(a). Когда вводишь значение этого "а", оно печатается на экране. Как сделать, чтоб этого не было.

    Не уверен, что отвечу исчерпывающе. Эту функцию уже не изменить. Она печатает значение для нашего же удобства. Чтобы вводимые значения не были видны на экране, нужно свою Функцию определить и запрограммировать. Например - с использованием функции опроса клавиатуры, подобной inkey$ в языке Basic.


    На языке Basic я программировать не умею и что Вы имели ввиду совсем не понял.


    > Народ.
    > Вот такая ситуация.
    > Экран переведен в графический режим. Функция readln(a). Когда вводишь значение этого "а", оно печатается на экране. Как сделать, чтоб этого не было.

    Как уже было сказано, в эти ф-ии не влезешь и не изменишь, но их можно попробовать обмануть. Не знаю как в Паскале, а в С была такая фишка как графические страницы. Переключаешь страницу рисуешь туда что угодно, а на экране не отобржаешь. Еще можно попробовать перехватить прерывание, которыми пользуются эти ф-ии для вывода на экран, но я в асемблерных вставках не спец.


    Люди добрые. Вот уже 2 совета дали и ни один непонятен. Не надо мне приводить примеры как это сделать на других языках, я всё-равно не пойму. Да и не важно, будет ли это функция readln или чего другое. Как ЛЮБЫМ (мне понятным) способом можно ввести значение в переменную, так чтобы это не отображалось?


    > Люди добрые. Вот уже 2 совета дали и ни один непонятен. Не надо мне приводить примеры как это сделать на других языках, я всё-равно не пойму. Да и не важно, будет ли это функция readln или чего другое. Как ЛЮБЫМ (мне понятным) способом можно ввести значение в переменную, так чтобы это не отображалось?

    Давно бы нашли форум по Паскалю и там задали свой вопрос! Здесь - математики и то редко появляются. Нужно указать версию языка, способ ввода и вообще - какую задачу вы решаете? В чем суть программы? Вы имеете в виду ввод значений с клавиатуры, из файла, из оперативной памяти?


    Форумы по Паскалю? А это мысль! Чтож попробую найти.
    "Здесь - математики и то редко появляются." А кто здесь? Народ, вы кто??? Вот лично я - экономист, и мне как всякому порядочному экономисту требуется углубленное изучение математики. А если здесь художники или биологи обитают - их право.
    Имею ввиду я именно ввод с клавиатуры.
    Какую задачу решаю? Разве это так уж важно? Ладно ладно, отвечу: пытаюсь написать программку, которая строила графики, считала бы матожидания, дисперсии, корреляцию и прочее. Конечно подобные уже существуют, но решил, что для меня это будет хорошей практикой.


    > Форумы по Паскалю? А это мысль! Чтож попробую найти.
    > "Здесь - математики и то редко появляются." А кто здесь? Народ, вы кто??? Вот лично я - экономист, и мне как всякому порядочному экономисту требуется углубленное изучение математики. А если здесь художники или биологи обитают - их право.
    > Имею ввиду я именно ввод с клавиатуры.
    > Какую задачу решаю? Разве это так уж важно? Ладно ладно, отвечу: пытаюсь написать программку, которая строила графики, считала бы матожидания, дисперсии, корреляцию и прочее. Конечно подобные уже существуют, но решил, что для меня это будет хорошей практикой.

    Я только приветствую такое стремление. Программирую авиатренажеры на досуге. Лет двадцать назад писал программы на Ассемблере, Паскале, Бейсике. Сейчас программирую в редакторе MsExcel, пишу Макросы на языке Visual Basic. Этот язык легко освоить, так как формулы в программе имеют тот же синтаксис, что и при вводе формул в ячейки электронной таблицы. К редактору имеется обширная справка. Абсолютное большинство вычислительных и графических задач можно решать в этом редакторе, не прибегая к непосредственному программированию. Только в тех случаях, когда нужны циклы с большим количеством повторений, без сохранения промежуточных результатов, записываю этот цикл в Макрос. Удобно хранить , пересылать и редактировать свои произведения. Богатая коллекция функций, в том числе статистических, математических.

    Все-таки, в Паскале программировать очень трудоемко. Кстати, в Визуал Бейсике тоже в начале программы определябтся все переменные, а нами наисанные функции и процедуры можно вызывать не программно, а щелчком мышки по соответствующим кнопкам нами же составленного меню.

    Вы не указали версию Паскаль. Вообще, при вводе символов с клавиатуры есть два способа:
    1. ввод в строку, отображаемую в нижней части экрана, с приостановкой исполнения программы.
    2. ввод в переменную, не видимую на экране, без остановки программы. Например: A=reagkey. В переменную А запишется код символа нажатой клавиши.


    На всякий случай надо заметить:

    > > Какую задачу решаю? Разве это так уж важно? Ладно ладно, отвечу: пытаюсь написать программку, которая строила графики, считала бы матожидания, дисперсии, корреляцию и прочее. Конечно подобные уже существуют, но решил, что для меня это будет хорошей практикой.

    Программирование под DOS давно себя изжило: минимум возможностей, много рутины надо делать самому, ноль продвижения своих программ (т.е. если вы посоветуете другу программу под DOS, он на вас косо посмотрит),...
    Если начинаете программировать не пожалейте немного времени на освоение RAD среды (где компоненты можно перетаскивать на форму), это время с лихвой окупиться!!! В том же Delphi - богатая палитра компонент на все случаи жизни, а если чего-то не хватает, можно найти в интернете или сделать самому, тот же компонент отображения графика (в 3D виде, со всеми наваротами...).

    > Программирую авиатренажеры на досуге.
    Звучит...
    Опять же на всякий случай...
    Как я понял вы работаете с 2D-3D графикой. Так вот большинство трехмерных игр (а также простейших 3D программ), написано с использованием OpenGL - простейшей библиотеки графических объектов и методов. Эта библиотека предоставляет классы векторов, матриц, рисование полигональных сеток, всевозможные эффекты (прозрачность, тени), "автоматически" осуществляет афинные проекции,...
    Если вы все это делаете вручную (ужас?!) гляньте по этой ссылке -http://delphigfx.mastak.ru/samples.htm - такие конфетки всего на "пару страниц" кода. Не проблема подключить экспорт моделей (в простейшем случае - набор полигонов в 3D пространстве) из 3D studio MAX.


    Версия Турбо Паскаль. По правде говоря на никаких других я никогда не работал и чем они отличаются - понятия не имею.
    Как это программируете на Excele? Вы имеете ввиду редактор Excel таблицы или что-то другое?
    "языке Visual Basic. Этот язык легко освоить" - учебник по Паскалю уверял, что самый легкий является он (Паскаль).
    За помощь - спасибо. Я использовал 2-й вариант. Вы сделали ошибку "A=reagkey" - Надо было readkey. Вот только подействовало это только на тип char, а yf тип integer пишется "Несоответствие типа". Решил рассмотреть 1-й вариант. Я так понял Вы имеете ввиду ввод с отображением введенного внизу, так чтобы выходило за пределы экрана. Не совсем понимаю как это сделать... вставил функцию gotoxy(200, 200) (больше - почему то выходят за пределы диапазона). И ничего. Как в басне: а воз и ныне там.
    "Я только приветствую такое стремление." - спасибо за моральную поддержку. Стремление что-то создать - хорошо, но вот выкладывать в инет это прогу (если мне всё-таки хватит нервов её создать) я не буду - она будет приносить только вред. Решая задачи таким образом студенты не будут запоминать формул, и вообще понимать что какая-то величина из себя представляет.
    И еще хотел спросить. Что за авиатренажоры Вы программируете? Типа практика для летчиков7



    > Как это программируете на Excele? Вы имеете ввиду редактор Excel таблицы или что-то другое?

    > И еще хотел спросить. Что за авиатренажоры Вы программируете? Типа практика для летчиков7

    Именно редактор MsExcel таблицы из пакета MsOffice.
    Пример: Вам нужно Обработать данные и иллюстрировать итог Диаграммой. В Паскале нужно создавать массивы, читать туда данные из какого-то файла, писать цикл обработки, возиться с графикой. Уйдет на это занятие целый день, при должном умении. В редакторе MsExcel Вы потратите 10 минут: копируете из любого документа или сайта таблицу данных, вставляете в документ MsExcel эту таблицу, пишете в ячейку простую формулу - как в школе на уроке алгебры, копируете эту формулу в столбик с помощью мышки. Как только отпустите кнопку мыши - редактор весь столбик посчитает и выдаст, вместо формул, численные результаты. Выделяете этот столбик мышкой, чтоб он почернел, в меню выбираете пункт Диаграмма, делаете три шага по указке Мастера диаграмм. Все, работа сделана.
    src="../../img/1234.jpg">
    В правом столбике-результат вычислений по формуле:
    =В3/С3, эту формулу копировать мышкой до нижней строки:
    =В4/С4
    ......
    Если интересно, можете скачать по ссылке :
    http://aviarh1.narod.ru/aviarh2.htmlдокумент "Тренажер руководителя полетов" 145 КБ.(просто щелкните по ней мышкой).
    Если у Вас есть редактор MsExcel. Если нет - то ничего не получится.
    Если редактор есть, то в меню Сервис -Макрос-Безопасность флажок нужно поставит в положение "Средняя". Тогда программа будет работать, от кнопки "старт" на листе.


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

    > Именно редактор MsExcel таблицы из пакета MsOffice.
    > Пример: Вам нужно Обработать данные и иллюстрировать итог Диаграммой. В Паскале нужно создавать массивы, читать туда данные из какого-то файла, писать цикл обработки, возиться с графикой. Уйдет на это занятие целый день, при должном умении. В редакторе MsExcel Вы потратите 10 минут: копируете из любого документа или сайта таблицу данных, вставляете в документ MsExcel эту таблицу, пишете в ячейку простую формулу - как в школе на уроке алгебры, копируете эту формулу в столбик с помощью мышки. Как только отпустите кнопку мыши - редактор весь столбик посчитает и выдаст, вместо формул, численные результаты. Выделяете этот столбик мышкой, чтоб он почернел, в меню выбираете пункт Диаграмма, делаете три шага по указке Мастера диаграмм. Все, работа сделана.

    > В правом столбике-результат вычислений по формуле:
    > =В3/С3, эту формулу копировать мышкой до нижней строки:
    > =В4/С4
    > ......
    > Если интересно, можете скачать по ссылке :
    http://aviarh1.narod.ru/aviarh2
    > документ "Тренажер руководителя полетов" 145 КБ.(просто щелкните по ней мышкой).
    > Если у Вас есть редактор MsExcel. Если нет - то ничего не получится.
    > Если редактор есть, то в меню Сервис -Макрос-Безопасность флажок нужно поставит в положение "Средняя". Тогда программа будет работать, от кнопки "старт" на листе.

    Текст программы можно посмотреть в том же редакторе в меню Сервис-Макрос-Макросы-Войти.


    Excel то мне известен. Просто я не совсем понял когда Вы сказали, что программируете на нем. На нем не программируют, а вычисляют. Или мне чего-то неизвстно?
    Ссылочка не работает. То есть появляется страница народа, где говорится "Нет такой страницы".


    > Excel то мне известен. Просто я не совсем понял когда Вы сказали, что программируете на нем. На нем не программируют, а вычисляют. Или мне чего-то неизвстно?
    > Ссылочка не работает. То есть появляется страница народа, где говорится "Нет такой страницы".

    Коротко поясняю. В редакторе Excel есть еще редактор Visual Basic. На этом языке можно писать программы-Макросы. Удобство в том, что можно написать статью в Книге и присоединить к Книге Макрос, для запуска которого можно назначить, например, клавишу с буквой R, или поместить на Лист Кнопку из панели инструментов "Формы", а потом написать программу для этой кнопки. Нажали на Кнопку-программа отработает, не нажимаете - не работает.
    Повторяю ссылку, на прежней "кончика html" не было.
    http://aviarh1.narod.ru/aviarh2.html


    > Программирование под DOS давно себя изжило: минимум возможностей, много рутины надо делать самому, ноль продвижения своих программ (т.е. если вы посоветуете другу программу под DOS, он на вас косо посмотрит),...

    Я думаю, что Вы здорово заблуждаетесь. Если программировать на СИ, то он и в Африке СИ. А DOC как приложение под Win не только без проблем, но и с преимуществами.


    Сначала я подумал, что это типа картина... но потыкав... самолетики зашевелились!!! И это в Excelе! Никогда бы не подумал, что там можно сделать такое. Но смысла этого я так и не понял.
    Появились некоторые вопросы. Язык Visual Basic это тоже, что и Basic? Вы как сделали - осуществляли это непосредственно в Excele, или на Visual Basic? Если второе - то как вы потом это соединили?
    "В редакторе Excel есть еще редактор Visual Basic" - где он там?



    > Появились некоторые вопросы. Язык Visual Basic это тоже, что и Basic? Вы как сделали - осуществляли это непосредственно в Excele, или на Visual Basic? Если второе - то как вы потом это соединили?

    Лет 20 назад я пользовался советским персональным компьютером, потом английским. Когда приобрел IBM с операционной системой Windows, меня прежде всего интересовала возможность самому писать программы на нем. И вот в редакторе Excel нахожу редактор языка программирования Visual Basic. Удобство этого редактора в том, что большинство текста программы не нужно набирать на клавиатуре, что избавляет от множества описок. Фрагменты программы вставляются простым щелчком мышки - потому и называется Визуал - что избавляет от запоминания длинных английских имен функций, процедур, переменных.
    Программа-Макрос, после ее создания может быть прикреплена:
    1. К открытому в тот момент документу /например: Книга 1/
    2. К редактору Excel, тогда Макрос используется с любым открытым документом Excel. Для случая, когда нужно обработать множество однообразных документов.
    3. К редактору Excel в специальном файле-проекте Personal.XLS, доступ к которому - через Редактор Visual Basic.
    Лучше всего - первый вариант. Нет путаницы, можно пересылать Макрос вместе с документом по почте. Если много программ накопятся, в остальных вариантах, то лишняя нагрузка на редактор Excel- долго загружаться в память будет.

    > "В редакторе Excel есть еще редактор Visual Basic" - где он там?

    В меню редактора Excel - Сервис-Макросы- редактор Visual Basic.
    Ответственно утверждаю: на листе документа Excel можно реализовывать сложные алгоритмы без написания программ. Через ссылки на ячейки, на гиперссылки, добавляя кнопки, счетчики и прочие формы из панели инструментов "Формы".
    Уже если очень нужна программа, то помещаем на лист "элементы управления" /посмотрите их в менб Вид-Панель инструментов/. Поместив элемент, через контекстное меню правой кнопки назначаем этому элементу Макрос. Автоматически в редакторе VB будет озаглавлена программа с началом и концом. останется впмсать в тело программы свои формулы. Все остальное можно понять, если ознакомиться в "Макросы в Excel" на мое сайте.


    Да уж... Excelем несколько лет пользуюсь, а о таких возможностях даже не задумывался. КНОПКИ И СЧЕТЧИКИ МОЖНО В EXCELE РАЗМЕЩАТЬ!!! Кому сказать - так не поверят. Только как эти самые кнопки и счетчики увязать с чем-то я не понял. Может по этим вопросам управления есть какая-нибудь литература? В Excele программируют игры?
    P.S. Я правильно понял: язык Visual Basic отличается от Basic ТОЛЬКО тем, что на нем не надо набирать названия функций (и др.), а просто пользоваться мышкой?


    Ура!!! Получилось слово выделить!


    > Только как эти самые кнопки и счетчики увязать с чем-то я не понял. Может по этим вопросам управления есть какая-нибудь литература? В Excele программируют игры?
    > P.S. Я правильно понял: язык Visual Basic отличается от Basic ТОЛЬКО тем, что на нем не надо набирать названия функций (и др.), а просто пользоваться мышкой?

    Отвечаю на первый вопрос:
    В Справке есть раздел Макросы.
    1. В меню Вид-Панели инструментов есть панель "Формы". Щелкаем мышью по лбой из форм - она копируется в документ. Эти формы - кнопки, флажки, счетчики - служат для изменения содержимого ячейки документа посредством мыши, то есть для удобства работы - без клавиатуры работать. Через контекстное меню (правой кнопки мыши) связываем нужную форму с указанной нами ячейкой. В этой ячейке при нажатии на кнопку будут изменяться значения. Можно все формы скопировать на лист и ознакомиться с их свойствами, опробовать их. Потом удалить их.
    Но это пока не программирование. О написании программ для кнопок далее:

    Кнопкам можно назначить Макрос - программу на языке Бейсик - тоже через контекстное меню. В диалоговом окне "Макросы - Исправить" текст программы можно редактировать в редакторе Visual Basic. Там мы увидим заголовок программы, пустое место и конец программы. Вот в пустое место мы и пишем свою программу.
    Так как Вы имеете опыт работы с ячейками, то легко сможете вводить в программу данные из любых ячеек листа и выводить из программы итоги в любые ячейки.
    Пример текста программы:

    "Шапка программы" -она уже есть
    Dim A,B,DDD
    DDD=3,14
    A = Range "A1"
    B = Range "B20"
    Range "C5" = A*sin(B) + DDD
    End sub - тоже уже написано.

    2.Можно игры программировать. В чем удобство: рисуем картинки для игры на листе Excel с помощью панели Рисования. Потом в меню Сервис -Макросы- щелкаем "Начать запись", назначаем клавишу (например -"R") и двигаем мышью рисунки по воображаемому нами сценарию. Закончив движения, щелкаем "Завершить запись". Все движения рисунков запишутся в Макросе на языке Бейсик. Нам остается посмотреть текст Макроса, вставить формулы для алгоритма движения, заменить числовые аргументы на переменные, котрые должны изменяться по алгоритму, то есть приращения координат X,Y.
    3. Да, правильно. Технология программирования на VB расчитана именно на минимуме использования клавиатуры. Операторы вставляем в программу, выбрав их из списка в меню редактора VB: Edit-List Properti/Metods двойным щелчком мыши.


    Связать удалось. Еще раз прошу назвать литературу в которой описаны подобные "махинации" в Excele.
    "В диалоговом окне "Макросы - Исправить"" - не нашел. Может Вы имеете ввиду "Сервис-макрос-редактор Visual Basic?
    Насчет игр (и записи). Создал человечка (2 окружности и 4 палки - руки, ноги). Записал. Нажал "ctrl+м" (я там быкву "м" пометил). ЧАСТЬ тела отодвинулась. Это совершенно не то, что я записал. Но работает.


    > Связать удалось. Еще раз прошу назвать литературу в которой описаны подобные "махинации" в Excele

    В справке к редактору Excel по ключевому слову "Макросы". В интернете много сайтов со справками для языка VB (Visual Basic). Но главная мысль, я подчеркиваю - технология VB позволяет писать программы с минимальным использованием ввода с клавиатуры. Методом копирования. Отовсюду мы копируем кусочки программы и вставляем их в свою. Мышкой.

    > "В диалоговом окне "Макросы - Исправить"" - не нашел. Может Вы имеете ввиду "Сервис-макрос-редактор Visual Basic?

    Это отдельное диалоговое окно: "Сервис-Макрос-Макросы -Исправить". Там много операций указано: Войти,Выполнить, Создать, Удалить, Отменить.

    > Насчет игр (и записи). Создал человечка (2 окружности и 4 палки - руки, ноги). Записал. Нажал "ctrl+м" (я там быкву "м" пометил). ЧАСТЬ тела отодвинулась. Это совершенно не то, что я записал. Но работает.

    Молодцом! Быстро освоили! Только нарисованного человечка нужно "сгруппировать" - выделить его мышкой, затем на панели Рисование - Действия-Группировать. И у этого человечка автоматически появится имя -"Group 1". Теперь начинаем запись движения- будем сдвигать человечка не по частям, а целиком. Заметьте: Вы записываете в Макрос свои действия - перемещения рисунков, запись в ячейки, откраваете и закрываете другие программы - а все они будут записаны на языке VB. Удобный сособ знакомства с операторами языка. Записали действие - посмотрели как оно записано языком VB. Кстати, Макросы можно записывать и в редакторе MsWord и сохранять их с документом MsWord, но в Excel удобнее обмен данными - через ячейки.

    Если Вы скачаете с моего сайта программу "Простейший штурманский тренажер", то у вас будет пример короткой программы, в которую включены все важнйшие операторы:

    Option Explicit - оператор, требующий предварительного определения переменных, как в Паскале, посредством операторов Dim.

    Sub NAVIGARH5()- ...имя нашей программы
    '
    ' NAVIGARH5 Макрос
    ' Макрос записан 31.10.2004 (ARH)- ...комментарии автора программы

    Dim tt, XX, YY, XXX, YYY, XXd, YYd, dug, skor, Kurs, Kursd, Kur- ...Определения.

    Kurs = 0 - ...присвоение значения для переменной Kurs

    While Range("c14") = 1 -...условие перехода к оператору выхода Wend в конце программы

    tt = Timer() + 0.3 'задаем период опроса событий
    While Timer() < tt -....условие кратковременного возврата в ОС для работы с другими программами, например с листом Excel, вызвать другое приложение и т.д.
    DoEvents - ...оператор временного обращения к событиям ОС
    Wend - ....конец цикла While Timer() < tt

    dug = 0
    If Range("b15") = True Then dug = 3
    If Range("c15") = True Then dug = -3
    skor = Range("c23") / 100 'скорость можно задать другую
    Kurs = Kurs + dug
    Kurs = Kurs - Int(Kurs / 360) * 360
    If dug <> 0 Then skor = Range("c23") / 500 'задаем радиус разворота
    XX = XX + skor * Sin(Kurs / 57.2)
    YY = YY + skor * Cos(Kurs / 57.2)
    YYY = YY * Cos(Kurs / 57.2) + XX * Sin(Kurs / 57.2)
    XXX = XX * Cos(Kurs / 57.2) - YY * Sin(Kurs / 57.2)

    ActiveSheet.Shapes("Group 55").Select - ...элементарное движение рисунка
    Selection.ShapeRange.IncrementLeft (XXX - XXd)
    Selection.ShapeRange.IncrementTop (YYY - YYd)
    Selection.ShapeRange.IncrementRotation dug
    XXd = XXX
    YYd = YYY
    ActiveSheet.Shapes("WordArt 117").Select - ....элементарный поворот рисунка
    Selection.ShapeRange.IncrementRotation dug
    Range("a5") = "Y = " & Int(YY)
    Range("a6") = "X = " & Int(XX)
    Range("b5") = "YY= " & Int(YYY)
    Range("b6") = "XX = " & Int(XXX)
    Kur = Kur - dug
    Range("c6") = "Kurs = " & Kur - Int(Kur / 360) * 360 -... вывод данных в ячейку EXcel "С6"

    Wend -.... конец "долгоиграющего" цикла. То есть: пока мы на листе не щелкнем по кнопке "Стоп", цикл будет бесконечно повторяться. При щелчке по кнопке изменится значение в ячейке "С14" на число 2 и оператор среагирует на выход.

    ActiveSheet.Shapes("WordArt 117").Select - ...возврат рисунков в исходное положение
    Selection.ShapeRange.IncrementRotation -Kurs
    ActiveSheet.Shapes("Group 55").Select
    Selection.ShapeRange.IncrementLeft -XXX
    Selection.ShapeRange.IncrementTop -YYY
    Selection.ShapeRange.IncrementRotation -Kurs
    Range("c33") = Range("c33") + 1 - ... изменение счетчика в ячейке "С33"

    End Sub -.... конец нашей программы - команда на окончательный возврат из нее в операционную систему, конкретно - к листу MsExcel.

    Я потомe советую Вам программировать на VB, что Вы уже имеете опыт пользования его функциями в редакторе Excel. Особенно операторами Если(), операторами обработки текста, математическими и прочими (десятком групп). Тем более, что к ним есть подробные справки на русском языке.


    И все таки Visual Basic я не буду. Сейчас не буду. Будет время - буду.
    Ну ни фига себе!!! Набрал "макрос", посмотрел что да как, и тут "Web-сценарии". Ну я набрал и это. Так значит Excel и при редактировании страниц использовать можно. Салют Excelю!
    "Только нарисованного человечка нужно "сгруппировать" - выделить его мышкой, затем на панели Рисование - Действия-Группировать." Что-то я не пойму как его выделить - по очереди нажать кнопкой мышки на каждую часть человечка, удерживая ctrl? Ну я так сделал, а строка группировать не появляется (т.е. я её вижу, но буквы не черные, а вогнутые).
    Пример операторов Вы привели напрасно, я ничего не понимаю на VB. Но, как уже говорил, будет время, обязательно освою.
    P.S. Я Вас не утомил своими вопросами?


    Меня попросла одна секретарша показать - как простейшую кластерную схемку на листе Excel нарисовать. Надписи в рамочках сделать. Она на компьютере лет десять документы печатает. Когда я ей показал какие картинки можно рисовать с помощью инструментов Рисование - у нее аж глаза заблестели. Тут же ей нарисовал простенькую географическую карту, добавил маленький Макрос для измерения расстояний по карте. Показал как ведомости по зарплате в электронной таблице составить и автоматически все посчитать. А она в Worde ведомости "печатала" как на печатной машинке. Копировать и еще раз копировать! Показал как множить рисунки: нарисовал один этаж- удвоил-учетверил-увосмерил - получил многоэтажку. А она каждое окно отдельно рисовала. Вот помог так помог!
    Вы спрашивали про Группировку фигур? На панели рисования есть надпись "Действия", там действий указаны. Каждое попробуете и все поймете. А перед группировкой фигур нужно нажать стрелку рядом с "Действия", потом мышкой обозначить прямоугольную рамку и нажать в Действиях -Группировать. Потом: нажав на кнопочку "цвет заливки", найдем там много способов заливки, текстуру, палитру цвета и прочее. Только перед этим нухно щелкнуть по нужной фигуре. Мне пришлось много географических карт и планов города рисовать - вот я и усвоил рисование. Можно было в MsPaint рисовать, но его рисунки много памяти занимают и не поворачиваются, не деформируются в произвольных направлениях.
    А Примечания, Гиперссылки, Формулы "Equacion 3.0", Диаграммы пробовали вставляти в текст? Эти вещи делают документ насыщеным, функциональным, интерактивным. Изавините, если что не так. Просто Вы выразили желание научиться примерно такому оформлению документов - вот я и сунулся со своими советами. Из желания быть полезным.


    Еще несколько примеров работы с объектами /рисунками/.
    1. Вставить рисунок в это сообщение /фрагмент меню редактора Ms Excel/.
    *нажал кнопку меню "Действие" - появился список. Нажимаю клавишу Print Scrn. Вся картинка с экрана окажется в буфере обмена,
    2. Открываю редактор MsPaint, нажимаю кнопку "Вставить". Вырезаю мышкой фрагмент экрана, нажимаю "копировать".
    3. Так как этот сервер принимает на хранение рисунки в формате .JPG, открываю редактор MsPhotoEditor, вставляю его в редактор и сохраняю под именем PrintScrn.
    4. Щелкаю на этой странице: "Загрузить рисунок на сервер (gif или jpg)", в обзоре нахожу в Моем компьютере сохраненный в Моих документах рисунок PrintScrn. Когда он загрузится на сервер, появится ссылка на него. Копирую ее.
    5.Нажимаю "Вставить в текст сообщения: ссылка · e-mail · полужирный · курсив · код · рисунок · " на "рисунок", вставляю в окошко ссылку. Ссылка будет в тексте.

    Вставляю второй рисунок- Dom. Так как он нарисован в MsExcel, то, нажав "копировать", я сохраняю программу, рисующую дом, В редакторе MsPaint вставляю его - он преобразуется в точечный рисунок, пропускаю его через MsPhotoEditor, дальше описано выше.



    И всё-таки у меня ничего не получилось. Заставить человечка выполнить команды не удается.
    Я так понял, сначала нужно записать, а потом группировать, а то группированные части отдельно двигать не получается.
    Я Вам сейчас расскажу, что я делал, а Вы, если я где-то ошибся, поправьте, пожалуйста. Итак рисуем круг (голова), овал (тело), прилепляем 2 палки снизу овала (ноги) и сверху (руки). Ну, в общем, получился "шедевр мирового искусства". Далее нажимаем Сервис/Макрос/Начать запись. Там где "сочетание клавиш" добавляем какую-нибудь кнопку (пусть будет "м"). ОК. Появилось маленькое окно с надписью "Оста" ("остановить" наверное должно быть). Далее изменяем градус наклона ручек (опускаем их), и поднимаем ножки. Нажимаем синий квадратик "остановить запись". Нажимаем кнопку с изображением стрелки. Выделяем всё. Витаминизируемся (простите, просто реклама с няней прикалывала). Нажимаем действия/группировать. Далее нажимаем ctrl+м и появляется окошко с надписью

    Run-time error '70'
    Permission denied

    В совершенстве английским я не владею, но то, что error означает ошибка мне известно (когда компилирую в Pascale их сотнями встречаю).
    Ну так, что ж я сделал неправильно? Почему этот человечек так упрямо отказывается двигать конечностями?



    > Ну так, что ж я сделал неправильно? Почему этот человечек так упрямо отказывается двигать конечностями?

    Все правильно Вы делали.
    1. Нарисовали фигуры
    2. Сервис-Макросы-Начать запись
    3, назначаете клавишу "М"
    3. двигаете фигуры
    4. Остановить запись.
    5. нажимаете Сtrl+M
    Фигуры переместятся и повернутся еще на столько, на сколько Вы их переместили и повернули, записывая Макрос.
    Если опять нажмете Сtrl+M, фигуры еще раз переместятся и т.д.

    В данном случае их группировать нельзя. Иначе имена овалов и линий пропадут,потому и ЕRROR. Они будут сгруппированы в одном имени: "Group 3", например. А фигуры с таким именем в записанном тексте Макроса нет.

    Иногда приходится сложный рисунок перегруппировывать, перерисовавать, вновь группировать. У новой группы автоматически меняется порядковый номер. Тогда входим в текст Макроса и вручную меняем там имя фигуры, то есть номер группы.
     


    > ребята, если не трудно, помогите реализовать решение систем уравнений методом
    > Гауса на Амзи прологе.
    > Спасибо за помощь!
    > 29 декабря 2003 г. 23:10:


    Понятно. Вы написали "двигаете фигуры". Я передвинул у человечка ноги, и с каждым нажатием пары ctrl+м эти части передвигались. До этого я менял угол наклона рук и ног. То есть у отрезка изменялись координаты только второй точки, первая (та, которая находится ниже головы) не менялась. Почему у меня в таком случае ничего не работало? ничего не работало.

    Re: Программы. Программирование. Языки программирования. от Rus , 30 сентября 2006 г.:

    > Понятно. Вы написали "двигаете фигуры". Я передвинул у человечка ноги, и с каждым нажатием пары ctrl+м эти части передвигались. До этого я менял угол наклона рук и ног. То есть у отрезка изменялись координаты только второй точки, первая (та, которая находится ниже головы) не менялась. Почему у меня в таком случае ничего не работало? ничего не работало.

    Должно работать. Я передвинул линию за один конец - получается. Движущегося человечка, наверное, лучше так сделать: Нарисовать отдельно колесо из трех ног, сгруппировать его, колесо из трех рук и сгруппировать его. нарисовать фигуру без ног и рук, сгруппировать ее. Собрать полную фигуру, но не группировать больше. Теперь записать макрос: колеса рук и ног поворачиваются на 60 градусов, смещаются три фигуры на одинаковое расстояние, колеса рук и ног поворачиваются на 60 градусов. Похожей имитации хотьбы не получится, зато движение будет выглядеть забавным.


    Понял я что у меня не сходило. Работает только если менять угол с помощью кнопки (закругленная стрелочка), находящейся через одну возле кнопки "действия". Но в этом случае фигура (неважно какая) вращается вокруг центра. Я делал так. Рисовал линии и подводя курсор к квадратам на концах (те, которые образуются если линию выделить) вращал один конец вокруг другого. Так не работает. Обидно.
    Возникли еще вопросы, если не трудно, ответьте пожалуйста.
    1. Как решить вышеуказанную проблему?
    2. Как поворачивать фигуру не просто, а на конкретный угол? Не транспортир же мне к монитору прикладывать.
    3. Клавиши ctrl+м можно нажимать несколько раз, а можно вообще нажать, не отпускать. В этом случае фигура будет исполнять записанную в макросе команду снова и снова. Можно ли ограничить исполнение 1-2 разами?
    4. Можно ли поменять комбинацию клавиш ("shift+5" или просто "1" без ctrl)?


    > 2. Как поворачивать фигуру не просто, а на конкретный угол? Не транспортир же мне к монитору прикладывать.

    Пример: моделируем движение секундной стрелки.
    Рисуем вертикальную широкую красную стрелку, к ней снизу рисуем тонкую вертикальную линию и прячем ее, то есть назначаем ей белый цвет или цвет фона циферблата. Группируем обе линии, Записываем макрос с поворотом стрелки вокруг ее центра, значком "Вращение", на произвольный угол. Остановить запись. В меню Сервис-Макросы-Макрос-Изменить увидим текст программы.
    ActiveSheet.Shapes("Group 1").Select
    Selection.ShapeRange.IncrementRotation - 33,5
    Если он действительно такой, только вместо числа 33,5 другое число, то можете удалить эти две строки, а вместо них вставить вот такую программу
    /скопируйте этот текст и вставьте/:

    Dim tt, dug, pausa, N 'определяем переменные
    dug = 6 ' угол поворота стрелки в градусах
    pauza = Range("a1") 'ввод длительности паузы из ячейки А1
    For N=1 To 60 'задаем цикл в 60 шагов
    tt = Timer() + pauza
    While Timer() < tt
    DoEvents
    Wend
    ActiveSheet.Shapes("Group 1").Select 'эти две строчки уже есть в программе
    Selection.ShapeRange.IncrementRotation - dug ' заменим число на переменную
    Next N ' конец цикла

    В меню редактора VB -Debug щелкните Compile VABProect
    В ячейку "А1" на листе Excel введите число 0,3
    Теперь можно запускать Макрос.

    > 3. Клавиши ctrl+м можно нажимать несколько раз, а можно вообще нажать, не отпускать. В этом случае фигура будет исполнять записанную в макросе команду снова и снова. Можно ли ограничить исполнение 1-2 разами?

    Сколько раз нажмете - столько раз будет срабатывать Макрос. Нажмете один раз - сработает единственный раз.

    > 4. Можно ли поменять комбинацию клавиш ("shift+5" или просто "1" без ctrl)?

    Нельзя. Но можно из панели инструментов "Формы" поместить на лист Кнопку, правой мышкой в меню назначить Макрос этой кнопке, а потом войти в этот Макрос и вставить текст программы из прежнего Макроса, который Вы запускали клавишей. В меню редактора VB - Debug щелкните Compile VABProect
    После этого запускать макрос будете кнопкой, а прежний макрос удалите.
    Макрос сохранится с документом, если Вы сохраняете изменения в документе. Пока экспериментируете - не сохраняйте изменения и макросы не сохранятся.
    На Вашем компьютере в меню Сервис- Макрос-Безопасность флажок стоит в положении Средняя или Низкая. Если поставите Высокая, то Макросы не будут работать.


    Написав в ячейке А1 число 0,3 я запустил макрос и весь скопированный текст (программа) появилась в ячейках А2-А12. И что я добился?

    "Сколько раз нажмете - столько раз будет срабатывать Макрос. Нажмете один раз - сработает единственный раз."
    Вы меня неправильно поняли. Я спросил, можно ли сделать так, что после некоторого количества нажатий ctrl+клавиша и соответственно после такого же количества исполнений макроса, дальнейшее исполнение при нажатии было невозможно (т.е. нажатие ctrl+клавиша ничего не поменяет)? Проще говоря, возможно ли ограничение исполнения макроса?

    Комбинацию клавиш поменять нельзя??? И как тогда делать игры, чтобы можно было щелкать по клавиатуре, а не мышкой на экране? Вот допустим управление машиной. Поворачивать направо - это ctrl+a, налево - ctrl+b, прямо - нажмите ctrl+c... заправиться - ctrl+d, включить дворники - ctrl+e. Глупо получается. Даже не получается сделать комбинацию ctrl+'кнопка стрелка'.


    > Написав в ячейке А1 число 0,3 я запустил макрос и весь скопированный текст (программа) появилась в ячейках А2-А12. И что я добился?
    Попробуем еще раз:
    1. Нарисовать стрелку, показываюшую вверх
    2, Нарисовать линию, продолжающую стрелку вниз на длину стрелки, окрасить линию в белый цвет.
    3, Сгруппировать стрелку и линию. В левом верхнем углу - в строке формул - щелкните там мышкой - должно быть название нашего рисунка: Группа 3. Если не видно - щелкните по рисунку мышкой. Если будет другой номер, то в тексте Макроса нужно заменить в слове "Group 3" цифру 3 на ту, которая видна в строке формул.
    4. В меню Сервис-Макрос - Начать запись и назначте клавишу.
    5. В меню Сервис-Макрос - Остановить запись.
    6. Скопируйте этот текст программы и вставьте в текст Макроса:

    Dim tt, dug, pauza, N
    dug = 6
    pauza = Range("a1")
    For N = 1 To 60
    tt = Timer() + pauza
    While Timer() < tt
    DoEvents
    Wend
    ActiveSheet.Shapes("Group 3").Select
    Selection.ShapeRange.IncrementRotation dug
    Next N

    Как вставлить этот текст?
    В меню Сервис-Макросы -Макрос-Изменить. Появится в окне редактора VB текст макроса, вставьте этот текст. Весь текст Макроса будет выглядеть так:

    Sub Макрос1()
    '
    ' Макрос1 Макрос
    ' Макрос записан 02.10.2006 (ARH)
    '
    ' Сочетание клавиш: Ctrl+m

    Dim tt, dug, pauza, N
    dug = 6
    pauza = Range("a1")
    For N = 1 To 60
    tt = Timer() + pauza
    While Timer() < tt
    DoEvents
    Wend
    ActiveSheet.Shapes("Group 3").Select
    Selection.ShapeRange.IncrementRotation dug
    Next N

    End Sub

    В окне того же редактора VB в меню Debug щелкните Compile VABProect. Вся программа будет скомпилирована.
    Теперь на листе Excel, где нарисована стрелка, введите в ячейку А1 число 1.
    Запустите Макрос. Стрелка сделает полный оборот за минуту /секундомер/.
    Я эту программку проверил - работает.

    Вот допустим управление машиной. Поворачивать направо - это ctrl+a, налево - ctrl+b, прямо - нажмите ctrl+c... заправиться - ctrl+d, включить дворники - ctrl+e. Глупо получается. Даже не получается сделать комбинацию ctrl+'кнопка стрелка'.

    Если желаете управлять через клавиши, то нужно записать Макросы для этих клавиш, например:
    Запишите еще два Макроса, в дополнение к Макросу1.
    Начать запись, назначаем клавишу А, сдвигаем нашу стрелку влево, остановить запись. Получим Макрос2.
    Запишем еще один макрос для клавиши S, сдвинем стрелку вправо, получим Макрос3.

    Теперь запускаем Макрос1, стрелка начнет вращаться. В это время, нажимая на клавиши Ctrl+a и Ctrl+s -, будем сдвигать стрелку влево-вправо. Вот Вам и управление. Макрос1 будет работать минуту, Макросы 2 и 3 будут срабатывать мгновенно, в момент нажатия клавиш Ctrl+ буква.


    Получилось, видимо в прошлый раз чего-то не то делал. Спасибо Вам.


    Пожалуйста помогите написать небольшую прогу на Паскале:

    Текст состоит из 15 слов. Сосчитать кол-во букв ,,а,, в каждом слове и переставить слова по возрастанию кол-ва букв ,,а,,
    09 октября 2006 г. 19:45:



    Hi All !
    Суть проблемы в следующем:
    Имется квадратичная форма (x^T)*Q*x<=1, где x-вектор, а Q-симметричная матрица... Заранее известно, что сие эллипс(рассм 2-й порядок).. Никто не подскажет кк это можно на экран вывести

    x=/x1\
    \x2/
    То есть x1 от X2


    Ребята,если кто знает как на Паскале вывести график детерминированных сигналов,помогите пожалуйста


    Добрый день Ув. Форумчане!
    Хотел бы услышать, как бы Вы решили такую проблемму.

    Есть набор точек записанных в таблицу, кот. состоит из 16*10^6 строчек. Стоит задача найти минимум ф-ции.
    В силу того, что каждая точка в силу измерений имеет погрешность, то нужно для начала сгладить какой-нибуть ф-цией эти точки и затем найти минимум.

    Как можно построить аппроксимирущую ф-цию для такого кол-ва точек? Существуют ли какие-нибуть методы?


    Большое спасибо за ответы!


    Я надеюсь, под рукой есть компьютер :)
    Это легко сделать в Excel. Описывать подробно я не буду, если Вы не знаете, как там строить графики, я расскажу Вам по запросу. После того как вы построите точечный график, в выпадающем меню нужно выбрать "Добавить линию тренда". Вам предложат несколько вариантов апроксимации. ЕСТЕСТВЕННО, у Вас должно быть хоть какое-то представление о том, что это за данные, чтобы выбрать правильный вид апроксиманты. На сколько мне известно, в этом случае эксель апроксимирует методом наименьших квадратов.
    Если экселя нет (например unix) или вам необходимо создать стороннюю программу,
    метод наименьших квадратов легко реализовать на любом языке программирования.

    > Добрый день Ув. Форумчане!
    > Хотел бы услышать, как бы Вы решили такую проблемму.

    > Есть набор точек записанных в таблицу, кот. состоит из 16*10^6 строчек. Стоит задача найти минимум ф-ции.
    > В силу того, что каждая точка в силу измерений имеет погрешность, то нужно для начала сгладить какой-нибуть ф-цией эти точки и затем найти минимум.

    > Как можно построить аппроксимирущую ф-цию для такого кол-ва точек? Существуют ли какие-нибуть методы?

    >
    > Большое спасибо за ответы!


    > Я надеюсь, под рукой есть компьютер :)
    > Это легко сделать в Excel. Описывать подробно я не буду, если Вы не знаете, как там строить графики, я расскажу Вам по запросу. После того как вы построите точечный график, в выпадающем меню нужно выбрать "Добавить линию тренда". Вам предложат несколько вариантов апроксимации. ЕСТЕСТВЕННО, у Вас должно быть хоть какое-то представление о том, что это за данные, чтобы выбрать правильный вид апроксиманты. На сколько мне известно, в этом случае эксель апроксимирует методом наименьших квадратов.
    > Если экселя нет (например unix) или вам необходимо создать стороннюю программу,
    Всё дело в том, что на 16млн строк метод наим. квадратов заглючит!
    Он точно не потянет такой объем данных. И вообще я работать должен с 6 мерным пространством, т.к. у меня точки имеют 6 координат. Ексель здесь не поможет, как и др. пакет..


    > Есть набор точек записанных в таблицу, кот. состоит из 16*10^6 строчек. Стоит задача найти минимум ф-ции.

    О какой функции вообще идет речь? Если в каждой строчке есть 6 значений, и эти 6 значений задают точку в 6D, то что является функцией от этой точки?

    > В силу того, что каждая точка в силу измерений имеет погрешность, то нужно для начала сгладить какой-нибуть ф-цией эти точки и затем найти минимум.
    > Как можно построить аппроксимирущую ф-цию для такого кол-ва точек? Существуют ли какие-нибуть методы?


    здравствуйте нужна программа для нахождению решений неоднородной системы линейных уравнений для систем с неравным колличеством переменных->уравнений на С++


    Привет всем, Следующая Трамблемка имеется, в решении которой надеюсь на вашу помощь. Итак, последовательность целых чисел состоит из сл. элементов (0,1,2,...,у,...,Н), где Н - неизвестный макс.элемент последовательности. Числа из данной последовательности используются как индексы для именования. Задача состоит в нахождении элемента Н+1. Обычный перебор элементов с инкрементированием приводит от определенного числа элементов последовательности к неудовлетворительным времменным затратам:-( Посему предлагается соотв. более оптимальный алгоритм применить для поиска. Например, возможно разбиение последовательности сл.обр. ([0,x), [x,y), [y,z),…,[r,M], где M - максимальнодопустимая граница при поиске,по достижении которой поиск безрезультатно останавливается. За критерий оптимальности было выбрано кол-во запросов к последовательности при достижении результата как и временной интервал при поиске. При этом возникли такие вопросы: Какой алгоритм при поиске внутри интервалов выбрать? Какой алгоритм при пересчете границ интервалов выбрать? Спасибо за советы:-)


    Выбор языка программирования для научных работников


    [Перенесено модератором из форума "Форум по математике"]

    Сообщение №21350 от Shubik 17 мая 2007 г. 13:49
    Тема: Нормальные алгоритмы Маркова

    Помогите построить нормалный алгоритм реализующий умножение двух чисел...Очень надо! Пожалуйста)))

    Отклики на это сообщение:

    > Помогите построить нормалный алгоритм реализующий умножение двух чисел...Очень надо! Пожалуйста)))

    Чем же тут помочь...

    А что у Вас уже есть? Нормальный алгоритм сложения есть? Каких чисел (натуральных, рациональных, КДЧ)? В каком алфавите (в Марковских "палочках" или, скажем, в двоичной кодировке)?


    Ребята помогите пожалуйста до среды нужно.
    Необходимо в МATHCADE написать программу решения дифференциального уравнения
    L*d^2q/dt^2+R*dq/dt+(1/C)*q=0 используя функции Odesolver и Given.У меня почему-то выдает ошибки.Помогите.


    > Очень нужно написать калькулятор на ассемблере под 8086, TASM. Калькулятор должен выполнять 4математических действия и add, xor, or. Должен работать с числами 2, 8, 10, 16 системы. Число определяется по букве в конце (b, o, d, h), причём буквы могут быть как большие, так и маленькие. Действие тоже написанно словом, а не знаком и любым размером букв. Вввод данных такой: число действие число. Есть пару похожих калькуляторов, но сделать изменения не хватает знаний ((


    > > Очень нужно написать калькулятор на ассемблере под 8086, TASM. Калькулятор должен выполнять 4математических действия и add, xor, or. Должен работать с числами 2, 8, 10, 16 системы. Число определяется по букве в конце (b, o, d, h), причём буквы могут быть как большие, так и маленькие. Действие тоже написанно словом, а не знаком и любым размером букв. Вввод данных такой: число действие число. Есть пару похожих калькуляторов, но сделать изменения не хватает знаний ((

    Судя по условию работать "с числами 2, 8, 10, 16 системы", есть предположение, что задуман демонстрационный калулятор. Ведь в остальных случаях пользуются одной системой счета. Если это так, то проще написать программу на языке высокого уровня, где основная задача - преобразование вводимых и выводимых чисел из одной системы счета в другую.


    Подскажите где доступно и на примере можно найти как решать задачи методами нечеткого математического программирования (н-р, для нечеткого линейного программирования, транспортной задачи).


    Здравствуйте!!!

    Мне необходимо решить систему нелинейных уравнений в Matlab. Система имеет 2 особенности:

    1) Количество уравнений довольно большое (от 30 и более);
    2) Необходима высокая точность результатов (мне известны истинные значения и необходимо их же получить с помощью fsolve в Matlab)

    Проблема в том, что функция fsolve не дает мне решений с требуемой точностью. Пробовал рассчитывать якобиан системы как вручную (путем задания формул), так и с помощью функции fsolve (расчет ведется внутри). К тому же, результат очень сильно зависит от начального приближения. Очень часто выдается сообщение, что итерационный процесс остановлен, т.к. результат сходится не к нулю функции, а к ее минимуму, хотя квадрат нормы всех функций системы очень мал.

    Что вы мне посоветуете для повышения точности результатов работы функции fsolve? Может, есть еще какие-то функции для решения систем нелинейных уравнений? Буду признателен за любые советы и комментарии.

    С уважением,

    Dmitry


    [Перенесено модератором из форума "Форум по математике"]

    Сообщение №24410 от tilekus 18 апреля 2008 г. 23:26
    Тема: Помогите решить задачу

    Нужно отнять одно число от другого без использования знака минус.
    Такое действие тоже недопустимо: 2+(-3)
    а если первое число меньше второго то должно получится отрицательное число - это допустимо.
    Пожалуйста ПОМОГИТЕ!!!
    Хоть убейте но не смог решить...

    Отклики на это сообщение:

    > Нужно отнять одно число от другого без использования знака минус.
    > Такое действие тоже недопустимо: 2+(-3)
    > а если первое число меньше второго то должно получится отрицательное число - это допустимо.
    > Пожалуйста ПОМОГИТЕ!!!
    > Хоть убейте но не смог решить...
    Надо было указать - из какаого раздела математики задание.
    Полагаю - из дискретной математики или информатики.
    В компьютере, например, для сложения и вычитания используется один и тот же алгоритм (экономия в электронной схеме). Но вычитаемое число инвертируется перед тем, как сложить его с вычитателем.
    Пример: От 65 отнять 43. Число 43 инвертируют, 100-43=57.
    65 плюс 57 равно 122 , приводим его к обычному виду 122-100 = +22.
    Пример: От 45764 отнять 65426. Число 65426 инвертируют, 100000-65426=34574.
    45764 плюс 34574 равно 80338 - получилось только 5 разрядов (значит -число отрицательное), приводим его к обычному виду 100000-80338 = 19662 со знаком минус.


    > Пожалуйста, помогите!!! До воскресенья нужно разработать систему перекодировки целых чисел между системами с основаниями 2,10,8 и 16 на языке С++. В голову никак не придет алгоритм. Буду сильно, сильно, сильно-сильно благодарен =)


    > > Пожалуйста, помогите!!! До воскресенья нужно разработать систему перекодировки целых чисел между системами с основаниями 2,10,8 и 16 на языке С++. В голову никак не придет алгоритм. Буду сильно, сильно, сильно-сильно благодарен =)
    Простейший алгоритм:
    1.Задаем массив символов S(32), хотя нам задано до 16-ричных чисел
    S="123456789ABCDEFGHIJKLMNJHQRSTUV"-все символы до 32-ричных чисел
    2. С=56565 (ввод десятичного числа)
    3. Последовательно делим это число на выбраное основание (например 16)
    56565/16=3535,3125 , выделяем целое (3535) и моду(остаток) 56565-3535*16 = (5).
    3535/16=220,9375 , выделяем целое (220) и моду(остаток) 3535-220*16 = (15).
    220/16=13,75 , выделяем целое (13) и моду(остаток) 220-13*16 = (12).
    12/16=0,75 , выделяем целое (0) и моду(остаток) 12-0*16 = (12).
    4.Как только получили целое (0), кончаем вычислять и записываем код числа символами "ССF5", (так как С -12ый символ,F -15ый символ, 5 -5ый символ)
    то есть сцепляем S(12),S(12),S(15),S(5).
    5.Условие: если в очередном остатке получается 0, то вставляем символ "0".

    Другой алгоритм (с использованием стандартных кодов ASCI):
    С=777 (ввод десятичного числа)
    C3=0 - индикатор перехода на символы АВСDEFGHIJKLMNO..
    Cc="" - символьная переменная (число в текстовом формате)
    Оператор цикла N от 2 до 32
    Cc="" - символьная переменная (пока пустая)
    Оператор перехода (выполнять, пока (С>0))
    Moda=С-N*Целое(С/N)- вычисляем остаток от деления на основание N
    Если (Moda>9), то С3=1, если нет(Еlze), то С3=0.
    Simv=Символ (Moda+48+7*С3)& Cc - сцепляем символ очередного разряда
    C=Целое(С/N)
    Конец для условного перехода
    Печатать N_; Simv
    Конечный оператор цикла (Next N)
    Конец
    Пример одного прогона (получение числа с основанием 3)
    Дано десятичное число 777
    777/3=259 (Мода=0) Симмвол "0"
    259/3=86,..(Мода=1) Симмвол "10"
    86/3=28,...(Мода=2) Симмвол "210"
    28/3=9,...(Мода=1) Симмвол "1210"
    9/3=3 . .(Мода=0) Симмвол "01210"
    3/3=1 . .(Мода=0) Симмвол "001210"
    1/3=0,..(Мода=1) Симмвол "1001210"
    Конец прогона (целое от деления -0)
    Печать: 3_1001210
    Еще пример прогона (получение числа с основанием 32)
    Дано десятичное число 77777
    77777/32=2430 (Мода=17) Симмвол "Н"
    2430/32=75,..(Мода=30) Симмвол "UH"
    75/32=2,...(Мода=11) Симмвол "BUH"
    2/32=0,...(Мода=2) Симмвол "2BUH"
    Конец прогона (целое от деления -0)
    Печать: 32_2BUH


    >
    помогите пожалусто на пятницу нужно зделать не могу хоть убейте!!!
    Изобразить на экране рисунок произвольного вида.
    Требования к программе:
    1 язык програмирования-Си
    2.использование как можно больше различных графических примитивов ( линия, эллипс, прямоугольник и др.)
    3.вывод надписей в текстовом режиме
    4. использование цветовой палитры
    5.демонстрация движения элементов рисунка


    [Перенесено модератором из форума "Форум по математике"]

    Сообщение №24749 от Олекс 21 мая 2008 г. 18:19
    Тема: Найти большее/меньшнн число...

    Задача: написать выражение с двумя/тремя переменными, результат вычисления которого равняется большей/меньшей переменной, используя функции сложения (вычитания), умножения (деления), возведения в степень. Другими словами, надо разложить функцию МАКС()/МИН().
    Как это сделать?

    Отклики на это сообщение:

    > Задача: написать выражение с двумя/тремя переменными, результат вычисления которого равняется большей/меньшей переменной, используя функции сложения (вычитания), умножения (деления), возведения в степень. Другими словами, надо разложить функцию МАКС()/МИН().
    > Как это сделать?


    Если можно юзировать целую часть[] тогда большее можно получить как:
    max(a,b) = [a/b]^[b/a]*a + [b/a]^[a/b]*b


    Предлагаю вашему вниманию, придуманный мной алгоритм факторизации.
    Идея алгоритма - анализ остатка от деления.
    Для оценки каждого числа-претендента используется 4 операции сложения
    (сравнение - тоже сложение). При начальной инициализации используется деление на 2
    - его можно заменить сдвигом.

    Задачу решил графически - затем алгоритм подогнал под решение.
    Для больших чисел > 4294967295 не проверял - не владею ассемблером.
    Считаю, что данное решение самое быстрое из известных ... надо бы проверить, но исхожу из того, что что может быть быстрее сложения.
    Для промышленной оценки производительности, думаю, нужно паять аппаратное решение,
    чтобы не было потерь на работе операционки.

    Пример на Delphi:
    procedure TForm1.Button1Click(Sender: TObject);
    var
     Source : TNumber;
     Index : TNumber;
     Shift : TNumber;
     Candidat : TNumber;
    begin
      Source:=strtoint(Edit1.text); // Source Number
      Index:=2;
      Candidat:=Trunc(Source/Index); // Prepare Initial Situation
      Shift:=Source-Candidat*Index;
      if (Shift=0) then begin
        Memo1.Lines.Add(inttostr(Candidat)); // Result
      end;

    // Process

      while (Candidat>0) do begin
        if (Candidat>Shift) then begin
          dec(Candidat);
          Shift:=Shift+Index;
        end
        else begin
          inc(Index);
          Shift:=Abs(Candidat-Shift);
          if (Shift=0) then begin
            Memo1.Lines.Add(inttostr(Candidat)); // Result
          end; // if
        end; // if
      end; // while
    end; // procedure


    Простой пакет Борланд 3.1 из-под ДОС Есть ли смысл использовать его, чтобы программировать чисто вычислительные задачки под СИ


    Помогите, пожалуйста, решить задачу на языке С++.Очень надо, сам не рублю, надеюсь на помощь.
    Задача.
    Вводятся целые числа a и b.Пусть в треугольнике ABC координаты A=(0,0), B=(a,b), а обе координаты C=(x,y)-целые числа, и площадь треугольника ABC не равна нулю.Какую минимальную площадь может иметь треугольник ABC?


    Нужно решить задачи
    Это Паскаль.Например,решение:
    Var
    i, j : integer;
    Begin
    for i := 1 to n do {пробегая последовательно строки и столбцы массива}
    begin
    for j := 1 to m do
    write(X[i, j]:5); {выведем элемент массива на экран, выделив ему 5 знакомест}
    writeln; {переход на новую строку}
    end;
    End;

    Требуется поменять местами первый элемент массива с максимальным.

    Формат входных данных

    В первой строке вводится одно натуральное число, не превосходящее 1000 – размер массива. Во второй строке задаются N чисел – элементы массива (целые числа, не превосходящие по модулю 1000).

    Формат выходных данных

    Вывести получившийся массив. Если максимальных элементов несколько, требуется поменять первый из них.

    Напишите функцию, которая определяет, встречается ли заданное число x в данном массиве.
    Входные данные

    В первой строке задается одно натуральное число N, не превосходящее 1000 – размер массива.

    Во второй строке вводятся N чисел – элементы массива (целые числа, не превосходящие по модулю 1000).

    В третьей строке содержится одно целое число x, не превосходящее по модулю 1000.
    Выходные данные

    Вывести YES , если число x встречается в данном массиве, и NO в противном случае.

    Напишите функцию, которая определяет, сколько раз встречается заданное число x в данном массиве.
    Входные данные

    В первой строке задается одно натуральное число N, не превосходящее 1000 – размер массива.

    Во второй строке вводятся N чисел – элементы массива (целые числа, не превосходящие по модулю 1000).

    В третьей строке содержится одно целое число x , не превосходящее по модулю 1000.
    Выходные данные

    Вывести одно число – сколько раз встречается x в данном массиве.

    Напишите функцию, которая возвращает самое близкое к данному число из массива.
    Входные данные

    В первой строке задается одно натуральное число N, не превосходящее 1000 – размер массива.

    Во второй строке содержатся N чисел – элементы массива (целые числа, не превосходящие по модулю 1000).

    В третьей строке вводится одно целое число x, не превосходящее по модулю 1000.
    Выходные данные

    Вывести значение элемента массива, ближайшее к x. Если таких чисел несколько, выведите любое из них.


    Напишите программу, которая выводит номера элементов массива, равных данному числу.
    Входные данные

    В первой строке задается одно натуральное число N, не превосходящее 1000 – размер массива.

    Во второй строке вводятся N чисел – элементы массива (целые числа, не превосходящие по модулю 1000).

    В третьей строке содержится одно целое число x, не превосходящее по модулю 1000.
    Выходные данные

    Вывести номера элементов, равных данному, в порядке возрастания. Если таких элементов нет, ничего выводить не нужно.

    Напишите программу, которая находит значение максимального элемента массива.
    Входные данные

    В первой строке задается одно натуральное число N, не превосходящее 1000 – размер массива.

    Во второй строке вводятся N чисел – элементы массива (целые числа, не превосходящие по модулю 1000).
    Выходные данные

    Вывести одно число – значение максимального элемента в массиве.


    Напишите программу, которая находит номер максимального элемента массива.
    Входные данные

    В первой строке задается одно натуральное число N, не превосходящее 1000 – размер массива.

    Во второй строке вводится N чисел – элементы массива (целые числа, не превосходящие по модулю 1000).
    Выходные данные

    Вывести одно число – номер максимального элемента в массиве. Если в массиве несколько максимальных элементов, выведите номер любого из них.


    Требуется отсортировать массив по неубыванию методом "выбор максимума".

    Формат входных данных

    В первой строке вводится одно натуральное число, не превосходящее 1000 – размер массива. Во второй строке задаются N чисел – элементы массива (целые числа, не превосходящие по модулю 1000).

    Формат выходных данных

    Вывести получившийся массив.


    Требуется вставить в данный массив на данное место данный элемент, сдвинув остальные элементы вправо.

    Формат входных данных

    В первой строке вводится одно натуральное число, не превосходящее 1000 – размер массива. Во второй строке задаются N чисел – элементы массива (целые числа, не превосходящие по модулю 1000). В третьей строке вводится число, которое необходимо вставить, и номер места, на которое его нужно вставить.

    Формат выходных данных

    Вывести получившийся массив.


    Требуется отсортировать массив по неубыванию методом "вставок".

    Формат входных данных

    В первой строке вводится одно натуральное число, не превосходящее 1000 – размер массива. Во второй строке задаются N чисел – элементы массива (целые числа, не превосходящие по модулю 1000).

    Формат выходных данных

    Вывести получившийся массив.


    Требуется отсортировать массив по неубыванию методом "пузырька".

    Формат входных данных

    В первой строке вводится одно натуральное число, не превосходящее 1000 – размер массива. Во второй строке задаются N чисел – элементы массива (целые числа, не превосходящие по модулю 1000).

    Формат выходных данных

    Вывести получившийся массив.


    Искал по теме шашек, и нашёл в архиве шашечную задачу: http://physics-files.narod.ru/matboard/themes/8205.html

    Там суть в том, как перебрать все позиции на доске, если шашки на дамочные поля становиться не могут. Как раз то, что надо. :)
    Решение такое:

    * * * * * * * * * *
    Пусть i - количество черных шашек/дамок и белых дамок на полях 28..31,
    j - количество белых шашек/дамок и черых дамок на полях 0..3.
    Они должны удовлетворять следующим неравенствам:
    0<=i<=4
    0<=j<=4
    i+j<=6

    Всего 22 различных пары (i,j).

    Количество возможных позиций:

    Sum C(4,i)*3^i * C(4,j)*3^j * C(24,6-i-j)*4^(6-i-j) =
    = 2503611964

    Здесь суммирование ведется по всем i,j как указано выше.
    Алгоритм нумерации легко вывести из этой формулы.
    * * * * * * * * * *

    Классно! :)

    Но тут есть одно но. При таком подходе позиции идут в разнобой. То есть, допустим если в позиции три белых шашки и три чёрных, то такая позиция не может перейти в позицию с четырьмя белыми и двумя чёрными. Хорошо бы их сгруппировать по цветам и дамкам, чтобы можно было из такой базы вычленять куски с родственными позициями.

    Можно ли так сделать?

    Стал думать. Подумал, что прежде всего, наверное надо разделить все позиции по тому сколько в них какого цвета дамок и сколько и какого цвета шашек (в смысле не дамок). Посчитал позиции получилось 84 варианта (это при 6 штуках на доске). А вот дальше у меня дело не идёт. Как прокомбинаторить позиции, если есть N белых шашек, X чёрных шашек, Y белых дамок и Z чёрных дамок. Причём белые шашки не могут стоять на последних четырёх клетках, а чёрные - на первых четырёх.

    В принципе - это таже задача, что и в архиве, но с дополнительным условием.

    Не подскажите, как решить?


    [Перенесено модератором из форума "Форум по математике"]

    Сообщение №25990 от Al_Silverstone 21 октября 2008 г. 10:14
    Тема: Как сложить неслагаемое?

    Работаю программистом. Заказчик поставил задачу неподвластную моему мозгу технаря: необходимо просуммировать материалы по количеству. Загвоздка: единицы измерения материалов - КМ, ШТ и М2. Как это сделать подскажите! Есть вариант измерить длину штук и приплюсовать к КМ, а как тогда быть с М2?
    А если серьезно, подскажите, как математически обосновать невозможность данного действия. (Если, конечно, уже не придумали какую-то неизвестную мне формулу преобразования любой единицы измерения в требуемую).

    Отклики на это сообщение:

    Придумать можно что угодно. Главный вопрос: Для чего это надо? Что с этим будете делать дальше?
    Самое простое складывать КМ с КМ, ШТ с Шт и М2 с М2. Будет у Вас трёхмерный массив, ну и что. Ну уж додуматься все сложить в трехмерный массив у меня ума бы хватило именно вся загвоздка в том, что им необходимо провести инвентаризацию по складу, и по этой причине в ячейке ИТОГО должно быть отражено общее количество по складу. К сожалению такой вариант, как на вашем складе столько-то км первого материала, столько-то м2 второго материала, и столько-то штук третьего им не подходит. им нужна одна цифра!!! (люди видимо далекие от математики). Потому я и спрашиваю, каким образом мне научно объяснить человеку, что это сделать невозможно? Как донести, что не придумали еще технологию суммирования штук и километров в одно число? Придумали!
    В рублях или ещё какой валюте.


    Искал по теме шашек, и нашёл в архиве шашечную задачу: http://physics-files.narod.ru/matboard/themes/8205.html

    Там суть в том, как перебрать все позиции на доске, если шашки на дамочные поля становиться не могут. Как раз то, что надо. :)
    Решение такое:

    * * * * * * * * * *
    Пусть i - количество черных шашек/дамок и белых дамок на полях 28..31,
    j - количество белых шашек/дамок и черых дамок на полях 0..3.
    Они должны удовлетворять следующим неравенствам:
    0<=i<=4
    0<=j<=4
    i+j<=6

    Всего 22 различных пары (i,j).

    Количество возможных позиций:

    Sum C(4,i)*3^i * C(4,j)*3^j * C(24,6-i-j)*4^(6-i-j) =
    = 2503611964

    Здесь суммирование ведется по всем i,j как указано выше.
    Алгоритм нумерации легко вывести из этой формулы.
    * * * * * * * * * *

    Классно! :)

    Но тут есть одно но. При таком подходе позиции идут в разнобой. То есть, допустим если в позиции три белых шашки и три чёрных, то такая позиция не может перейти в позицию с четырьмя белыми и двумя чёрными. Хорошо бы их сгруппировать по цветам и дамкам, чтобы можно было из такой базы вычленять куски с родственными позициями.

    Можно ли так сделать?

    Стал думать. Подумал, что прежде всего, наверное надо разделить все позиции по тому сколько в них какого цвета дамок и сколько и какого цвета шашек (в смысле не дамок). Посчитал позиции получилось 84 варианта (это при 6 штуках на доске). А вот дальше у меня дело не идёт. Как прокомбинаторить позиции, если есть N белых шашек, X чёрных шашек, Y белых дамок и Z чёрных дамок. Причём белые шашки не могут стоять на последних четырёх клетках, а чёрные - на первых четырёх.

    В принципе - это таже задача, что и в архиве, но с дополнительным условием.

    Не подскажите, как решить?


    [Перенесено модератором из форума "Форум по математике"]

    Сообщение №26045 от Любитель 23 октября 2008 г. 01:55
    Тема: Почему удалили задачу про шашки? Слишком сложная?

    Почему удалили задачу про шашки? Слишком сложная?

    Настоящий математик не должен бояться сложных задач.

    Отклики на это сообщение:

    [Перенесено модератором из форума "Форум по математике"]

    Сообщение №26027 от Fw: Любитель 22 октября 2008 г. 16:23
    Тема: Шашечная задача из архива Упорядочивание позиций

    Искал по теме шашек, и нашёл в архиве шашечную задачу: http://physics-files.narod.ru/matboard/themes/8205.html

    Там суть в том, как перебрать все позиции на доске, если шашки на дамочные поля становиться не могут. Как раз то, что надо. :)
    Решение такое:

    * * * * * * * * * *
    Пусть i - количество черных шашек/дамок и белых дамок на полях 28..31,
    j - количество белых шашек/дамок и черых дамок на полях 0..3.
    Они должны удовлетворять следующим неравенствам:
    0<=i<=4
    0<=j<=4
    i+j<=6

    Всего 22 различных пары (i,j).

    Количество возможных позиций:

    Sum C(4,i)*3^i * C(4,j)*3^j * C(24,6-i-j)*4^(6-i-j) =
    = 2503611964

    Здесь суммирование ведется по всем i,j как указано выше.
    Алгоритм нумерации легко вывести из этой формулы.
    * * * * * * * * * *

    Классно! :)

    Но тут есть одно но. При таком подходе позиции идут в разнобой. То есть, допустим если в позиции три белых шашки и три чёрных, то такая позиция не может перейти в позицию с четырьмя белыми и двумя чёрными. Хорошо бы их сгруппировать по цветам и дамкам, чтобы можно было из такой базы вычленять куски с родственными позициями.

    Можно ли так сделать?

    Стал думать. Подумал, что прежде всего, наверное надо разделить все позиции по тому сколько в них какого цвета дамок и сколько и какого цвета шашек (в смысле не дамок). Посчитал позиции получилось 84 варианта (это при 6 штуках на доске). А вот дальше у меня дело не идёт. Как прокомбинаторить позиции, если есть N белых шашек, X чёрных шашек, Y белых дамок и Z чёрных дамок. Причём белые шашки не могут стоять на последних четырёх клетках, а чёрные - на первых четырёх.

    В принципе - это таже задача, что и в архиве, но с дополнительным условием.

    Не подскажите, как решить?

    Отклики на это сообщение:

    Искал по теме шашек, и нашёл в архиве шашечную задачу: http://physics-files.narod.ru/matboard/themes/8205.html

    Там суть в том, как перебрать все позиции на доске, если шашки на дамочные поля становиться не могут. Как раз то, что надо. :)
    Решение такое:

    * * * * * * * * * *
    Пусть i - количество черных шашек/дамок и белых дамок на полях 28..31,
    j - количество белых шашек/дамок и черых дамок на полях 0..3.
    Они должны удовлетворять следующим неравенствам:
    0<=i<=4
    0<=j<=4
    i+j<=6

    Всего 22 различных пары (i,j).

    Количество возможных позиций:

    Sum C(4,i)*3^i * C(4,j)*3^j * C(24,6-i-j)*4^(6-i-j) =
    = 2503611964

    Здесь суммирование ведется по всем i,j как указано выше.
    Алгоритм нумерации легко вывести из этой формулы.
    * * * * * * * * * *

    Классно! :)

    Но тут есть одно но. При таком подходе позиции идут в разнобой. То есть, допустим если в позиции три белых шашки и три чёрных, то такая позиция не может перейти в позицию с четырьмя белыми и двумя чёрными. Хорошо бы их сгруппировать по цветам и дамкам, чтобы можно было из такой базы вычленять куски с родственными позициями.

    Можно ли так сделать?

    Стал думать. Подумал, что прежде всего, наверное надо разделить все позиции по тому сколько в них какого цвета дамок и сколько и какого цвета шашек (в смысле не дамок). Посчитал позиции получилось 84 варианта (это при 6 штуках на доске). А вот дальше у меня дело не идёт. Как прокомбинаторить позиции, если есть N белых шашек, X чёрных шашек, Y белых дамок и Z чёрных дамок. Причём белые шашки не могут стоять на последних четырёх клетках, а чёрные - на первых четырёх.

    В принципе - это таже задача, что и в архиве, но с дополнительным условием.

    Не подскажите, как решить?

    См. тему "Программы. программирование и т. д." > См. тему "Программы. программирование и т. д."

    А. Понял, спасибо.
    Я просто оставил закладку на страницу в браузере, а вместо неё стало писаться "Error 404 - Страница не найдена.". Вот я и подумал, что удалили. :)

    Поразмыслив над задачей, решил разделить варианты по-другому.

    Если выше было i и j, количество материала на дамочных полях белых и чёрных. То я сделал аж 10 переменных.

    bd0003, wm0003, wd0003,
    bm0427, bd0427, wm0427, wd0427,
    bm2831, bd2831, wd2831

    Здесь индексы bm - это чёрные шашки (black man), bd - чёрные дамки, wm - белые шашки и wd - белые дамки.

    А цифры 0003 - это значит на полях 00..03. Дамочные поля со стороны белых. Там чёрные шашки стоять не могут, поэтому bm0003 отсутствует.
    А цифры 0003 - поля 04..27. Центральные не дамочные поля.
    А цифры 0003 - поля 28..31. Дамочные поля со стороны чёрных. Там белые шашки стоять не могут, поэтому отсутствует wm2831.

    При этом есть три условия:
    1) bd0003 + wm0003 + wd0003 <= 4
    2) bm2831, bd2831, wd2831 <= 4

    Так как дамочных полей четыри.

    3) bd0003 + wm0003 + wd0003 + bm0427 + bd0427 + wm0427 + wd0427 + bm2831 + bd2831 + wd2831 <= 6

    Потому, что общее число материала не должно привышать шести.


    Далее я на компьютере перебрал все возможные сочетания. Потому, что по какой формуле это можно посчитать - я просто не представляю.

    В результате получилось 4655 сочетаний всех этих параметров. Жуть! Всё больше и больше! Когда было 84 сочетания - я тоже думал, что много. А вот теперь почти на два порядка больше.

    На этом моя творческая мысль пока остановилась. Если кто-нибудь чего-нибудь посоветует - буду очень рад.


    Поразмыслив над задачей, решил разделить варианты по-другому.

    Если выше было i и j, количество материала на дамочных полях белых и чёрных. То я сделал аж 10 переменных.

    bd0003, wm0003, wd0003,
    bm0427, bd0427, wm0427, wd0427,
    bm2831, bd2831, wd2831

    Здесь индексы bm - это чёрные шашки (black man), bd - чёрные дамки, wm - белые шашки и wd - белые дамки.

    А цифры 0003 - это значит на полях 00..03. Дамочные поля со стороны белых. Там чёрные шашки стоять не могут, поэтому bm0003 отсутствует.
    А цифры 0003 - поля 04..27. Центральные не дамочные поля.
    А цифры 0003 - поля 28..31. Дамочные поля со стороны чёрных. Там белые шашки стоять не могут, поэтому отсутствует wm2831.

    При этом есть три условия:
    1) bd0003 + wm0003 + wd0003 <= 4
    2) bm2831, bd2831, wd2831 <= 4

    Так как дамочных полей четыри.

    3) bd0003 + wm0003 + wd0003 + bm0427 + bd0427 + wm0427 + wd0427 + bm2831 + bd2831 + wd2831 <= 6

    Потому, что общее число материала не должно привышать шести.


    Далее я на компьютере перебрал все возможные сочетания. Потому, что по какой формуле это можно посчитать - я просто не представляю.

    В результате получилось 4655 сочетаний всех этих параметров. Жуть! Всё больше и больше! Когда было 84 сочетания - я тоже думал, что много. А вот теперь почти на два порядка больше.

    На этом моя творческая мысль пока остановилась. Если кто-нибудь чего-нибудь посоветует - буду очень рад.


    Если координаты третьей вершины не даны, тогда площадь треугольника может быть сколь угодно малой при стремлении координаты вершины C к прямой, содержащей AB. Постановка заачи некорректна.


    В технических расчетах следует полностью усвоить влияние отдельных величин на конечный результат и постоянно обращать внимание на смысл величины. Особенно это важно при расчетах по незнакомым формулам.

    Вычисления


    > Математический анализ. Тему ведет Leon

    Коллеги,
    большая просьба сообщить как найти уравнение табулированной функции от двух переменных
    средствами Matchad, mathematica,...

    Изначально функция задана в виде таблицы.

    нужна двумерная интерполяция сплайнами?
    мне важно найти именно уравнение, все возможные варианты.


    Скажите, пожалуйста, программирует ли сейчас кто-нибудь под Borland C++ Version 3.1


    > Скажите, пожалуйста, программирует ли сейчас кто-нибудь под Borland C++ Version 3.1
    иногда и очень плохо


    > > Скажите, пожалуйста, программирует ли сейчас кто-нибудь под Borland C++ Version 3.1
    > иногда и очень плохо

    А что такое "плохо". Особенно интересно, что "очень"


    > > > Скажите, пожалуйста, программирует ли сейчас кто-нибудь под Borland C++ Version 3.1
    > > иногда и очень плохо

    > А что такое "плохо". Особенно интересно, что "очень"

    Меня тоже интересует, чем плоха платформа.


    > > > > Скажите, пожалуйста, программирует ли сейчас кто-нибудь под Borland C++ Version 3.1
    > > > иногда и очень плохо

    > > А что такое "плохо". Особенно интересно, что "очень"

    > Меня тоже интересует, чем плоха платформа.

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


    > > > > > Скажите, пожалуйста, программирует ли сейчас кто-нибудь под Borland C++ Version 3.1
    > > > > иногда и очень плохо

    > > > А что такое "плохо". Особенно интересно, что "очень"

    > > Меня тоже интересует, чем плоха платформа.

    > ничего по этому поводу не могу сказать кроме того что она жутко устарела, моё очень плохо относилось к моему программированию в С++ вообще.

    А что, в других платфомах какой-то другой язык С++?


    > > > > > > Скажите, пожалуйста, программирует ли сейчас кто-нибудь под Borland C++ Version 3.1
    > > > > > иногда и очень плохо

    > > > > А что такое "плохо". Особенно интересно, что "очень"

    > > > Меня тоже интересует, чем плоха платформа.

    > > ничего по этому поводу не могу сказать кроме того что она жутко устарела, моё очень плохо относилось к моему программированию в С++ вообще.

    > А что, в других платфомах какой-то другой язык С++
    Я тоже плохо отношусь к С++. Могу объяснить почему.
    Ну, а вопрос то был про Borland C++ Version 3.1


    Помогите пожалуйста решить такую задачу.
    Есть массив равномерно распределенных случайных чисел на интервале [0,1]
    Надо на основе этого массива методом кусочной аппроксимации сгенерировать последовательность случайных величин на отрезке [2,12] так, чтобы функция плотности их распределения была функцией распределения Коши (Вобщем то не важно уж какая функция плотности распределения, может быть любая другая : Экспоненциальная, Вейбула ,СИмпсона и тд). Помогите реализовать плз на любом языке программирования.


    Люди, поиогите, нежен алгоритм распараллеливания решения СЛАУ


    Vse ti znaesh


    > Vse ti znaesh

    В чем собственно суть вашего сообщения?


    > Turbo Pascal+Windows XP

    >
    > Не знаю, где лучше задать этот вопрос.
    > Несколько лет назад я написал программу на Turbo Pascal+Windows98
    > для расчета индукции магнита, которая выдает результат в виде
    > графика с текстом на русском языке.
    > Сейчас при переходе на Windows XP обнаружил, что эта программа
    > вместо русских букв выдает "каракатицы".
    > В Windows XP нет команды, которая была в Windows 98. :
    > mode con codepage prepare=((866) C:\WIN98\COMMAND\ega3.cpi)
    > mode con codepage select=866
    > А старый Turbo Pascal показывает "каракатицы" в кодировке 1251.
    > Помогите решить эту проблему.
    > Телефона Била Гейца я тоже не знаю.:-)
    > 10 марта 2006 г. 14:25

    используй keyrus или fnu
    запусти cmd --> fnu --> TURBO.exe


    >

    может кто нить помочь решить задачу???
    Вводится последовательность целых чисел. 0 – конец после-довательности. Найти два наименьших числа.
    спасибо заранее)))


    > >

    > может кто нить помочь решить задачу???
    > Вводится последовательность целых чисел. 0 – конец после-довательности. Найти два наименьших числа.
    > спасибо заранее)))

    А в чем собственно проблема? Переберите последовательно все числа. Найдите наименьшее. Выкинете его из последовательности. Повторите процедуру заново.


    блин проблема в том что я ваще плохо в этом разбираюсь)))))
    мне в универе задали на зачёт просто)))))) вот сижу ищу в нете решение)))))


    > >

    блин проблема в том что я ваще плохо в этом разбираюсь)))))
    мне в универе задали на зачёт просто)))))) вот сижу ищу в нете решение)))))


    > > >

    > блин проблема в том что я ваще плохо в этом разбираюсь)))))
    > мне в универе задали на зачёт просто)))))) вот сижу ищу в нете решение)))))

    В инете НЕТ решения.
    А доцент тупой!


    помогите пожалуйста решить задачу вот условие: Составить таблицу значений функций y=sin²x + cosx на отрезке [-3.14;3.14] с шагом 0,1.
    (записать несколько способов решения программ)зарание спс


    > Помогите, пожалуйста, написать программу!

    Решение нужно на языке Паскаль.
    Условие: Составить таблицу значений функций y=sin²x + cosx на отрезке [-3.14;3.14] с шагом 0,1.(записать несколько способов решения программ).

    Зарание спасибо!!!


    > > Помогите, пожалуйста, написать программу!
    > Решение нужно на языке Паскаль.
    > Условие: Составить таблицу значений функций y=sin²x + cosx на отрезке [-3.14;3.14] с шагом 0,1.(записать несколько способов решения программ).

    Текст программы на Паскале:
    Var Tab array[1..2,1..64]: real; x: real;
    begin
    x:= - 3,14; {начальное значение х}
    for i: =1 to 64 do {начало цикла}
    begin
    Tab[1,i]: =x
    Tab[2,i]: =sin(x)*sin(x)+ cos(x); {расчет значения y}
    writeln (Tab[1,i], Tab[1,i] ); {вывод на экран значений x,y}
    x:= x + 0.1; {увеличение значения x в цикле}
    end {окончание цикла}
    end.

    Если версия языка иная, то исправить синтаксис.


    > > Помогите, пожалуйста, написать программу!

    Извините, пожалуйста, но вы бы не могли мне помочь написать еще один вариант решения этой задачи?


    > > > Помогите, пожалуйста, написать программу!

    > Извините, пожалуйста, но вы бы не могли мне помочь написать еще один вариант решения этой задачи?

    > Текст программы на Паскале:
    > Var Tab array[1..2,1..64]: real; x: real;
    > begin
    > x:= - 3,14; {начальное значение х}
    > for i: =1 to 64 do {начало цикла}
    > begin
    > Tab[1,i]: =x
    > Tab[2,i]: =sin(x)*sin(x)+ cos(x); {расчет значения y}
    > writeln (Tab[1,i], Tab[1,i] ); {вывод на экран значений x,y}
    > x:= x + 0.1; {увеличение значения x в цикле}
    > end {окончание цикла}
    > end.

    Копируем и изменяем программу, хотя смысл вычисления тот же:

    Var Tab array[1..2,1..64]: real; x: real; i: integer
    begin
    x:= - 3,14; {начальное значение х}
    i:=1
    10: Tab[1,i]: =x
    Tab[2,i]: =sin(x)*sin(x)+ cos(x); {расчет значения y}
    writeln (Tab[1,i], Tab[1,i] ); {вывод на экран значений x,y}
    x:= x + 0.1; {увеличение значения x в цикле}
    i:=i+1
    if i<64 go 10 {переход на метку 10 пока не вып. условие}
    end.


    Физика в анимациях - Купить диск - Тесты по физике - Графики on-line

    Реклама:
    Rambler's Top100