Посчитать количество слов в предложении, которые начинаются и заканчиваются с одной и той же буквой - 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;
}