0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 29
|
||||||
1 | ||||||
Задать строку (несколько предложений) как массив. Проверить чтоб все предложения начинались с заглавной буквы. Если нет18.08.2020, 20:52. Показов 853. Ответов 7
Помогите пожалуйста с решением. Написал код, но не правильно. Не могу понять как нужно сделать, чтобы каждое предложение начиналось с заглавной буквы. Задачка самая простая без функций и указателей
0
|
18.08.2020, 20:52 | |
Ответы с готовыми решениями:
7
Файл: Выяснить, начинаются ли все предложения с заглавной буквы, если нет, то исправить. Проверить все ли фамилии начинаются с заглавной буквы и исправить если нет В тексте проверить все ли предложения начинаются с заглавной буквы Проверить начинаются ли все предложения в файле с заглавной буквы |
2528 / 1247 / 461
Регистрация: 08.11.2016
Сообщений: 3,428
|
||||||
19.08.2020, 00:17 | 2 | |||||
В однобайтовой кодировке латинские заглавные буквы имеют численное значение на 32 меньше чем строчные, потому Вам достаточно будет при встрече вначале предложения строчного символа вычесть из него 32, чтобы получить заглавный.
Также для решения задачи Вам понадобиться массив символов содержащих возможные разделители предложений
2
|
0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 29
|
|
19.08.2020, 22:14 [ТС] | 3 |
спасибо. думал, что нужно применить bool, но не додумался, что нужно создать еще один массив со знаками
Добавлено через 2 минуты а объясните, пожалуйста, как сделать поиск подстроки тоже без функций и указателей?
0
|
2528 / 1247 / 461
Регистрация: 08.11.2016
Сообщений: 3,428
|
|
19.08.2020, 22:34 | 4 |
skyone, как это: "без функций и указателей"? В смыле без всяких strcmp strncmp? Но это без функций, а вот как тут без указателей? Или Вы о чем?
0
|
0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 29
|
|
19.08.2020, 23:04 [ТС] | 5 |
да, Вы правильно поняли. самая простая задачка с массивом. Прошу прощения, неправильно выразился. нужно проверить встречается ли ли вторая строка в первой, то есть изначально задается две
0
|
2528 / 1247 / 461
Регистрация: 08.11.2016
Сообщений: 3,428
|
||||||
20.08.2020, 07:57 | 6 | |||||
skyone, это называется поиск подстроки в строке, удобнее использовать strncmp, но сампальный вариант вобщем прост как 3 копейки
И да, еще, в С нет типа bool и ключевых слов true/false как в С++, для использования bool в С на подобии С++ надо подключать stdbool.h
1
|
0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 29
|
|
22.08.2020, 18:16 [ТС] | 7 |
объясните, пожалуйста, что Вы делаете с 8й строки. плохо понимаю
0
|
2528 / 1247 / 461
Регистрация: 08.11.2016
Сообщений: 3,428
|
|
24.08.2020, 08:31 | 8 |
skyone, в строке 8 вычисляется разность между длинной строки и длинной искомой подстроки (корректный результат в беззнаковых целых числах гарантируется так как перед этим было проверено что подстрока не длиннее строки). Эта разность означает сколько раз нужно сдвинуть подстроку относительно строки. Далее во внешнем цикле идем по количеству сдвигов, а во вложенном идем по подстроке от начала до конца, а по строке от текущего смещения от начала и до текущего смещения + длина подстроки посимвоььно проверяя равна ли искомая подстрока этой части строки и если нет, то переходим во внешний цикл, где, опять таки, если подстрока не найдена, то переходим к следующему смещению, если же подстрока найдена (то есть вложенный цикл прошел по всем символам подстроки и при этом условие
substr[k] != str[k + i] не выполнилось ни разу) то форсированно завершаем внешний цикл, далее возвращаем результат.
1
|
24.08.2020, 08:31 | |