Преобразовать текст, поменяв местами максимальное и минимальное предложения - C (СИ) (73133)
Формулировка задачи:
Всех с наступившим!!!
Вообщем задание : дан текст Преобразовать его поменяв местами максимальное и минимальное предложения. Предложения начинаються и заканчиваються на одной строке. Нашел схожу тему, но ответ там дан не был, вообщем требуеться помощь.
Вот смог только реализовать нахождение длинны предложений
Не могу сообразить как поменять местами предложения.
#include <stdio.h> #include <conio.h> #include <locale.h> #include <string.h> int main() { setlocale(0, ""); char str[] = "Hello.My name is George!I`m living in Germany.What would u like to ask?"; printf(str); printf("\n\n"); char a[] = ".!?"; char *p = strtok(str, a); for (int i=1;p!=NULL;i++) { strlen(p); printf("Длинна %d предложения %d\n",i,strlen(p)); p = strtok (NULL, a); } _getch(); return 0; }
Решение задачи: «Преобразовать текст, поменяв местами максимальное и минимальное предложения»
textual
Листинг программы
char s[20][50]; char *p = strtok(str, a); for (int i=1;p!=NULL && i<20;i++) { strcpy(s[i-1],p); p = strtok (NULL, a); }
Объяснение кода листинга программы
- В начале кода объявляется массив
s
размером 20 на 50 символов, предназначенный для хранения предложений. - Затем в переменную
p
записывается результат работы функцииstrtok
, которая ищет в строкеstr
подстроки, разделенные символомa
. Функция возвращает указатель на первую найденную подстроку, в данном случае на первое слово в строке. - Далее начинается цикл, который будет выполняться до тех пор, пока
p
не станет равнымNULL
(что означает, что все подстроки были обработаны) и пока индексi
меньше 20 (что означает, что в массивеs
еще есть свободные ячейки). - Внутри цикла значение
p
копируется в массивs
с индексомi-1
(чтобы учесть нумерацию с 1). - Затем
p
обновляется, и цикл продолжается. - В конце цикла в
s
будут храниться предложения в обратном порядке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д