Чунихина1586
?>

Ввести выражение, полученное после раскрытия скобок (сумма или разность произведений однобуквенных переменных без коэффициентов подобные. пример: abc + a + bca-acb+abc+abc+a ответ: 2a+3abc.

Информатика

Ответы

mnn99
Опишем формальную грамматику для разбора входной строки. < символ> : : = < буква> | < знак> < буква> : : = 'a' | 'b' | 'c' | | 'y' | 'z' < знак> : : = '+' | '-' < терм> : : = < буква> [ < терм> ] < операнд> : : = [ < знак> ] < терм> < строка> : : = < операнд> [ < операнд> ] ниже программа на языке pascal.abc, реализующая разбор входной строки и её по правилам подобных членов. const   n = 30; {максимальное количество операндов, я так захотел! }   pm = ['+', '-']; {символы < знак> }   letter = ['a'..'z']; {символы < буква> } type   toper = record       sgn: integer;       vars: string   end;   tm = array[1..n] of toper;   tasort = array[1..n] of string; {для сортировки} var   s: string;   l, p: integer;   symb: set of char; procedure getsymbol(var c: string); { сканирует строку s с позиции p и возвращает элемент < символ> продвигает курсор p к первому необработанному символу строки s } var   found: boolean; begin   found : = false;   c : = '';   while (p < = l) and (not found) do   begin       if s[p] in symb then begin           found : = true;           c : = s[p]       end;       p : = p + 1   end end; procedure sort(var a: tasort; kol: integer); {сортировка вставкой} var   i, j: integer;   x: string;   flag: boolean; begin   for i : = 2 to kol do   begin       x : = a[i];       j : = i - 1;       flag : = false;       while (j > 0) and (not flag) do           if x < a[j] then           begin               a[j + 1] : = a[j];               j : = j - 1           end           else flag : = true;       a[j + 1] : = x   end end; function getsign(c: char): integer; begin   case c of       '+': result : = 1;       '-': result : = -1;   else result : = 0   end end; procedure getoper(var oper: toper); { строит элемент < операнд> максимально возможной длины и упорядочивает составляющие его символы в лексикографическом порядке. если операнд построить невозможно, в oper.vars помещается пустая строка. процедура обращается к процедурам getsymbol и sort. } var   i, n: integer;   c, c1: string;   exitflag: boolean;   a: tasort; begin   c : = '';   exitflag : = false;   getsymbol(c1); {попытаемся получить знак}   if c1[1] in pm then oper.sgn : = getsign(c1[1])   else begin       oper.sgn : = 1;       c : = c1   end;   repeat       getsymbol(c1);       if c1 = '' then exitflag : = true       else if c1[1] in pm then begin           p : = p - 1;           exitflag : = true       end       else           c : = c + c1   until exitflag;   if c < > '' then   begin       n : = length(c);       for i : = 1 to n do a[i] : = c[i];       sort(a, n);       c : = '';       for i : = 1 to n do c : = c + a[i];       oper.vars : = c   end   else oper.vars : = '' end; procedure add2m(var a: tm; c: toper; var pn: integer); { ищет среди элементов массива a.vars элемент, с с.vars. при нахождении добавляет c.sgn к a[i].sgn, в противном случае добавляет в массив новый элемент a[i], увеличивая pn на 1. при вызове pn - количество элементов в массиве. } var   i: integer;   c1: string;   found: boolean; begin   c1 : = c.vars;   i : = 1;   while (i < = pn) and (not found) do   begin       found : = (c1 = a[i].vars);       if found then a[i].sgn : = a[i].sgn + c.sgn       else i : = i + 1   end;   if not found then begin       a[i].sgn : = c.sgn;       a[i].vars : = c1;       pn : = pn + 1   end end; function convert(k: integer): string; begin   case k of       -1: result : = '-';       0: result : = '';       1: result : = '+';   else begin           str( k, result);           if k > 0 then result : = '+' + result       end   end end; var   c, cz: string;   n1, i: integer;   opr: toper;   a: tm; begin   symb : = pm + letter;   p : = 1;   n1 : = 0;   writeln('введите исходное выражение');   readln(s);   s : = lowercase(s); {перевод символов в нижний регистр}   l : = length(s);   repeat       getoper(opr);       add2m(a, opr, n1)   until p > l;   if n1 > 0 then   begin       cz : = convert(a[1].sgn);       if cz = '+' then cz : = '';       if cz = '' then c : = ''       else c : = cz + a[1].vars;       for i : = 2 to n1 do       begin           cz : = convert(a[i].sgn);           if cz < > '' then c : = c + cz + a[i].vars       end   end   else c : = '';   if c='' then c: ='0';   if c[1]='+' then c: =copy(c,2,length(c)-1);   writeln('результат: ', c) end. тестовое решение: введите исходное выражение abc +      a+bca  -acb+abc+abc  +a  результат: 3abc+2a введите исходное выражение ab-bca+bc+cba+abc-ba+cba+da+adb+bad-db результат: 2abc+bc+ad+2abd-bd
ИванМолчанов

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

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

Вспомним один из скриптов занятия:

Изменение значения переменной

Если мы хотим предоставить человеку самому определять скорость, а не ограничивать ее только тремя вариантами, код станет проще:

Ввод данных

Когда выполняется команда "спросить … и ждать", на сцене появляется поле, куда пользователь должен что-то ввести и нажать Enter на клавиатуре. Также он может ничего не вводить, а просто нажать Enter.

Поле для ввода данных на сцене

В Scratch команда "спросить … и ждать" блокирует свой скрипт, но не другие. Блокирует она свой скрипт до тех пор, пока не будет нажат Enter в поле ввода. После этого то, что было введено в поле, присваивается встроенной переменной "ответ", которая далее используется в скрипте.

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

Допустим, мы хотим, чтобы в случае ввода текста, скрипт не пыталась его подставлять в команду "идти … шагов". Вместо этого на сцене появлялось бы сообщение о неправильном вводе.

В Scratch нет команды проверки, введено число или строка. Однако можно придумать это узнать. В Scratch если выполнить над строкой арифметическую операцию, то результатом будет число 0. Например, если взять из положительного числа модуль, то вернется само число. Если же попытаться взять модуль из строки, что бессмысленно, будет получен 0.

Таким образом, если модуль ответа не совпадает с самим ответом, значит было введено что-то не то: либо строка, либо отрицательное число. Если же модуль ответа совпадает с самим ответом, значит было введено положительное число.

Проверка, что введено число

Рассмотрим второй пример использования команды "спросить … и ждать". Пусть наша программа складывает три числа, которые вводит пользователь. Здесь уже не обойтись одной встроенной переменной "ответ". Придется создавать свои. При этом задачу можно решить разными

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

Сложение значений трех переменных

Второй вариант – создать одну переменную, в которой постепенно накапливать сумму.

Добавление числа к переменной

Когда выполняется команда "задать <сумма> значение <сумма + ответ>", сначала выполняется подвыражение <сумма + ответ>. И только после этого результат этого подвыражения записывается в переменную "сумма".

Например, переменная "сумма" содержит число 3. Пользователь вводит число 5. Когда выполняется выражение <сумма + ответ>, из переменной "сумма" извлекается число 3 и к нему добавляется 5. После этого результат 8 записывается в переменную "сумма". Старое значение 3 переменной при этом затирается, то есть теряется.

Объяснение:

lidiya08083268

Объяснение:

Информация (informatio — осведомление, разъяснение, изложение) — в широком смысле абстрактное понятие, имеющее множество значений, в зависимости от контекста. В узком смысле этого слова — сведения (сообщения, данные) независимо от формы их представления. В настоящее время не существует единого определения термина информация. С точки зрения различных областей знания, данное понятие описывается своим специфическим набором признаков. Информация — совокупность данных, зафиксированных на материальном носителе, сохранённых и распространённых во времени и пространстве.

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

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

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Ввести выражение, полученное после раскрытия скобок (сумма или разность произведений однобуквенных переменных без коэффициентов подобные. пример: abc + a + bca-acb+abc+abc+a ответ: 2a+3abc.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

lavr74
Ka-shop2791
Lesnova_Kiseleva730
elmiro4ka868617
Алексей Ксения
merx80
Динков
priexali
Vasilevna_Utenkova651
ur101679
GoncharenkoKuzmin
vladislavk-market2
Андрей Анна22
gulyaizmailova
valera850515