Добрый вечер. Я НЕ ПОНИМАЮ ЧТО В УСЛОВИИ УВАЖАЕМЫЕ ПРОФЕССИОНАЛЫ ОБЪЯСНИТЕ. РЕШЕНИЕ НЕ НАДО ПИСАТЬ!
Если я правильно понимаю то надо прочитать файл а в тексте файла найти слово заданное в параметре?
Знакомство с тегами
Считай с консоли имя файла, который имеет HTML-формат.
Пример:
Info about Leela Turanga Leela
Supergirl
Первым параметром в метод main приходит тег. Например, "span".
Вывести на консоль все теги, которые соответствуют заданному тегу.
Каждый тег на новой строке, порядок должен соответствовать порядку следования в файле.
Количество пробелов, \n, \r не влияют на результат.
Файл не содержит тег CDATA, для всех открывающих тегов имеется отдельный закрывающий тег, одиночных тегов нет.
Тег может содержать вложенные теги.
Пример вывода:
Turanga Leela
Turanga Leela
Super
girl
Шаблон тега:
<tag>text1</tag>
<tag text2>text1</tag>
<tag
text2>text1</tag>
text1, text2 могут быть пустыми
Requirements:
1. Программа должна считывать имя файла с консоли (используй BufferedReader).
2. BufferedReader для считывания данных с консоли должен быть закрыт.
3. Программа должна считывать содержимое файла (используй FileReader).
4. Поток чтения из файла (FileReader) должен быть закрыт.
5. Программа должна выводить в консоль все теги, которые соответствуют тегу, заданному в параметре метода main.
БелК в труселях
35 уровень
Добрый вечер. Я НЕ ПОНИМАЮ ЧТО В УСЛОВИИ УВАЖАЕМЫЕ ПРОФЕССИОНАЛЫ ОБЪЯСНИТЕ. РЕШЕНИЕ НЕ НАДО ПИСАТЬ!
Обсуждается
Комментарии (58)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia VolkovaJava Developer в DXCMaster
25 декабря 2021, 17:20
Надо найти не слово, а html теги.
Почитай про них,если раньше сталкиваться не приходилось.
0
БелК в труселях
25 декабря 2021, 17:33
Спасибо Ксения. Не приходилось.
0
БелК в труселях
25 декабря 2021, 19:06
for (int i = 0; i < enot.size(); i++) {
Pattern pattern = Pattern.compile("<([args[0]/].+</[args[0]])");
Matcher matcher = pattern.matcher(enot.get(i));
while (matcher.find()) {
stringBuilder.append(enot.get(i).substring(matcher.start()));
//}
// }
}
System.out.println(stringBuilder.toString());
Так все находит но нет
0
Ksenia VolkovaJava Developer в DXCMaster
25 декабря 2021, 19:14
А вложенные проверял?
Типа
<span>1<span>2</span><span>3</span></span>
Тут должно получиться три строки:
<span>1<span>2</span><span>3</span></span>
<span>2</span>
<span>3</span>
0
БелК в труселях
25 декабря 2021, 19:42
Я даже не знаю что такое вложенные я читал что они из двух или одного состоят теги, а еще вложенные! Класс.
0
Ksenia VolkovaJava Developer в DXCMaster
25 декабря 2021, 19:46
Они могут вкладываться как матрешки.
<span>1
<span>2
<span>3
</span>
</span>
</span>
0
БелК в труселях
25 декабря 2021, 19:58
Спасибо Ксения.
Я вот только не понимаю зачем такие задачи, которые вообще не было в лекции? До этого курс кс50 где учили не смотреть решения в интернете и списывать, а по факту только напиши и сразу задачи джавараш и люди на форумах, и сайтах копируют чужие решения. Контрл Ц+Контрол В Это не в коем случае не Вам это риторический вопрос.
+3
Ksenia VolkovaJava Developer в DXCMaster
25 декабря 2021, 20:04
А что здесь такого, чего не было в лекциях?
Чтение из файла и работа со строками.
А что касается тех, кто копирует решения... ну так это их выбор. Тут за нерешенную задачу Мариванна двойку не поставит. Тот, кто скопировал чужое решение, просто лишил себя возможности что-то узнать, чему-то научиться или получить больше опыта. То есть сделал хуже только себе.
+3
БелК в труселях
26 декабря 2021, 07:08
Доброе утро Ксения. Пожалуйста, подскажите может что прочитать про строки, а то никак. Огромное спасибо
ArrayList<String>belka=new ArrayList<>();
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < enot.size(); i++) {
belka.add(i,stringBuilder.append(enot.get(i).replaceAll("<","\n")).toString());
}
String []sss=belka.get(belka.size()-1).split(">",2);
System.out.println("<"+args[0]+">");
for (int i = 1; i < sss.length; i++) {
System.out.println("<"+sss[i]);
}
0
Ksenia VolkovaJava Developer в DXCMaster
26 декабря 2021, 07:23
Я думаю, ты и так уже знаешь про строки все, что нужно. Надо только подумать, как это применить.
Суть в том, что ты не просто должен найти подстроку между открывающим тегом и закрывающим. Надо еще учесть вложенность - то есть если ты нашел закрывающий тег, то он будет парой для того открывающего, который шел перед ним последним, а не первым.
Например, если у тебя идут:
открывающий, открывающий, открывающий, закрывающий, ...
то закрывающий относится именно к третьему открывающему, а не к первому или второму.
Это как в задаче про изменения строк - смысл не в том, чтобы найти какое-то волшебное знание, чудо-метод, который решит задачу, а в том, чтобы выстроить логику.
Можешь прочитать про очереди (Queue) и принцип LIFO. Необязательно их использовать, но это может "подтолкнуть" в нужном направлении.
0
БелК в труселях
26 декабря 2021, 07:45
СПАСИБО. ЛИФО ПОСЛЕДНИЙ ОРЕХ ВЗЯЛ И ПЕРВЫМ ОТДАЛ. И Если я правильно понял надо найти подстроку между тегами при этом теги не показывать? Просто я все время искал теги. Или если
.
Надо найти aria-hidden="true" class="line-numbers-rows"? Спасибо за Все.
0
Ksenia VolkovaJava Developer в DXCMaster
26 декабря 2021, 08:15
Теги тоже надо показывать.
0
БелК в труселях
26 декабря 2021, 16:48
Добрый вечер. Пробовал многое, но никак. Пожалуйста, как вытянуть несколько подстрок из строки? Или где прочитать. Интерфейс Queue только сравнение строк, а через паттер вообще ушел в дебри. Вытягиваю в Queue подстроку одну и все.
ArrayList<String> belka = new ArrayList<>();
int indexSecond = enot.peek().indexOf("/" + args[0]);
while (enot.size() != 0) {
// System.out.println(enot.element());
if (enot.peek().indexOf("/") != -1) {
indexSecond = enot.peek().indexOf("/" + args[0]);
int indexFirst = enot.peek().substring(0, indexSecond).lastIndexOf(args[0]);
belka.add(enot.peek().substring(indexFirst - 1, indexSecond + 6));
}
enot.poll();
}
0
Ksenia VolkovaJava Developer в DXCMaster
26 декабря 2021, 16:50
Тебе вообще не нужно никакое сравнение строк.
Нужно определить начало интересующего тебя тега (открывающего) и конец соответвующего ему закрывающего.
Зная начало и конец, ты получишь нужную подстроку.
0
БелК в труселях
26 декабря 2021, 17:34
СПАСИБО!!! Пошел опять
0
БелК в труселях
26 декабря 2021, 19:58
Я считаю Ваши подсказки как священное писание.
int indexSecond = enot.peek().indexOf("/" + args[0]);
int indexFirst = enot.peek().substring(0, indexSecond).lastIndexOf(args[0]);
Поставил в цикл никак. Я подсознательно понимаю что уже близко, но я пролетаю.
0
Ksenia VolkovaJava Developer в DXCMaster
26 декабря 2021, 20:38
Я даже не знаю, что там за енот у тебя )
0
БелК в труселях
27 декабря 2021, 06:38
Доброе утро Ксения. Вспомнил фильм "месть пушистых" вот и назвал. А вот весь код
public class Solution {
public static void main(String[] args) throws IOException {
String s;
Queue<String> enot = new LinkedList<>();
StringBuilder stringBuilder = new StringBuilder();
try
(BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in))) {
s = bufferedReader.readLine();
try
(FileReader fileReader = new FileReader(s);
BufferedReader bufferedReader1 = new BufferedReader(fileReader)) {
while (bufferedReader1.ready()) {
enot.add(bufferedReader1.readLine());
}
}
ArrayList<String> belka = new ArrayList<>();
int indexSecond = enot.peek().indexOf("/" + args[0]);
for (int i = 0; indexSecond!=-1; i++) {
indexSecond = enot.peek().indexOf("/" + args[0]);
int indexFirst = enot.peek().substring(0, indexSecond).lastIndexOf(args[0]);
String t=enot.peek().substring(indexFirst-1,indexSecond+6);
System.out.println(t);
}
belka.forEach(s1 -> System.out.println(s1));
}
}
}
0
Ksenia VolkovaJava Developer в DXCMaster
27 декабря 2021, 07:04
Енот получился бессмысленный.
Какой смысл туда складывать строки из файла?
Тег может начинаться в одной строке, а заканчиваться в другой,и строки идут строго последовательно.
Что касается принципа LIFO (а не FIFO), то его было бы уместно применить к тегам, а не к строкам.
0
БелК в труселях
27 декабря 2021, 08:47
Через сплит тоже ушел в никуда.
0
БелК в труселях
27 декабря 2021, 08:56
Какой смысл туда складывать строки из файла?
Ответ
Цитирую Слепакова. Где логика я не вижу, над этой загадкой бьюсь.
Если я правильно понял то надо добавить в Queue<String> enot
в начало span и в конец /span?
0
Ksenia VolkovaJava Developer в DXCMaster
27 декабря 2021, 09:03
¯\_(ツ)_/¯
Даже не знаю, чего ты хотел добиться с помощью split...
Такое впечатнление, что ты просто перебираешь интсрументы в ящике и думаешь, какой бы из них тут приспособить.
Надо все-таки идти от задачи - сначала понять, что именно тебе нужно получить, а потом уже думать, какой инструмент тут поможет.
Как ты можешь добавить в своего енота строки, если пока неизвестно, какой закрывающий тег какому открывающему соответствует?
0
БелК в труселях
27 декабря 2021, 09:15
Я понимаю теперь что глупо, но вот
enot.offer("<"+args[0]+">");
enot.offer("<"+"/"+args[0]+">");
0
БелК в труселях
27 декабря 2021, 09:16
Вот что должно быть
Типа
span1span2/spanspan3/span/span>
Тут должно получиться три строки:
span1span2/spanspan3/span/span>
span2/span
span3/span
0
Ksenia VolkovaJava Developer в DXCMaster
27 декабря 2021, 09:16
И как это связано с файлом?
0
Ksenia VolkovaJava Developer в DXCMaster
27 декабря 2021, 09:27
<span>1<span>2</span><span>3</span></span>
<span>1<span>2</span><span>3</span></span>
<span>2</span>
<span>3</span>
0
БелК в труселях
27 декабря 2021, 11:57
Я просто пытался объяснить что понял что надо.
Вот первый и последний
int i1=belka.get(i).indexOf(args[0]) - 1;
int i2=belka.get(i).lastIndexOf("/") + 6;
0
БелК в труселях
27 декабря 2021, 11:58
А как у Вас не получилось потому что если ставить больше и меньше то показывает пустоту.
0
Ksenia VolkovaJava Developer в DXCMaster
27 декабря 2021, 12:11
Я поняла, что у тебя не отображаются угловые скобки, дело-то не в этом.
Допустим, у тебя такой файл:
Что ты тогда найдешь с помощью:
Или у тебя есть файл
Что ты найдешь тут?
И почему 6? Теги могут быть разные.
Но и это не самое важное.
Тегов - открывающих и закрывающих - может быть много. они могут идти последовательно:
<span>1</span><span>2</span>
а могут быть вложенными:
<span>1<span>2</span></span>
Надо придумать способ определять, какой из закрывающих какому открывающему соответсвует.
Я пока в твоем коде не вижу движения в этом направлении.
0
Ksenia VolkovaJava Developer в DXCMaster
27 декабря 2021, 12:17
И вот еще. Если belka - это список строк из файла, то что ты будешь делать в таком случае:
0
БелК в труселях
27 декабря 2021, 14:01
Так для смеха 2 часа сидел через фори пытался и выдохся
0
БелК в труселях
27 декабря 2021, 14:03
Это бред смотреть не надо. Просто чтобы не думали что забыл.
int i6=6;
int i7=7;
for (int i = 0; belka.size() > i; i++) {
if (belka.get(i).lastIndexOf("/") != -1) {
int i1=belka.get(i).indexOf(args[0]) - 1;
int i2=belka.get(i).lastIndexOf("/") + 6;
belkaGT.add(belka.get(i).substring(i1,i2));
// System.out.println(belkaGT);
if(belka.get(i).substring(i1,i2).lastIndexOf("/") != -1) {
System.out.println(belka.get(i).substring(i1 + i6, i2 - i7));
int y = belka.get(i).substring(i1).indexOf("/") + i6;
int r = belka.get(i).substring(i1, y).lastIndexOf(args[0])-2 -i7;
belkaGT.add(belka.get(i).substring(r, y));
System.out.println(belka.get(i).substring(r, y));
if (belka.get(i).substring(y).lastIndexOf("/") != -1) {
// System.out.println(belka.get(i).substring(r + i6, y - i7));
int q = belka.get(i).substring(y).indexOf("/") + i6+i6+i6;
;
int a = belka.get(i).substring(y, q).lastIndexOf(args[0])+3;
belkaGT.add(belka.get(i).substring(a, q));
System.out.println(belka.get(i).substring(a, q));
}
}
0
БелК в труселях
27 декабря 2021, 14:06
Просто не знаю.
0
Ksenia VolkovaJava Developer в DXCMaster
27 декабря 2021, 14:24
В принципе, у тебя есть два пути.
1. Можешь почитать про Jsoup и решить задачу легким способом с его помощью. В целом, это небесполезно - можно познакомиться с новой библиотекой, узнать как ее подключить и т.д.
2. Попробовать все же решить ее с помощью логики. На мой взгляд, эта задача не сложнее задачи с поиском добавленных и удаленных строк. Тут тоже важно понять принцип и выстроить правильную последовательность действий.
Как по мне - второй путь интереснее. Может, стоит просто отложить эту задачу на какое-то время, а чуть позже к ней вернуться.
0
БелК в труселях
27 декабря 2021, 14:29
Спасибо прочитаю.
for (int i = 0; i < belka.size(); i++) {
if(belka.get(i).lastIndexOf("/")!=-1&&belka.get(i).indexOf(args[0])!=-1)
{
belkaGT.add(i,belka.get(i).substring(belka.get(i).indexOf(args[0])-1,belka.get(i).lastIndexOf("/")+6));
}
Вы говорили о том что надо найти начало и конец тегов вот они. Я понимаю что надо знать есть ли тег / и потом искать начальный.
0
Ksenia VolkovaJava Developer в DXCMaster
27 декабря 2021, 14:41
Я тебе выше дала несколько примеров.
Ни с одним из них этот твой код не справится.
0
БелК в труселях
27 декабря 2021, 16:26
Я упаду в Ваших глазах еще ниже (хотя куда ниже), но выберу первый вариант, но о втором еше подумаю сегодня. Пожалуйста объясните и призываю к Вашему терпению почему?
for (int i = 0; i < belka.size(); i++) {
for (Element element : Jsoup.parse(belka.get(i)).select(args[0])) {
System.out.println(element);
}
}
Это в методе маин написаноspan
Текст span>1 span>2/span>span>3/span>/span>
Вывод
span>1 span>2/span>span>3/span>/span>
span>2/span>
span>3/span>
Валидатор
Программа должна выводить в консоль все теги, которые соответствуют тегу, заданному в параметре метода main.
Я не знаю как < в текст ставить из-за этого без него в вопросе к Вам.
0
Ksenia VolkovaJava Developer в DXCMaster
27 декабря 2021, 18:47
Что такое belka?
0
БелК в труселях
27 декабря 2021, 20:58
СПАСИБО. ЧТО ОТВЕТИЛИ ВОТ ВЕСЬ КОД долго подбирал остановился на элементе, но никак.
public class Solution {
public static void main(String[] args) throws IOException {
String s;
ArrayList<String> belka = new ArrayList<>();
try
(BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in))) {
s = bufferedReader.readLine();
try
(FileReader fileReader = new FileReader(s);
BufferedReader bufferedReader1 = new BufferedReader(fileReader)) {
while (bufferedReader1.ready()) {
belka.add(bufferedReader1.readLine());
}
for (int i = 0; i < belka.size(); i++) {
for (Element element : Jsoup.parse(belka.get(i)).select(args[0])) {
System.out.println(element);
}
}
}
}
}
}
0
Ksenia VolkovaJava Developer в DXCMaster
27 декабря 2021, 21:12
Ну и как это должно работать с таким файлом?
0
БелК в труселях
28 декабря 2021, 05:26
Доброе утро Ксения. Хорошо меня только надпись смутила в валидаторе. Буду опять экспериментировать.
0
БелК в труселях
28 декабря 2021, 06:37
Я смотрел в примере задания, но ничего не понял пожалуйста напишите как она должна выглядеть. СПАСИБО!!!
Так ведь плохо
span>b>span>Turanga Leela/span>/b>/span>
span>Turanga Leela/span>
span>Super/span>
span>girl/span>
0
Ksenia VolkovaJava Developer в DXCMaster
28 декабря 2021, 08:15
Какая надпись в валидаторе?
0
БелК в труселях
28 декабря 2021, 12:32
Добрый день что Вы вчера 23:12 написали?
Info about Leela span>b>span>Turanga Leela /span>/b>/span>span>Super/span>span>girl/span>
0
Ksenia VolkovaJava Developer в DXCMaster
28 декабря 2021, 12:47
Я написала тебе пример файла из задания. В нем две строки.
0
БелК в труселях
28 декабря 2021, 15:20
Какая надпись в валидаторе?
Валидатор
Программа должна выводить в консоль все теги, которые соответствуют тегу, заданному в параметре метода main.
Второй вопрос
Я понимаю что там две строки у меня вопрос как правильно должен выглядеть ответ???
У меня так получилось
span>b>span>Turanga Leela/span>/b>/span>)
span>Turanga Leela/span>
span>Super/span>
span>girl/span>
В условие не понятно из-за этого я пишу Вам. Спасибо
0
Ksenia VolkovaJava Developer в DXCMaster
28 декабря 2021, 15:28
Я уже раза 3 пыталась тебе указать на проблему с твоим списком belka, но что-то не работает... ))
Ну ок, возьмем другой пример.
Это абсолютно тот же файл, просто переносы расставлены иначе. То есть вывод должен быть таким же как в примере в задании.
0
БелК в труселях
28 декабря 2021, 16:52
А я в третий раз прошу Вас написать как должен выглядеть результат надписи. Просто как должен выглядеть результат. Потому что я запутался, очень запутался и мне стыдно.
И еще насчет белки она была дикая пришлось убрать. Вот новый
public class Solution {
public static void main(String[] args) throws IOException {
String s;
try
(BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in))) {
s = bufferedReader.readLine();
try
(FileReader fileReader = new FileReader(s);
BufferedReader bufferedReader1 = new BufferedReader(fileReader)) {
while (bufferedReader1.ready()) {
for (Element element : Jsoup.parse(bufferedReader1.readLine()).select(args[0])) {
System.out.println(element);
}
}
}
}
}
}
0
Ksenia VolkovaJava Developer в DXCMaster
28 декабря 2021, 16:58
А зачем ты меня об этом просишь, если это есть в условии задачи?
Там есть пример ввода и к нему пример вывода. Прям так и написано: Пример вывода. И дальше
Белку ты убрал, а по сути ничего не изменилось. Как ты вообще читал про Jsoup, если думаешь, что можно вот так скормить ему выдернутую из файла строчку и получить адекватный результат?
0
БелК в труселях
28 декабря 2021, 19:01
Я думал что надо как в шаблоне, а теперь все понятно хотя подождите у меня точно также.
Обзор Selector (Селектор).
Селектор Описание
tagname Искать элементы по тегу. Например: a
try
(BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in))) {
s = bufferedReader.readLine();
ArrayList<String> jukNavoznik=new ArrayList<>();
try
(FileReader fileReader = new FileReader(s);
BufferedReader bufferedReader1 = new BufferedReader(fileReader)) {
while (bufferedReader1.ready()) {
for (Element element : Jsoup.parse(bufferedReader1.readLine()).select(args[0])) {
System.out.println(element.tagName(args[0]));
}
}
0
Ksenia VolkovaJava Developer в DXCMaster
28 декабря 2021, 19:08
Ты пробовал мой последний пример? с альтернативными переносами?
Ну или хотя бы просто вот так:
Должно получиться
<span>text</span>
0
БелК в труселях
28 декабря 2021, 19:25
Конечно пробовал. Все что Вы пишите я все смотрю и делаю или исправляю свои записи.
0
БелК в труселях
28 декабря 2021, 19:28
Спасибо. Понял буду исправлять!!!
0
БелК в труселях
28 декабря 2021, 19:39
Вот и все сделал как Вы писали, но что-то снова пошло не так, а что не знаю?
public class Solution {
public static void main(String[] args) throws IOException {
String s;
try
(BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in))) {
s = bufferedReader.readLine();
StringBuilder stringBuilder=new StringBuilder();
try
(FileReader fileReader = new FileReader(s);
BufferedReader bufferedReader1 = new BufferedReader(fileReader)) {
while (bufferedReader1.ready()) {
stringBuilder.append(bufferedReader1.readLine());
}
for (Element element : Jsoup.parse(stringBuilder.toString()).select(args[0])) {
System.out.println(element);
}
}
}
}
}
0
Ksenia VolkovaJava Developer в DXCMaster
28 декабря 2021, 19:48
Уже лучше.
А теперь попробуй на таком файле
поискать тег "a"
0
БелК в труселях
28 декабря 2021, 20:11
Я не знаю как выразить всю благодарность Вам. Напишу просто ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО
СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО
СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО
СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО
СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО
СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО
СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО
СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО.
Единственное я не понял почему так хорошо, а до этого было плохо через stringBuilder.toString()? И я опирался на статью https://betacode.net/10399/jsoup-java-html-parser и эту https://javarush.com/groups/posts/2007-legkiy-parsing-html-s-pomojshjhju-jsoup
Я прочитал на счет Parser.xmlParser() только честно результат то одинаковый? Если бы в комментариях не писали решение я уверен что их 11125чел не решили бы даже за всю историю джавыраш.
0
Ksenia VolkovaJava Developer в DXCMaster
28 декабря 2021, 20:16
А ты попробуй без Parser.xmlParser() поискать тег "a" в файле
0
БелК в труселях
29 декабря 2021, 11:39
Добрый день Ксения. Попробовал спасибо. Теперь стало более понятно.
0