четвъртък, 29 ноември 2018 г.

#62 Броене на знаци или как прецаквам усилията на колеги

Реших да постна нещо за да не съм капо тази година:) А и да покажа, че съм жив и здрав и поддържам блога. Но и вие сте си виновни, че не ме тормозите и то със задачки, които биха били полезни и за останалите читатели:)
Та поради липса на подходящи теми реших да прецакам някой мой колега. Идеята на блога е да помогна в решаването на казуси от работата, а не да помагам при решаването на домашни и курсови задачи. Въпреки всичко се намира някой юнак, който да ме пробва на акъл. Та скоро получих следното писъмце:
"Благодарение на възможностите на Excel да се демонстрира определянето броя на нечетните цифри в едно цяло числоВъв Word да се опише стъпка по стъпка това действие
Благодаря предварително!!!" 
Младежът директно ми беше изпратил условието:) Барабар с изискванията да се опише всичко. Аз му изпратих само функцията-решение без обяснения и не знам дали го е разбрал, обяснил и дали са му признали решението. Надявам се вече да е минало всичко и реших да напиша малко обяснения по темата.

Задача 1. Да се преброят срещанията на даден символ в текст.

За това имам цяла тема. #017 Търсене и броене със Substitute ! Добре е да си я опресните, но ако на някой не му се чете ето и краткия вариант.
Идеята е следната. Изтрива се търсения символ. Изтриването се извършва чрез заместване (функция Substitute) на символа с "" (празени стринг). След което се намира разликата между дължината на оригиналния текст и новия текст, който е без търсения символ. Разликата показва броя срещания на символа.
Пример: Да се намеря броя появявания на символа "." в текст.

=LEN(A1)-LEN(SUBSTITUTE(A1;".";""))


Задача 2. Да се преброят срещанията на два символа в текст
Вариант 1: По пътя на логиката може да го направим като дублираме формулата.
Пример: Да се намери броя на срещанията на символите "." и "*" в текст.

=LEN(A1)-LEN(SUBSTITUTE(A1;".";""))+LEN(A1)-LEN(SUBSTITUTE(A1;"*";""))

Вариант 1b: Не се изискват две висши да се сетим да обединим двете дължини:

=2*LEN(A1)-LEN(SUBSTITUTE(A1;".";""))-LEN(SUBSTITUTE(A1;"*";""))

Вариант 2: Сега остава да се сетим как да обединим двете резултатни дължини.

=2*LEN(A1)-SUM(LEN(SUBSTITUTE(A1;{".","*"};"")))

Изпращаме МАСИВ, който съдържа двата символа. Грешка е, ако се изпратят като един стринг ".*", защото ще подмени само там, където двата символа са един до друг! Чрез функцията Sum намираме сумата на двата резултата (двете дължини).

Задача 3. Да се преброят нечетните цифри в цяло число (задачата на юнака:)
Би трябвало да се сетили как става "магията":) Просто символите не са 2 ами 5!

=5*LEN(A2)-SUM(LEN(SUBSTITUTE(A2;{1,3,5,7,9};"")))

Excel e достатъчно "умен" и не изисква да се преобразува числото в текст, но ако някой го дразни, че разчитаме на "интелекта" на програма то тогава може да преобразува явно:

=5*LEN(TEXT(A2;"0"))-SUM(LEN(SUBSTITUTE(TEXT(A2;"0");{1,3,5,7,9};"")))


Също така няма смисъл да заграждаме в кавички цифрите, но може и така:

=5*LEN(TEXT(A2;"0"))-SUM(LEN(SUBSTITUTE(TEXT(A2;"0");{"1","3","5","7","9"};"")))


Ми това е:) Решихме задачата на младежа и на една камара бъдещи "потърпевши" от това задание:):) И искрени извинения към колегата (учител или преподавател), който дава това задание. В интерес на истината му завиждам, че има такива обучаеми на които може да даде такава задача, която хич не е лесна.

Успех:)

П.П. Обещавам да не решавам задачите на други хитреци! Не търсете лесния вариант. Няма как чрез StackOverflow и други помощници да се генерира БВП! До време е. Трябват хора, които сами решават проблемите!



Няма коментари:

Публикуване на коментар