Обработка строк: определиния упорядоченности слов лексикографически, замена букв, поиск и вывод самого длинного слова. - C (СИ)
Формулировка задачи:
Помогите, пожалуйста решить задачу на C:
Дан текст.
1) Определить, упорядочены ли лексикографически слова данного предложения (следуют ли в алфавитном порядке).
2) Заменить все буквы «А» на буквы «а».
3) Вывести на экран самое длинное слово.
Я попытался выполнить пункт два, но программа работает некорректно. На счёт же первого и третьего пункта я нахожусь в полном неведении. Также я не уверен в правильности подхода к решению задачи.
Заранее благодарен за помощь.
П.С. Буду искренне рад, если сможете еще и объяснить, как решается задача, а также посоветовать, где можно почитать про строки.
#include <stdio.h> #include <conio.h> #include <string.h> #define N 256 int main() { char st[N]; int i; puts("Vvedite tekst:"); gets(st); for(i=0;i=N;i++) if(st[i]='a') st[i]='A'; printf("\n%s",st); getch(); return 0; }
Решение задачи: «Обработка строк: определиния упорядоченности слов лексикографически, замена букв, поиск и вывод самого длинного слова.»
textual
Листинг программы
#include <cstdlib> #include <iostream> #include <cstring> int main(int argc, char *argv[]) { char str[100]; char *p; int mas[50]; int j=0, k=0; for(int i=0; i<50; i++) mas[i] = 0; std::cout << "enter text: "; std::cin.getline(str, 100); p = strtok(str, " ,.!?:"); while(p != NULL) { mas[j] = p[0]; j++; k++; p=strtok(NULL, " ,.!?:"); } int flag=1; for(int i=0; i<k-1; i++) { if(mas[i+1] < mas[i]) { flag=0; break; } } if(flag) std::cout << "True!\n"; else std::cout << "False!\n"; std::cout << "\n"; system("PAUSE"); return EXIT_SUCCESS; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с C++
- Объявление переменных: — str — массив символов для ввода текста — p — указатель на текущий символ в массиве str — mas — массив для хранения первых букв каждого слова — j — счётчик заполненных элементов массива mas — k — счётчик слов в введенной строке
- Ввод текста с помощью функции std::cin.getline
- Разделение введенной строки на слова с помощью функции strtok
- Заполнение массива mas первыми буквами каждого слова
- Установка флага=1
- Проверка упорядоченности массива mas с помощью цикла for и условием if
- Если флаг=0, то вывод False, иначе вывод True
- Вывод сообщения об успешном выполнении программы
- Ожидание нажатия клавиши с помощью функции system(
PAUSE
) - Возвращение значения EXIT_SUCCESS, указывающего на успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д