|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.03.2013, 00:04 | #1 |
Пользователь
Регистрация: 21.03.2013
Сообщений: 13
|
Повторение слова
Всем привет
Написал алгоритм для вычисления повторения слов в строке. Но происходит переполнение. Не могли бы вы меня направить в правильном направление? Код должен быть строго по стандартам ANSI C Код:
Последний раз редактировалось Elnamir; 21.03.2013 в 00:52. |
21.03.2013, 01:03 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
Код:
1) for(int j = 0; j <= MAX_WORDS; j++){ - выход за пределы массива 2) <cstring>, <iostream> - это С++, а не Си 3) Переписал так, потому что есть "неприятная" ошибка, связанная с тем, что str2 перед сравнением нужно завершать \0, чтобы strcmp "не лез" в память, не принадлежащую строке (поэтому мне было легче переписать логику, чем исправлять эту ошибку) И пока присутствуют ошибки в формировании str2 (не так идут индексы) - поэтому легче переложить эту работу на компьютер, переписав считывание И вообще, что за ограничители в 100 слов Только динамическая память, только хардкор
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 21.03.2013 в 01:18. |
21.03.2013, 01:09 | #3 |
Пользователь
Регистрация: 21.03.2013
Сообщений: 13
|
Спасибо, конечно
А можно ли все это реализовать без указателей ? Или указать где у меня ошибка |
21.03.2013, 01:24 | #4 |
Пользователь
Регистрация: 21.03.2013
Сообщений: 13
|
Большое спасибо за помощь, разобрался. Действительно с динамической памятью легче работать. Просто хотелось все это реализовать статически. Но увы
|
21.03.2013, 01:27 | #5 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
Без указателей:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
21.03.2013, 02:05 | #6 |
Пользователь
Регистрация: 21.03.2013
Сообщений: 13
|
Спасибо, что помогли реализовать без указателей. А не могли вы пояснить, что происходит в данной строке while (i < word_count && strcmp(str, arr[i].s)). Само выражение
|
21.03.2013, 02:10 | #7 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
word_count - количество уже запомненных слов.
Перебираем все слова от 0 до word_count - 1 (т.е. i < word_count). Сравниваем считанное слово с i-м словом из массива. Выражение будет 0 (выход из цикла) или если в массиве нету больше слов, или если текущее и считанное слово совпали.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Повторение процедуры | Firebird | Общие вопросы Delphi | 6 | 23.11.2012 12:03 |
Вывести слова предложения в таком порядке, чтобы последняя буква каждого слова совпадала с первой буквой следующего слова ( java ) | huhu | Помощь студентам | 0 | 06.04.2012 19:42 |
Повторение команд | Mihanches | Общие вопросы Delphi | 5 | 07.10.2010 14:12 |
Повторение | CraftR14 | Общие вопросы Delphi | 8 | 17.04.2010 20:15 |