![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
Bony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
Задача:
Найти самое длинное общее слово двух заданных предложений. Язык Си, просто Си. |
|||
|
||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Что типа этого, писал быстро поэтому 1. Коряво сделал добывание слова из предложения в функции readword - возможен выход за границы массива. 2. Не сделал пару проверок. Но алгоритм вроде верный. ЗЫ + не проверял. Добавлено @ 15:40 Короче скорее всего код выше бред, но алгоритм таков. Выбирай одно слово из первого предложения, далее перебирай все выбранные слова из второго предложения, пока не найдешь такое же или не подойдешь к концу второго предложения, если найдешь похожее слово, то получай его длину, сравнивай с имеющимся рекордом и если оно выше рекорда записывай слово в буффер, который затем в конце работы будешь показывать. Далее выбирай следующее слово из первого предложения, опять прокатывайся по второму и так далее пока не достигнешь конца первого. Это сообщение отредактировал(а) En_t_end - 16.12.2005, 16:00 |
|||
|
||||
Bony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
Спасибо. С алгорится я все понял!
Если не затруднит можно код, ну если нет так нет Еще раз спасибо |
|||
|
||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Bony
В моем коде нужно только исправить функцию readword, я точно не помню, но по-моему есть такая стандартная функция - умеет выдирать совокупность символов от и до определенного символа в нашем случае - это 32 символ, также нужно срезать запятые и точки + знаки восклицания и всевозможные символы, для этого достаточно просто воспользоваться функцией(станд.) для узнавания является ли данный символ буквой. |
|||
|
||||
Bony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
А для простого Си этот код потянет!!!
|
|||
|
||||
Bony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
Есть несколько вопросов:
1. что делает и эта библиотечная функция strlen(Str)) 2. buffer[i++] - это как? |
|||
|
||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
buffer[i++] - возвращает элемент с индексом i и после этого увеличивает i на единицу.
strlen возвращает длину строки оканчивающуюся нуль-терминатором, причем не включая его в возвращаемое значение. |
|||
|
||||
Bony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
En_t_end чет не пашет, ошибок много!!!
|
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 50 Всего: 88 |
Для простоты считаем, что:
2.Регистр символов не учитываем, хотя можем сделать и это. 3.Количество слов в предложении - не больше 20, хотя можем увеличить.
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Bony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
Dov Спасибо огромное!!! Как мне благодорить тебя???
Может конечно я покажесь наглым, но не могу сделать чтоб самому предложения вводить, ошибки появляются (наверно потому что не сам код писал)! И можно ли как нибудь на подпрограммы разбить??? Но как бы там ни было еще раз спасибо, спас мою шкуры!!! ![]() Это сообщение отредактировал(а) Bony - 21.12.2005, 18:24 |
|||
|
||||
noBony |
|
|||
Unregistered |
Встречный вопрос : 1. Что такое ЯЗЫК ПРОГРАММИРОВАИЯ ??? 2. А С/С++ ??? После ответа на эти вопросы (только честно) оба твоих отпадают сразу . |
|||
|
||||
Dov |
|
||||||||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 50 Всего: 88 |
Вот исправленная версия:
![]()
Что, конкретно, тебя интересует? -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
||||||||
|
|||||||||
noBony |
|
|||
Unregistered |
for Dov
а почему инкремент ( вначале проги ? ) к чему лишние напряги (читай - лишние такты). Почему не указать индекс явно ??? |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 50 Всего: 88 |
noBony, если есть что-нибудь умное сказать - скажи, а оффтопить мы и сами умеем. Вот человеку подпрограммы нужны, например. Помоги. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
noBony |
|
|||
Unregistered |
Я не понял суть задачи :
если слово общее - значит это одно и тоже слово. Как они могут иметь разную длинну ??? |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 50 Всего: 88 |
Общих слов может быть несколько. Нужно найти самое длинное из них. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
noBony |
|
|||
Unregistered |
Общее слово - ХАЛЯВА.
strlen("Халява") == strlen("Халява") == 6; В чём прикол ??? |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 50 Всего: 88 |
2.пейте пиво с раками. самое длинное - пейте. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
noBony |
|
|||
Unregistered |
насёт пива - в точку (на злобу дня).
А насчёт слов - общие по смыслу чтоли ??? |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 50 Всего: 88 |
noBony, вот ты гусь лапчатый.
![]() ![]() Зараз як скажу хранцюзьке слово на иврите, одразу кобылою станэш. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
noBony |
|
|||
Unregistered |
осёл!!!
Родину продал!!! По-русски писать не можешь !!! Давай мыло - сразимся на С\С++. |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 50 Всего: 88 |
А шампуня тебе не дать
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Bony |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
Ну ты чувак даешь????? Я чуть со смеху не опписался!!! Dov
Просто помимо программирования нужно еще и по трем математикам упевать чето понимать! Но ни че потехоньку да по-маленьку, как нибудь на 2-ой семестр переберусь!!!
Прихоть нашего препода, использовать подпрограммы, в данном случае подпрограммы ввода, сравнения и т.д. Я понимаю глупо делать подпр. ввода, но можно сделать попр. сравнения!! |
||||||
|
|||||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 50 Всего: 88 |
Bony, вот с подпрограммами, которые в С / С++ называются функциями.
![]()
Это сообщение отредактировал(а) Dov - 23.12.2005, 02:08 -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Bony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
Благодорность моя не знает границ
И для ясности: функции: 1. InputString - ввод предложений 2. FillArray - ввыдерка слова. 3. CompareWord - сравнение слов 4. OutputWord - ввывод слова И последний наверно вопрос: вот *, тобишь указатель на чето там, на Х, а что значит **? Это сообщение отредактировал(а) Bony - 23.12.2005, 15:44 |
|||
|
||||
Bony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
Чем в данном коде являются:
char **ar char **ar1 char **ar2 Это сообщение отредактировал(а) Bony - 25.12.2005, 12:02 |
|||
|
||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Bony
Массивы указателей. |
|||
|
||||
Bony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
О как!! Массивы указателей! А цель их какая? |
|||
|
||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Bony
В данном случае они хранят слова. Если тебе известно char - символ, а char[] - несколько символов, поэтому чтобы хранить слова нужно иметь несколько char[]. Чтобы иметь несколько char[] можно сделать так: char[][]. |
|||
|
||||
Bony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
А можно ** так что ли? |
|||
|
||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Bony
char** some; - это всего лишь указатель на двумерный массив. Выделение памяти идет в стеке или в куче. В функциях же этот указатель используется для получения адресса на нужный нам массив, чтобы работать с ним, не копируя его содержимое в другую область памяти. char someS[20][13] - обьявление двумерного массива, с практически мгновенным выделением памяти в стеке. char** some; - обьявление указателя на двумерный массив, без выделения памяти. Может применятся для хранения адресса двумерного массива, того же someS. Или же ты можешь сам выделить память, используя менеджер кучи: some = new char*[20]; for(unsigned i = 0; i<20;i++) some[i] = new char[13]; Отчистка области кучи, занятой под some: for(unsigned i = 0; i<20;i++) delete[] some[i]; delete[] some; Обращаясь к двумерному массиву, мы работаем по тому же принципу, что и с обычным массивом символов.То есть используя оператор [] - разыменования для доступа к членам массива по определенному индексу. Не забывая, что массив имеет ещё одну вложенность. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |