Посчитать количество слов в предложении, которые начинаются и заканчиваются с одной и той же буквой - C (СИ)
Формулировка задачи:
Задача: необходимо посчитать кол-во слов в предложении, которые начинаются и заканчиваются с одной и той же буквой. В предложение слова разделяются запятыми, а заканчивается точкой (я так понял это признак конца) По ручной прокрутке программа должна работать, но почему то она и не заканчивается при вводе точки, и неправильно определяет кол-во слов, не пойму в чем дело уже час
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #define DA 1
- #define NET 0
- int main()
- {
- int sim,nach,kon,razdel,result;
- razdel=DA;
- nach=kon=result=0;
- while ((sim=getchar())!='.')
- {
- if ((sim==' ') || (sim=='\n') || (sim=='\t')) razdel=DA; //Если символ-разделитель
- else
- {
- if (razdel==DA) //Если начало слова
- {
- nach=sim;
- while ((sim!=' ') || (sim!='\n') || (sim!='\t') || (sim!='.')) //пока символ - не разделитель
- {
- kon=sim;
- sim=getchar();
- }
- if (nach==kon) result++;
- }
- razdel=NET;
- }
- }
- printf ("\n%d\n",result);
- return 0;
- }
Решение задачи: «Посчитать количество слов в предложении, которые начинаются и заканчиваются с одной и той же буквой»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- const char CDelim[] = " ,.!?\n\t";
- char str[1024] = { 0 };
- char* p;
- size_t count = 0;
- fgets(str, sizeof(str) - 1, stdin);
- p = strtok(str, CDelim);
- while (p != NULL)
- {
- if (p[0] == p[strlen(p) - 1])
- {
- printf("%s\n", p);
- count++;
- }
- p = strtok(NULL, CDelim);
- }
- printf("total: %u\n", count);
- return 0;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д