2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Спорный вопрос
Сообщение19.03.2010, 01:11 
Привет всем!) Тема вопроса - лёгкая, надеюсь мне быстро ответят.

Вот дано такое задание:
Найти самую длинную симметричную строку, читающуюся одинаково
слева направо и справа налево, в заданном массиве строк.


Какой из вариантов оформления правильный?:
1) Сделать поле для ввода строк через пробел. И поэтому из понимания слова "строка" в данном задании исключить символ пробела.

2) Учитывать, что строка также может включать в себя пробелы, и сделать кнопку для ввода элементов "Ввести массив", и будет появляться окошко "Ввести s(0)", потом "Ввести s(1)" и т.д.

Уже час думаю, какой из этих вариантов более правильный :shock:

 
 
 
 Re: Спорный вопрос
Сообщение19.03.2010, 01:20 
На мой взгляд, правильный способ -- это сделать многострочное поле для ввода всего массива строк.
Вы на чем пишете? И для какой ОС?

 
 
 
 Re: Спорный вопрос
Сообщение19.03.2010, 01:34 
На Визуал Бейсик для Windows

 
 
 
 Re: Спорный вопрос
Сообщение19.03.2010, 01:41 
Ну так и вводите весь текст целиком в одно поле, а затем уже в программе разбивайте его на отдельные строки (по символу конца строки) и анализируйте.

 
 
 
 Re: Спорный вопрос
Сообщение19.03.2010, 01:43 
Maslov, спасибо) Попробую справится)

 
 
 
 Re: Спорный вопрос
Сообщение19.03.2010, 01:52 
Только Multiline не забудьте TextBox'у выставить, а то он Вам не даст многострочный текст ввести.

 
 
 
 Re: Спорный вопрос
Сообщение19.03.2010, 01:58 
Не забыл уже) Даже сделал полосы прокрутки.
Долго не мог понять, почему горизонтальная полоса прокрутки не появляется, потом узнал, что надо ведь WordWrap отменить)

-- Пт мар 19, 2010 02:04:50 --

А вот я думаю, если в массиве две наидлинных симметричных строки с одинаковой длиной, то ничего не выводить или вывести первую попавшуюся? :shock:

 
 
 
 Re: Спорный вопрос
Сообщение19.03.2010, 02:10 
Если Вы анализируете строки начиная с первой, то удобнее выводить последнюю самую длинную.

 
 
 
 Re: Спорный вопрос
Сообщение19.03.2010, 03:26 
блин... а получается тогда что в она не самая длинная, ведь в массиве имеется строка такой же длины.

Как бы вы поступили?(

Я думаю, что надо это учесть. Программно данную проблему я смогу решить.

 
 
 
 Re: Спорный вопрос
Сообщение19.03.2010, 18:17 
2Mikle1990
Цитата:
а получается тогда что в она не самая длинная, ведь в массиве имеется строка такой же длины.

Ну это профессора любят прикапываться к разнице в словах "максимальный" и "наибольший". :)
Предлагаю вывести все искомые строки максимальной длины (многозначный/индетерминированный алгоритм). :)

 
 
 
 Re: Спорный вопрос
Сообщение19.03.2010, 18:34 
Mikle1990 в сообщении #299249 писал(а):
блин... а получается тогда что в она не самая длинная, ведь в массиве имеется строка такой же длины.

Как бы вы поступили?(
При наличии нескольких самых длинных я бы выводил все. Тем более, что подобная реализация легко приводится к двум другим вариантам:
- выводить любую
- не выводить ничего

 
 
 
 Re: Спорный вопрос
Сообщение19.03.2010, 21:03 
Maslov в сообщении #299436 писал(а):
- выводить любую
- не выводить ничего

Вот какой из них более правильный? Или они оба очень правильные?)

 
 
 
 Re: Спорный вопрос
Сообщение19.03.2010, 23:07 
Mikle1990 в сообщении #299515 писал(а):
Вот какой из них более правильный?
Такие вещи должны в условии оговариваться. Ну а если не оговариваются, выбирайте что хотите.

Да я бы на Вашем месте вообще на эту тему особенно не озабачивался: задача явно на работу с массивами и строками, а что выводить -- вещь второстепенная. Ну напишите, в конце концов, где-нибудь или на словах скажите, что в связи с тем, что в постановке задачи этот момент не определен, Вы приняли решение обрабатывать эту ситуацию так-то и так-то.

 
 
 
 Re: Спорный вопрос
Сообщение19.03.2010, 23:38 
Спасибо)

 
 
 
 Re: Спорный вопрос
Сообщение20.03.2010, 03:28 
Что-то я попытался сделать само задание, а не получается. :(
Точнее я могу сделать, но это будет очень криво и займёт дней пять.

У меня есть один алгоритм на уме. Короче, в TextBox1 содержатся все наши строки.
При нажатии на кнопку "Выполнить":
1) Объявляем переменную в которую хотим запихнуть весь текст из TextBox1
запихиваем:
Код:
s = vvod(TextBox1) 'получаем весь текст из TextBox1

2) Объявляем переменную для внесения в неё размерности массива. Размерность массива мы получим из (3)
3) Отправляем в некую процедуру переменные (1) и (2), считаем там символы перехода на новую строку. После ещё кое-чего мы уже знаем размерность массива и учитывая то, что переменная (2) была передана по ссылке(ByRef)
4) Зная длину массива объявляем его:
Код:
Dim stmas(длина массива) As String

5) Отправляем его(по ссылке) и переменную (1)(по значению) в процедуру, где он заполнится данными. Т.е. в первый элемент массива записывается то, что до символа перехода на новую строку, потом символ перехода на новую строку пропускается и уже записывается второй элемент массива и т.д.
6) Потом этот массив отправляем(по ссылке) в процедуру где в нём будут удалены все несимметричные строки.
7) Потом этот массив и переменную в которую будет записана самая длинная симметричная строка отправляем(по ссылке) в процедуру, где будет найдена самая длинная симметричная строка. А также в процедуре будет цикл, который будет задаваться вопросом "А нет ли в массиве строк такого же размера?". Если нет, то zs = 1, если zs > 1, то это показывает, что имеется две "самых" длинных строки. Почему так? Просто в цикле о котором я говорил будет такая штука: Уже зная длину самого длинного элемента мы пройдёмся по циклу и будем её сравнивать с длинами остальных строк. Если строки будут равны, то zs = zs + 1. Т.е. если действительно есть самая длинная строка, то длина её должна быть только у одного эл-та массива.
... :oops:

Я не знаю даже что и сказать. И поговорка "терпение и труд всё перетрут" здесь не очень действует( Буду раз если какой-нибудь смельчак(-ки) мне поможет :(

 
 
 [ Сообщений: 23 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group