Сформировать новое предложение из данного: удалить слова, состоящие менее, чем из 3-х букв и заканчивающиеся на "а" - C (СИ)
Формулировка задачи:
#include <string.h> #include <stdio.h> int main() { char s1[20]; char a[20]; char b[10]; int k=0; int k1=0; int i; printf("Vvedi stroky="); gets(s1); int c=strlen(s1); for (i=0; i<c; i++) { if (s1[i]!='a'&&s1[i]>3) a[k++]=s1[i]; } printf("\nNovay stroka\n"); for (i=0; i<k; i++) { printf("%c", a[i]); } return(0); }
Решение задачи: «Сформировать новое предложение из данного: удалить слова, состоящие менее, чем из 3-х букв и заканчивающиеся на "а"»
#include "stdio.h" int main() { char s[64]; gets(s); for(char i = 0, j = 0, k = 0, l = 0; s[i-1] || !i; i++, j++, l++) { if(s[i] == ' ' || s[i] == '\0') { if(s[i-1] == 'a' || l < 4) j = k; i += !k, k = j, l = 0; } s[j] = s[i]; } puts(s); return 0; }
Объяснение кода листинга программы
В этом коде с помощью цикла for происходит проход по всем символам строки, которая была введена с клавиатуры и сохранена в массиве s. При этом проверяется, является ли текущий символ пробелом или концом строки. Если это так, то проверяется, является ли предыдущий символ буквой а
и имеет ли текущий слова, состоящие менее чем из 4-х букв. Если условие выполняется, то индексы j и k меняются местами, при этом индекс k увеличивается на единицу, а затем индекс j сбрасывается до значения k, а счетчик l сбрасывается до нуля. Это делается для того, чтобы пропустить все слова, которые заканчиваются на а
и состоят менее чем из 4-х букв. В противном случае, текущий символ сохраняется в позиции j. В конце цикла, когда все символы были проверены, выводится получившаяся строка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д