Нужно решить на языке c++(то есть используя cin,cout,int)
много !
завтра у пети доклад на уроке . для доклада петя подготовил велико-
лепный текст, а также взял несколько иллюстраций в библиотеке.
но вот : текст у пети находится в электронном виде, а значит, его нуж-
но распечатать. к несчастью, в его принтере кончаются чернила, и на доклад их
может не хватить. в таком случае ему придется посылать папу в магазин за но-
вым картриджем (впрочем, может оказаться, что не петя пошлет папу в магазин,
а наоборот). чтобы не гонять папу (а, может быть, и не папу) зря, петя решил
подсчитать, хватит ли оставшихся чернил на его доклад.
чтобы это сделать, петя для каждой буквы оценил количество чернил, требуе-
мое для того, чтобы ее напечатать. более того, некоторые понятия в тексте пети
выделены с заглавных букв, и это тоже надо учитывать.
пете подсчитать суммарное количество чернил, необходимое для того,
чтобы распе- чатать текст его доклада.
формат входных данных
в первой строке входного файла содержится число n (1 ≤ n ≤ 26) — количество
используемых в тексте букв латинского алфавита.
в каждой из последующих строк содержится символ si и два целых числа ai и
bi
. si — это строчная буква латинского алфавита, ai — количество чернил, требу-
емое для печати строчной буквы, bi — количество чернил, требуемое для печати
соответствующей заглавной буквы. все si различны. для чисел ai и bi верны нера-
венства 1 ≤ ai
, bi ≤ 100.
в следующей строке находится текст доклада пети. его длина не превосходит
100 символов. текст состоит из строчных и заглавных букв латинского алфавита,
причем в тексте присутствуют только те буквы, для которых во входом файле
задано требуемое для их печати количество чернил
формат выходных данных
в выходной файл выведите суммарное количество чернил, требуемое для вывода
текста на печать.
var
a: array[1..l] of integer;
d: array[1..l] of real;
i, otr, k, m: integer;
begin
otr:=0; k:=0; m:=0;
//считаем массив а
for i:=1 to l do
begin
readln(a[i]);
//если ввели положительное число,увеличим перем. otr на 1
if a[i] < 0 then
inc(otr);
//если ввели отрицательное число,увеличим перем. k на 1
//и к переменной m прибавим элемент
if a[i] > 0 then
begin
inc(k);
inc(m, a[i]);
end;
end;
//заполним массив d
for i:=1 to l do
//если индекс четный, присвоим элементу otr
//иначе присвоим среднее арифметическое
if i mod 2 = 0 then
d[i] := otr
else
d[i] := m/k;
end.
(1 + 0) - истинна, т.к. дизъюнкция истинна если хотя-бы одна из переменных истинна
(0 + 0) - ложна, т.к. обе перменные ложны
(1 + 0)*(0+0) - ложна, т.к. первая скобка истинна, а вторая ложна, а в конъюнкции для истины обе скобки должны быть истинны.
1*0 - ложна, т.к. в конъюнкции обе переменные должны быть истинны.
Для удобства разделил скобками
((1 + 0)*(0+0)) + (1*0) - ложна, т.к. первая (большая) скобка ложна, вторая скобка (1*0) тоже ложна, между ними дизъюнкция, то есть хотя-бы одна из них должна быть истинна. Они обе ложны, значит результатом выражения
(1 + 0)*(0+0) + 1*0
будет 0