![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
maxnsk82 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 27.6.2009 Репутация: нет Всего: нет |
У меня задание:
Функция переписывает строку. Если она находит в строке число, то вместо него она переписывает в выходную строку соответствующее по счету слово из входной строки. (например, "aaa bb1bb cc2cc" - "aaa bbaaabb ccbb1bbcc"). Пытался хотя бы строку перекинуть в функцию, а затем обратно, но тоже не работает:
|
|||
|
||||
Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: нет Всего: 1 |
В main() символ C имеет тип char[256], а в функции function() - char. Писать надо хотя бы
-------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
maxnsk82 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 27.6.2009 Репутация: нет Всего: нет |
Проставил *. но так тоже не работает, ошибка: 'function': identifier not found.
Как сделать вообще не втыкаю(...мне бы работающий код, может тогда разберусь, уже 6 часов как пытаюсь сам сделать( |
|||
|
||||
Luyan |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 3.12.2008 Репутация: 5 Всего: 7 |
одну? их 4 надо ![]()
В функцию передаётся массив, возвращать надо будет другой массив. Думаю реализовать надо так: сначала проходим по массиву С и записываем в word[j][i] до тех пор, пока не встретим пробел, затем кладём символ конца строки (word[0][i]= '\0'), и переходим на новую строку массива word и так далее. Потом начинаем копировать строку С в С2 и как только встречаем символ цифры (С[i] >= '0' && С[i] <= '9'), записываем нужную строку из массива word в С2, пока не встретим word[j][y] = '\0';, и так далее. Функция из двух циклов, в чём проблема? |
||||||
|
|||||||
maxnsk82 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 27.6.2009 Репутация: нет Всего: нет |
Кажется уже близко. но что-то не так в: word[i][j]='/0', не знаю почему?'=' : truncation from 'int' to 'char' и '=' : truncation of constant value - варнинги выдаёт. и что то с возвращаемым значением не то - туплю по поводу передачи параметров в функцию, никак не доходит(....помогите дописать:
|
|||
|
||||
t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
Да потому, что нужно писать '\0' а не '/0'. И основная ошибка, это то, что функция возвращает указатель на массив, память из под которого освобождается по завершению вашей функции. Поэтому, чтобы сильно не заморачиваться с кодом, сделайте массив newstr статичным (static), тогда всё заработает. -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
Luyan |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 3.12.2008 Репутация: 5 Всего: 7 |
поправил ваш код, в первом цикле немного не то делали, а во втором забыли 2 переменные инкрементировать. |
|||
|
||||
maxnsk82 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 27.6.2009 Репутация: нет Всего: нет |
заменил: char static newstr[256]; "/" на "\" тоже везде, но не выполняется программа - ввод массива происходит, enter: такое вот сообщение: Unhandled exception at 0x00fe1540 in prog_lr3v13.exe: 0xC0000005: Access violation reading location 0x0000fb57. кнопки: break- выход/continue-сообщение так и остаётся(
|
|||
|
||||
t_gran |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
И всё тогда нормально выполняется. Не верите, см. прикреплённый файл. Это сообщение отредактировал(а) t_gran - 21.1.2010, 11:47 Присоединённый файл ( Кол-во скачиваний: 9 ) ![]() -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
||||
|
|||||
wasistdas |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 20.1.2010 Репутация: нет Всего: нет |
Ваш вариант не работает и не работает он не из-за static. К автору вопроса, ваша прога вылетает при чтение str, потому что:
тут мы пролетает с последним символом, нужно ставить проверку во втором цикле на конец строки Рабочий вариант:
Такой вопрос, а почему цифр то 5?)) а не 10.И еще не должна ли здесь быть рекурсия ?, т.е. дано: ааа ббб1ввв ггг2ддд -> 3 строка по вашему методу будет гггббб1вввддд, по-хорошему еще 1 можно разложить. |
||||||
|
|||||||
Luyan |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 3.12.2008 Репутация: 5 Всего: 7 |
я так смотрю, на мой рабочий исходник никто не посмотрел, все свои стали делать.
![]() я же написал: поэтому там и была ошибка. Я это исправил. Но хоть мой код рабочий, он не до конца верный, так как я начинал записывать второе слово в позицию word[1][4] и так далее, вариант wasistdas'а с первым циклом более правильный. думаю нет, смотри пример тс. |
|||
|
||||
maxnsk82 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 27.6.2009 Репутация: нет Всего: нет |
Всем спасибо!!!) wasistdas - молодец) Рекурсия я думаю не нужна - ориентируясь по примеру. А то что чисел 5))..ну да в принципе не важно, вроде ещё есть время переправить до 9)...ещё раз спасибо! очень помогли!
|
|||
|
||||
Dancer |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 4 Всего: 37 |
а ничего, что в задании написано "число", а вы организуете замену по "цифрам"? (скорее всего вся фишка задания именно в этом)
в таком случае, только первые 10 слов будут вставляться в дальнейший текст. хотя конечно, если написать aaa121bbb то что нужно будет в это случае сделать? (слово 121; слово 1, слово 21; слово 1, слово 2, слово 1; слово 12, слово 1) критерий выбора будет не понятен тогда, и что вставлять вместо слова с несуществующим индексом? Наверное просто в задании ошибка. -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |