0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 11
|
||||||
1 | ||||||
Напечатать все слова, которые встречаются в последовательности более одного раза19.04.2015, 21:41. Показов 2080. Ответов 12
Метки нет (Все метки)
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать все слова, которые встречаются в последовательности более одного раза.
После чтения строки выходит ошибка: необработанное исключение по адресу 0x0FEEF950 (msvcr110d.dll) в Часть 2 - Программа 1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCCC. Помогите, пожалуйста, исправить код.
0
|
19.04.2015, 21:41 | |
Ответы с готовыми решениями:
12
Напечатать символы, которые встречаются в заданной последовательности более одного раза Найти и напечатать числа, которые встречаются в массиве более одного раза Напечатать все слова, в которых первая буква слова входит в него более одного раза. Напечатать все слова, которые встречаются в последовательности по одному разу |
202 / 200 / 65
Регистрация: 06.10.2013
Сообщений: 552
|
|
19.04.2015, 22:09 | 2 |
Если я правильно понимаю логику хранения слов в оригинальном буфере, то это сравнение может быть некорректным, т.к. эта функция проверяет строку до '\00'.
1е слово не пропускается случаем?
0
|
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 11
|
|
19.04.2015, 22:35 [ТС] | 3 |
В
По-моему эта проверка корректна, т.к. результат возвращаемый функцией strcmp может быть нуль или меньше или больше нуля
Добавлено через 2 минуты Здесь проверка должна начинаться с самого начала строки str. Думаю проблема не в этом.
0
|
202 / 200 / 65
Регистрация: 06.10.2013
Сообщений: 552
|
|
19.04.2015, 22:38 | 4 |
Строка: "123,1234,456,123,234"
1 слово повторяется - 123. Но strcmp проверять будет подстроки "123,1234,456,123,234" и "123,234" которые между собой не равны. Добавлено через 2 минуты Тогда почему не ptr = str ? Не в этом, но я написал про те подозрительные места, которые бросились в глаза.
0
|
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 11
|
|
19.04.2015, 22:44 [ТС] | 5 |
А зачем в ptr присваивать всю строку str? ptr только для того, чтобы туда записать слово, которое находится до запятой.
0
|
202 / 200 / 65
Регистрация: 06.10.2013
Сообщений: 552
|
|
19.04.2015, 22:47 | 6 |
Именно. Или его не надо обрабатывать?
Добавлено через 1 минуту *word - некорректное разыменование. Скорее всего, из-за него падает.
0
|
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 11
|
|
19.04.2015, 22:54 [ТС] | 7 |
А почему так? Разве не будут сравниваться две строки word[i] и word[j], где i и j - номера строк в массиве word?
Добавлено через 1 минуту Это слово сразу же записывается в массив: Добавлено через 3 минуты Без этой строки все равно не работает код.
0
|
202 / 200 / 65
Регистрация: 06.10.2013
Сообщений: 552
|
|
19.04.2015, 22:54 | 8 |
Не-а.
*char - это указатель на адрес, не более того. Си не хранит никакой информации о длине строки, поэтому её конец - это ближайший нулевой байт. Запись word[c] = ptr; означает: "поместить в ячейку памяти *(word+c) адрес ptr." Больше ничего эта команда не делает.
0
|
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 11
|
|
19.04.2015, 22:56 [ТС] | 9 |
А как правильно присвоить тогда?
0
|
202 / 200 / 65
Регистрация: 06.10.2013
Сообщений: 552
|
|
19.04.2015, 23:12 | 10 |
Проще всего написать свой аналог strcmp для этой задачи, если не хочется делать рефакторинг.
0
|
Модератор
12831 / 7568 / 1764
Регистрация: 25.07.2009
Сообщений: 13,960
|
||||||
20.04.2015, 00:14 | 11 | |||||
Не заморачиваясь русскими буквами и прочими запятыми с точками
0
|
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 11
|
|||||||||||
20.04.2015, 00:47 [ТС] | 12 | ||||||||||
Спасибо, но мне нужен код на Си,а не на С++.
Добавлено через 1 минуту Получился рабочий код, но есть проблема: слова в выводе дублируются из-за наложения индексов в цикле for. Подскажите пожалуйста, как исправить.
Получился рабочий код, но есть проблема: слова в выводе дублируются из-за наложения индексов в цикле for. Подскажите пожалуйста, как исправить.
0
|
202 / 200 / 65
Регистрация: 06.10.2013
Сообщений: 552
|
||||||
20.04.2015, 20:23 | 13 | |||||
А где ты у easybudda там плюсы увидел?
0
|
20.04.2015, 20:23 | |
20.04.2015, 20:23 | |
Помогаю со студенческими работами здесь
13
Напечатать все слова, которые встречаются в последовательности по одному разу Напечатать все слова, которые встречаются в последовательности более одного раза Напечатать все элементы, которые встречаются более одного раза Исключить из файла все слова, которые встречаются более одного раза Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |