| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > работа с набором слов |
| Автор: FreeJaile 29.2.2008, 17:42 | ||
| Здраствуйте. Мне нужно задать набор слов, построить любую цепочку из них так, чтобы последняя буква одного слова совпадала с первой буквой последующего(этого ещё не делала, поэтому функцию cheking просто как пример работы с этим массивом поместила). Задаю массив. И как я поняла из всего прочитанного, работать с этим массивом я могу только через указатель... но что-то запуталась( вот в этой строчке : "if (strncmp (p[i], p[i+1], 1) == 0)" выдает ошибку 'strncmp' : cannot convert parameter 1 from 'char' to 'const char *'
|
| Автор: Christoph 29.2.2008, 22:09 |
| Ошибка пишет то что нельзя конвертировать параметры, мне кажется ты при описании функции указала char* p тоесть будет передавать не массив а одна строка! |
| Автор: FreeJaile 29.2.2008, 22:58 | ||
да..точно (я проверяла криво, в цикл вывод р записала) но так и не поняла как передать массив в функцию =( подскажите, плз |
| Автор: prof_GCC 1.3.2008, 09:31 | ||
Все предельно просто, массивы в функции передаются через указатели, поэтому, если у тебя строка, то она указывает на массив символов, т.е. в функцию ты передаешь либо char**, поэтому в функцию сравнения можно смело передовать твою переменную word как только прототип функции станет checking(char**). Крогме того strncmp (p[i], p[i+1], 1) == 0 не соответствует тому, что тебе нужно, ты сравниваешь первые символы строки |
| Автор: prof_GCC 1.3.2008, 10:28 |
| Нет, я имел ввиду после изменения прототипа на checking(char**) и передачи в функцию переменной word |
| Автор: FreeJaile 19.3.2008, 17:46 | ||||
| мне нужно эту задачу оказывается списком делать(( как в списке сравнить последнюю букву рассматриваемого слова с первой буквой следующего? использую структуру
подсчитываю длину слова так:
просьба модераторам переименовать тему в..например просто "набор слов" (ну или на усмотрение модератора соответственно) |
| Автор: klaq 28.3.2008, 15:19 |
| Есть вопрос, коль уж тема по работе с набором слов. Взаимодействие клиент-сервер по протоколу UDP, клиент посылает на сервер набор слов, тот возвращает количество одинаковых слов. С клиентами и серверами разобрался, а вот со словами похуже, вроде как понимаю, что надо было-бы строку расчленить на слова, их записать в массив и поискать, но вот с реализацией пока никак, подсобите, плиз! |
| Автор: Rififi 28.3.2008, 20:42 | ||
в простейшем случае - функция из стандартной си-библиотеки strtok (есть свои особенности, например strtok не является потоко-безопасной) или можно boost заюзать:
|
| Автор: klaq 29.3.2008, 12:00 | ||||
Я сделал немного по-другому (входная строка - z) порезал ее на слова и забил их в массив:
В Си я пока зеленейший новичок, так VB малость, да 1С, так что строго не судите. Теперь вот вторая проблема, как забить в массиве сравнение. Я пошел простейшим путем)):
Но почему-то сравнение y[p]==y[m] не работает. В чем тут может быть дело? |
| Автор: MAKCim 29.3.2008, 12:30 |
| klaq, strcmp()/strncmp() |
| Автор: MAKCim 29.3.2008, 13:00 | ||||
я бы сделал так
|
| Автор: klaq 29.3.2008, 14:07 |
| MAKCim, Большое спасибо! Мой вопрос - это задание из обычной лабы по "Комп. сетям" и я без лишних мудрствований сделал через массив и strcmp, жестко ограничив длину строки и размер массива. Для жизни, конечно, непригодно |
| Автор: FreeJaile 2.4.2008, 19:22 | ||||
вот на этом месте вылетает на выполнении (т.е. не выводит массив)
подскажите, плз, в чем ошибка... |
| Автор: Dmi3ev 2.4.2008, 19:48 | ||
на первый взгляд
|
| Автор: FreeJaile 2.4.2008, 20:11 |
| во-первых, тогда бы вообще не запустилось ничего на выполнение. во-вторых, там в той же ф-ции раньше объявляется i (: |
| Автор: Dmi3ev 2.4.2008, 20:16 |
| ну по идее, если ты объявляешь i в цикле, то после завершения цикла нет никакого i, поэтому и сказал |
| Автор: FreeJaile 3.4.2008, 21:49 |
| Вопрос все ещё в силе. Если у кого-то есть ещё какие-либо идеи, не молчите пожалст (: на мой взгляд там нет ошибок по крайней мере до этого места, которое я указала %) может, с распределением памяти там что-то не так? |
| Автор: Dmi3ev 3.4.2008, 21:56 |
| есть набор слов (как он задается, программно или с клавы?), допустим собака, арбуз, заяц, надо вывести цепочку. я так понимаю, ответом будет собака заяц арбуз. а если нет таких слов, которые удовлетворяют условию? вообщем напиши поподробнее, что должно получиться |
| Автор: FreeJaile 3.4.2008, 22:16 |
| набор слов задается с клавы и сколько хочет пользователь, поэтому и завела динамич. массив)) прога должна выводить любую(можно в принципе и одну, но тогда максимальной длины) цепочку слов т.е. собака заяц арбуз -> собака арбуз. заяц солнце арбуз собака -> собака арбуз. но там по заданию старый вариант с ошибками (в функции chain) но вот почему же вылетает на выполнении.. |
| Автор: Dmi3ev 3.4.2008, 22:39 | ||
а почему не собака арбуз заяц (ведь заяц на з начинается а арбуз на з заканчивается)? |
| Автор: FreeJaile 3.4.2008, 22:41 |
| :упс: я просто не заметила.) |
| Автор: Dmi3ev 3.4.2008, 22:57 |
| вот теперь я догнал суть))) Добавлено через 1 минуту и 58 секунд надо подумать))) |