Недавно у меня получилось создать свою первую обработку - Калькулятор. В этой обработке мы самым примитивным способом ищем в веденном поле нужную нам операцию, далее просто вычисляем выражение с этой Одной операцией.
Я хочу сделать более функциональнее свой калькулятор. Начну с того, чтобы Пользователь мог ввести ни одну операцию, а несколько - количество операций неограниченно, главное чтобы пока без скобочек (скобочки - это уже третий шаг аппгрейда нашего калькулятора)
Для того, чтобы из введенной пользователем стоки выделить все введенные им операции - я создаю Массив. Но мне нужен не простой массив, а двумерный: в первое поле массива я хочу записывать найденный порядковый номер в строке Ввода, а во второе поле - записывать непосредственно символ самой Операции.
Сколько не читала справку - не пойму как правильно создать Массив с ДВУМЯ полями, это уже будет многомерный массив, но как правильно его для начала создать.
Потом, как правильно в него записать в каждое поле наши данные? Метод установить вообще почему-то не работает, а методы Вставить и добавить - вроде бы работают, но нужный порядок ввода моих данных у меня не получается...
Хитрость в том, что в 1С нет многомерных массивов. Но элементом массива также может выступать массив, что автоматически позволяет строить многомерные конструкции.
Другими словами, в 1С только одна разновидность массива и пофиг, как именно его создавать, т.к. массивы в 1С динамические. Многомерные варианты конструктора массива - это просто стартовая "набивка".
Двумерный массив, например, можно вручную создать так:
ДвумерныйМассив = Новый Массив; // еще не двумерный, но скоро будет :)
ДвумерныйМассив.Добавить(Новый Массив); // первое измерение
ДвумерныйМассив.Добавить(Новый Массив); // второе измерение
ДвумерныйМассив[0].Добавить("ЭлементПервогоИзмерения");
ДвумерныйМассив[1].Добавить("ЭлементВторогоИзмерения");
Сообщить(ДвумерныйМассив[1][0]);
Когда дойдешь до третьего шага апгрейда калькулятора, вбивай в поиск магическую фразу "стек алгоритм дейкстры". Заодно и второй шаг перепишешь :)
Стека в 1С нет, но динамический массив позволяет его легко эмулировать.
(5) Ну, а если Вам нужно неограниченный массив (массив с изменяемым (динамическим) количеством строк), то реализуется список (в с++ это TList), а в 1С используйте ТаблицуЗначений с двумя колонками:
Тбл = Новый ТаблицаЗначений;
Тбл.Колонки.Добавить ("Значение")
Тбл.Колонки.Добавить ("Оператор")
и работайте с ней как с двумерным массивом - и кол-во строк будет у Вас ограничено только возможностью Вашей ОЗУ.
(25) списки в УФ это динамические списки, которые содержат только то, что выбрано в них.
На стороне клиента нет доступа к объектам, как на ОФ. Т.е. если в динамическом списке есть только ссылка на объект, то получить реквизиты объекта на клиенте невозможно.
А Критерии отбора работают, если есть доступ к этим самым реквизитам.
Вот и Массив мой рождающийся в обработке и скрин, помогите!!! Ну как я дальше буду перебирать и расскладывать Массив на данные, если в него влазиит пустая строка и никак оттуда не вылазиит!!!!!
Это самая распространенная ошибка начинающих.
порядок=0;
Для Каждого СтрокаМассива Из Массив Цикл
Массив.Удалить(порядок);
порядок=порядок+1;
КонецЦикла;
Когда происходит Массив.Удалить(порядок), индексация массива не остается прежней. Все индексы последующих элементов массива смещаются на единицу.
Смысл такой: Номера индексов всегда непрерывная нумерация.
На примере. При проверке должны удалиться элементы массива 3,4,5.
Удаляем 3. Индексация перестроилась. Теперь бывший 4 стал 3, а 5 стал 4.
Следовательно при последующем порядок=порядок+1; будет проверяться элемент на данный момент под номером 4. А это бывший 5.
Таким образом элемент, который вначале был 4, просто пропускается из проверки и обработки.
Обычно выбирают или прохождение проверки/удаления элементов массива в обратном порядке.
Или копирование нужных элементов новый массив.
(9)Как вычислить индекс двумерного массива с пустой стокой вроде бы нашла:
а="+*/-";
КвоСимволов=СтрДлина(а);
Массив=Новый Массив(КвоСимволов,2);
Массив[0][0]="Вася";
Массив[0][1]="Пупкин";
Массив[1][0]="Степа";
Массив[1][1]="Степкин";
Массив[2][0]="Петя";
Массив[2][1]="Петичкин";
порядок=0;
Сообщить(Массив.Количество());
Для каждого Номер Из Массив Цикл
Если ПустаяСтрока(Номер[0]) Тогда
Сообщить("Пустая строка под индексом="+порядок);
КонецЕсли;
Сообщить(""+Номер[0]+Номер[1]);
порядок=порядок+1;
КонецЦикла;
Показать
В результате цикл нам покажет:
1.Вася Пупкин
2.Степа Степкин
3.Петя Петичкин
4.Пустая строка под индексом = 3
==============================================================
Теперь в цикл после определения пустой строки - сразу же ее удаляем:
а="+*/-";
КвоСимволов=СтрДлина(а);
Массив=Новый Массив(КвоСимволов,2);
Массив[0][0]="Вася";
Массив[0][1]="Пупкин";
Массив[1][0]="Степа";
Массив[1][1]="Степкин";
Массив[2][0]="Петя";
Массив[2][1]="Петичкин";
порядок=0;
Сообщить(Массив.Количество());
Для каждого Номер Из Массив Цикл
Если ПустаяСтрока(Номер[0]) Тогда
Сообщить("Пустая строка под индексом="+порядок);
Массив.Удалить(порядок); КонецЕсли;
Сообщить(""+Номер[0]+Номер[1]);
порядок=порядок+1;
КонецЦикла;
Сообщить("После очистки пустых строк массива="+Массив.Количество());
В результате получим следующие данные в двумерном массиве:
1.Вася Пупкин
2.Степа Степкин
3.Петя Петичкин
После очистки пустых строк массива кол-во строк в массиве=3
(38)Да Вы Маг и Волшебник!!! ньдя...конечно,это слом мозга,но работает же!!!
Но в данной ситуации - конечно Ваша правда- все нулевые значения остаются ниже данных...а вот если бы они были в перемешку?...Тогда бы тоже проще можно было бы придумать - в новый (двумерный-о,ужас))) Массив записать все значения, которые не пустые...
п.с.ужас какой-то - даже удалить просто-то ничего нельзя...см.скрин
п.с.2...соединять с расчетом буду завтра, на сегодня - это уже перебор)))
Спасибо огромное,никогда бы не догадалась за обратный цикл в удалении пустых элементов из массива!!!
(1) Сделайте проще - массив может быть одномерный, то обращение к элементу массива - тут как хотиие - хоть 10-ти мерный.
Допустим, у Вас массив двумерный - 10x10
Считает индексацию относительно 0
Например, так:
Массив = Новый Массив (100);
ЭлементИзВторойСтрокиИТретьейКолонки = Массив[1*10 + 2];
ЭлементИзПятойСтрокиИШестойКолонки = Массив[4*10 + 5];
ну и т.д.
Вот, пойдем по пути обучения как нас Радченко учит - нарисуем одномерный массив см.скрин №1, и нарисуем двумерный массив см.скрин №2
Вы предлагаете в одномерный массив напихать все значения подряд,какие мне только попадутся под руку - это будет беспорядок в шкафу,т.к. я завтра же забуду - что куда ложила и уже никогда не найду нужные данные...
Представление двумерного массива - даже визуально приятны: вот полочка (строка с индексом 0) №0, в ней лежат ,н-р,"майки"(адрес Майки=полка№0, отделение=0 "Иванова" (адрес Кого=полка№0,отделение=1),
Дальше у нас полка, отданная Петрову - и все по той же логике...
Двумерный массив - я проще себе представляю в виде таблицы - с каким-то количеством строк, но колонок в этой таблице мне нужно только две. Вот,тогда четко представляя себе в уме такую табличку -ее проще и забить и считать...
(28) "Вот,тогда четко представляя себе в уме такую табличку -ее проще и забить и считать... " - а в чем проблема работать так же с одномерным массивом? - в любом случае, и в памяти компа двумерный массив - это тоже, по сути, одномерный массив. И даже адресация типа Массив[2][3] - комп переводит его как 2*КоличествоКолонок + 3 - так что по сути, двумерный массив - это просто более удобное представление (визуальное) одномерного массива.
(5) Ну, а если Вам нужно неограниченный массив (массив с изменяемым (динамическим) количеством строк), то реализуется список (в с++ это TList), а в 1С используйте ТаблицуЗначений с двумя колонками:
Тбл = Новый ТаблицаЗначений;
Тбл.Колонки.Добавить ("Значение")
Тбл.Колонки.Добавить ("Оператор")
и работайте с ней как с двумерным массивом - и кол-во строк будет у Вас ограничено только возможностью Вашей ОЗУ.
(кстати, такая индексация работает намного быстрее, чем через[y][x] - т.к. в цикле можно не умножать на 10, а просто прибавлять 10 после обхода всех колонок массива по текущий строке)
(6)Но мне повезло встретить на форуме человека (Вас,конечно), который учился в правильном вузе и, естественно, сможет помочь зеленым ограм с их первым массивом....
(30) Ну, пример я только на с++ могу привести (т.к. сейчас 80% времени пишу именно на си - от 1С устал уже - 18 лет 1С-го кодинга... Далее не буду продолжать :-) )
А так - выдержка:
как пример можно разобрать - если у Вас есть строка с формулой:
Вход: 3 + 4 * 2 / (1 - 5)^2
то последовательность решения будет такой:
(
"читаем" - это сканируем строку слево - направо до первого пробела или скобки или знака оператора */-^+ и т д.
"добавить" - это добавляете в стек (стек - для извлечения pop и добавления push значения)
"выход" - что получается в стеке
)
(35)Перебрать строку перебрали,по дороге отделяли плевер от зерна,т.е.Операции от операндов, только здесь найденные операнды записываем в "выходную строку", а операции в "стек", потом все впихнули в одну строку...
и чего делать дальше с результатом такого перебора???
Дальше выбираете в обратном порядке, и вычисляете -
есть строка в обратной польской записи:
3 4 2 * 1 5 - 2 ^ / +
Читаем слево - направо (пока не встретится оператор) -
3 - в стек, 4 - в стек, 2 - в стек. Стек будет содержать в себе 3 4 2
Далее идет оператор умножения - ему нужно два значения - берем из стека 2 и 4 (берем из стека - это значит выталкиваем по методу pop - т.е. первый пришел - последний ушел), умножаем 2*4 = 8 и помещаем в стек. Стек будет содержать в себе 3 8. Далее 1 - опять в стек, 5 - также. Итого стек будет 3 8 1 5. Далее минус. Берем 5 и 1. 1 - 5 = -4. Опять в стек. Будет 3 8 -4. Далее - двойка - в стек. 3 8 -4 2. Далее ^ возведение в степень. Степень у нас 2. -4*-4 = 16. Стек будет 3 8 16. Далее / - деление. 8/16 = 0.5 В стеке будет 3 0.5. Далее +. 3 + 0.5 = 3.5. Итого результат на вершине стека будет содержать в себе 0.5. Проверим - 3 + 4 * 2 / (1 - 5)^2 = 3+8/16 = 3.5. Т.е. все верно.
Также можно здесь и функции использовать.
Красиво, да?
(36) Стек можно организовать из СписокЗначений.
Список = Новый СписокЗначений
Добавлять в список -
Список.Добавить (3);
Список.Добавить (4);
Список.Добавить (2);
Операнд1 = Список.Получить (Список.Размер() - 1); // Здесь будет 2
Операнд2 = Список.Получить (Список.Размер() - 1); // Здесь будет 4
Результат = Операнд1*Операнд2
Результат = 8
Список.Добавить (Результат);
Стек будет: 3 8.
Ну и т.д. как в пред. посте. Все очень просто.
(36) Ну и последнее значение в СписокЗначений
Значение = Список.Получить(0) - это и будет результат вычисления формулы. Если что - то не так, то значит, в формуле (первоначальной) некорректно записана формула. Типа такого: 3+4++7 - т.е. нет числа между + и +. Или скобки не соблюдены - 5+7+(9-8)*2). Здесь лишняя скобка в конце.
(41)Все...это взрыв мозга...что там обратные циклы на удаление пустых элементов из двумерного массива, заполненного по всем выборкам введенного пользователем значения в поле ввода....Все, я в аут, переваривать...
п.с.Спасибо, сам алгоритм я поняла, придумаю как его выкрутить через язык 1с и выложу обязательно результат. Все перепроверю....
Массив=Новый Массив(2,2);
Массив[0][0]="Вася";
Массив[0][1]="Пупкин";
Массив[1][0]="Степа";
Массив[1][1]="Степкин";
Сообщить(Массив.Количество());
Для каждого Номер Из Массив Цикл
//Сообщить(Номер[1]+Номер[2]);
Сообщить(Номер[0]+Номер[1]);
КонецЦикла;
Сообщает, что в двумерном массиве 2 строки и в каждой строке есть заданные значения:
в первой строке: Вася Пупкин
во второй строке Степа Степкин
Но это если мы изначально задаем в условиях Массива 2 СТРОКИ (Массив(2,2) )
А как быть,если количество строк может быть неограниченно?
Как правильно задать такой массив??? Вот таким образом=>Массив=Новый Массив(,2)-не работает...
(9)Как вычислить индекс двумерного массива с пустой стокой вроде бы нашла:
а="+*/-";
КвоСимволов=СтрДлина(а);
Массив=Новый Массив(КвоСимволов,2);
Массив[0][0]="Вася";
Массив[0][1]="Пупкин";
Массив[1][0]="Степа";
Массив[1][1]="Степкин";
Массив[2][0]="Петя";
Массив[2][1]="Петичкин";
порядок=0;
Сообщить(Массив.Количество());
Для каждого Номер Из Массив Цикл
Если ПустаяСтрока(Номер[0]) Тогда
Сообщить("Пустая строка под индексом="+порядок);
КонецЕсли;
Сообщить(""+Номер[0]+Номер[1]);
порядок=порядок+1;
КонецЦикла;
Показать
В результате цикл нам покажет:
1.Вася Пупкин
2.Степа Степкин
3.Петя Петичкин
4.Пустая строка под индексом = 3
==============================================================
Теперь в цикл после определения пустой строки - сразу же ее удаляем:
а="+*/-";
КвоСимволов=СтрДлина(а);
Массив=Новый Массив(КвоСимволов,2);
Массив[0][0]="Вася";
Массив[0][1]="Пупкин";
Массив[1][0]="Степа";
Массив[1][1]="Степкин";
Массив[2][0]="Петя";
Массив[2][1]="Петичкин";
порядок=0;
Сообщить(Массив.Количество());
Для каждого Номер Из Массив Цикл
Если ПустаяСтрока(Номер[0]) Тогда
Сообщить("Пустая строка под индексом="+порядок);
Массив.Удалить(порядок); КонецЕсли;
Сообщить(""+Номер[0]+Номер[1]);
порядок=порядок+1;
КонецЦикла;
Сообщить("После очистки пустых строк массива="+Массив.Количество());
В результате получим следующие данные в двумерном массиве:
1.Вася Пупкин
2.Степа Степкин
3.Петя Петичкин
После очистки пустых строк массива кол-во строк в массиве=3
Хитрость в том, что в 1С нет многомерных массивов. Но элементом массива также может выступать массив, что автоматически позволяет строить многомерные конструкции.
Другими словами, в 1С только одна разновидность массива и пофиг, как именно его создавать, т.к. массивы в 1С динамические. Многомерные варианты конструктора массива - это просто стартовая "набивка".
Двумерный массив, например, можно вручную создать так:
ДвумерныйМассив = Новый Массив; // еще не двумерный, но скоро будет :)
ДвумерныйМассив.Добавить(Новый Массив); // первое измерение
ДвумерныйМассив.Добавить(Новый Массив); // второе измерение
ДвумерныйМассив[0].Добавить("ЭлементПервогоИзмерения");
ДвумерныйМассив[1].Добавить("ЭлементВторогоИзмерения");
Сообщить(ДвумерныйМассив[1][0]);
Когда дойдешь до третьего шага апгрейда калькулятора, вбивай в поиск магическую фразу "стек алгоритм дейкстры". Заодно и второй шаг перепишешь :)
Стека в 1С нет, но динамический массив позволяет его легко эмулировать.
(10)что такое Стек? и почему его нет в 1с?
Если 1с спросить какой код Символов у скобок,то вот что она ответит:
а=КодСимвола("(");
б=КодСимвола(")");
Сообщить(""+а+";"+б);
это=> 40;41
Отсюда, если 1с может по коду определить Символ скобок, то почему она их не должна увидеть при поиске в строке Ввода,н-р,
НашиВозможныеОперации="*/-+()"
и можем выделить и НашиВозможныеОперации Скобку и так же искать ее в Введенном пользователем поле. Здесь проблема будет ни в том, чтобы найти скобку в Введенном поле, а заморочиться найти сначала открывающую скобку, потом закрывающую скобку, записать выражение внутри этих скобок и вновь ставить на цикл, чтобы это выражение рассчитать....
(12) Что такое "стек" можно прочитать на вики, ссылка на которую будет первой в поисковой выдаче по этому страшному слову :)
(26) Вот алгоритм Дейкстры как раз и применяется для элегантного преобразования обычной (инфиксной) формы записей выражений в ОПН
(12) Ну, даже не обязательно обратной польской записью все это программировать. Я когда не знал об этом сделал так:
https://infostart.ru/public/149001/
(13)С помощью моей обработки Калькулятор - я учусь владеть основными функциями языка 1с8, ее операторами и вот начала осваивать универсальные коллекции...
С помощью ф-ции Вычислить - можно сразу клонировать калькулятор и больше никогда его не ремонтировать....т.е.навсегда остаться пользователем 1с, а не ее разработчиком.
Кстати, очень бы хотелось посмотреть на внутренний код функции Вычислить, ведь там они уже все продумали - и обход нечисловых выражений, и расчет выражений со скобочками - ням, вкуснятина. У Вас, случайно нету этого кода от функции Вычислить?????
(14) Платформа закрыта от внешнего вмешательства, и именно то что там написали программисты 1С наврядли кто-то когда-то узнает... Да это и не нужно:) Учиться лучше на хороших примерах, требующих решения. Эта задача - плохое начало (мое мнение). Что делать - описал выше: пройдите пару официальных самоучителей, выхлоп будет лучше. А с этим просто трата времени.
(15)Первая Ваша ссылка не найдена, а в третьей - ссылаетесь на Радченко, в данной его книге нет подробных (и неподробных) примеров работы с массивами...а Массивы в практической деятельности программиста 1с встречаются регулярно...
Что во второй Вашей ссылке пока не знаю, сейчас посмотрю...
Вот,посмотрела вторую ссылку - это там,где тот же Радченко учит детей программировать...на скрине видим пример одномерного массива.
А вот в этом описании - двумерный массив:"Бывают и многомерные массивы. Их вы рассматривать не будете. Но если у вас хорошее воображение и вы хотите представить себе двухмерный массив 3х2, то это стеллаж из трех полок (первое измерение), на каждой полке которого стоит еще один стеллаж из двух полок (второе измерение)."
п.с.значит, я хлеще любого ребенка чтобы такой текст освоить...Поэтому буду щупать своими руками построение многомерных массивов дальше...
(16) первая ссылка - сотрите точку в конце, попала так. По Радченко - все там есть. Возможно называется блок не массивы а универсальные коллекции значений или еще как-то, но при подробном изучении встретитесь со всеми необходимыми объектами. Ознакомьтесь для начала в принципе с объектами конфигурации и встроенного языка, научитесь пользоваться СП - это уже хороший задел.
(17)http://pas1.ru/taskcycle В Вашей первой ссылке - Паскаль....Все языки программирования,конечно, похожи друг на друга,но...забить одномерный массив в 1с, мне так кажется,проще, чем это же сделать в Паскале, вот его кодинг:
program n1;
uses crt;
var aw:array[1..10] of integer;
i,w,g:integer;
begin
g:=0;
w:=10;
for i:=0+1 to w do begin
aw[i]:=random(100);
write(aw[i]:6);
end;
writeln();
write('Чот');
for i:=0+1 to w do begin
if aw[i] mod 2 = 0 then g:=g+1; end; write('Всего чотных чисел ',g);
writeln();
write('Не чот');
g:=0;
for i:=0+1 to w do begin
if aw[i] mod 2 > 0 then g:=g+1;end; write('Всего не чотных чисел ',g) ;
end.
....это не считая того, что на данный момент я ввожусь с двумерным массивом в 1с, страшно подумать как он будет выглядить в Паскале...
Для включения отборов в списках(обычных форм) по содержимому табличных частей объектов и их свойств,неотображаемых в форме:
Варианты:1. ничего дополнительно настраивать не надо, все реализовано на уровне платформы,2. реализуется только запросами,3. осуществляется только с помощью дополнительной настройки форм,4. необходимо создать объект критерии отбора
========================================
Я не пойму почему гугл дает правильный ответ на этот вопрос=4.необходимо создать объект критерии отбора .....Я не знаю что такое Объект критерии выбора...Покажите его наглядно,пожалуйста.
Для включения отборов в списках (управляемых форм) по содержимому табличных частей объектов и их свойств, не отражаемых в форме:
Варианты ответа:1. ничего дополнительно настраивать не надо, все реализовано на уровне платформы,2. реализуется произвольным запросом динамического списка.,3. осуществляется только с помощью дополнительной настройки форм,4. необходимо создать объект критерии отбора
===================================================
Почему тогда здесь правильно будет только ответ"2", а не 2 и 4????
Потому что выходит, что в 1с8 можно и динамическим вопросом задать критерии отбора, но получается их же можно задать и этим Объектом, он же есть в ветке конфигуратора 1с8.3?????
(25) списки в УФ это динамические списки, которые содержат только то, что выбрано в них.
На стороне клиента нет доступа к объектам, как на ОФ. Т.е. если в динамическом списке есть только ссылка на объект, то получить реквизиты объекта на клиенте невозможно.
А Критерии отбора работают, если есть доступ к этим самым реквизитам.
Вопрос просто дикого тупизма: почему, если всего операций ДВЕ штуки, и массив их ловит как две, мы на выходе берем метод Количество и видим, что он записал ТРИ строки, причем третья пустая (на скрине видно)
Вот и Массив мой рождающийся в обработке и скрин, помогите!!! Ну как я дальше буду перебирать и расскладывать Массив на данные, если в него влазиит пустая строка и никак оттуда не вылазиит!!!!!
Вот и Массив мой рождающийся в обработке и скрин, помогите!!! Ну как я дальше буду перебирать и расскладывать Массив на данные, если в него влазиит пустая строка и никак оттуда не вылазиит!!!!!
Это самая распространенная ошибка начинающих.
порядок=0;
Для Каждого СтрокаМассива Из Массив Цикл
Массив.Удалить(порядок);
порядок=порядок+1;
КонецЦикла;
Когда происходит Массив.Удалить(порядок), индексация массива не остается прежней. Все индексы последующих элементов массива смещаются на единицу.
Смысл такой: Номера индексов всегда непрерывная нумерация.
На примере. При проверке должны удалиться элементы массива 3,4,5.
Удаляем 3. Индексация перестроилась. Теперь бывший 4 стал 3, а 5 стал 4.
Следовательно при последующем порядок=порядок+1; будет проверяться элемент на данный момент под номером 4. А это бывший 5.
Таким образом элемент, который вначале был 4, просто пропускается из проверки и обработки.
Обычно выбирают или прохождение проверки/удаления элементов массива в обратном порядке.
Или копирование нужных элементов новый массив.
(38)Да Вы Маг и Волшебник!!! ньдя...конечно,это слом мозга,но работает же!!!
Но в данной ситуации - конечно Ваша правда- все нулевые значения остаются ниже данных...а вот если бы они были в перемешку?...Тогда бы тоже проще можно было бы придумать - в новый (двумерный-о,ужас))) Массив записать все значения, которые не пустые...
п.с.ужас какой-то - даже удалить просто-то ничего нельзя...см.скрин
п.с.2...соединять с расчетом буду завтра, на сегодня - это уже перебор)))
Спасибо огромное,никогда бы не догадалась за обратный цикл в удалении пустых элементов из массива!!!
Наворотила что-то ужасное....Мысль,конечно,заложена, но пока не работает механизм с многочисленными операциями. Что получилось - выкладываю здесь, может кто-то ради тренировки работы с массивами и таблицами значений приведет этот механизм в норм...может я когда-нибудь попозже все-таки смогу ее замучить...на пока хватит))
Ура, домучила все-таки свою обработку Калькулятора с использованием Массивов и ТаблицыЗначений. Получилось очень интересно, но этот калькулятор у меня считает только Целые одноразрядные числа....Зато несколько операций сразу, выбирать нужно из четырех операций:+/*-
Да, еще с самой строкой Ввода какая-то непонятка...С самого начала она у меня в значении Реквизита1 была задана как ограниченная строка (10символов кажется), когда мне захотелось сделать ее безразмерной, то просто сам Реквизит1 - обозначила как безразмерная строка, но при рассчетах - система почему-то видит все равно не более 11 символов....Пришлось вновь ограничитель поставить в 11 Символов, с чем это связано - не знаю, если есть у кого-нибудь идея, то поделитесь мыслью.