Посчитать в строке количество слов, состоящих только из разных букв - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста разобраться.. Дано задание написать программу на С, которая считает в строке количество слов, состоящих только из разных букв.. Я ее сделал таким образом:
#include <stdio.h>
#include <string.h>
#include <conio.h>
#define MAX 1000
int diff_detect(char* p_str)
{
  char* pp;
  int i=0;
  const char* temp=p_str;
  for(pp=p_str;pp<(pp+strlen(p_str)-1);++pp)
  {
     i=strchr(temp,*pp)-strrchr(temp,*pp);
     if(i!=0)
     return 0;
  }
  return 1;
}
int diff_word(const char* str,const char* delim)
{
     char* buf, * p;
     int cnt=0;
  if ( ! str || ! delim )
    return -1;
  if ( ( buf = strdup(str) ) == NULL )
    return -1;
   for(p=strtok(buf,delim);p;p=strtok(NULL,delim))
   {
     if(diff_detect(p))
     ++cnt;
   }
   return cnt;
}
void main()
 {   char line[MAX];
     const char* w_border=" ";
     const char* p_line=line;
     printf("This application solves task 16 from laboratory work 4.\n");
     printf("*******************************************************************************\n");
     printf("Please input your string:\n");
     gets(line);
     printf("Number of words which consist of different letters is: %d\n",diff_word(p_line,w_border));
     getch();
 }
При выполнении после ввода строки программа завершает работу..Запускал в отладчике, там вроде значения переменных и функций корректные..Не могу найти ошибку

Решение задачи: «Посчитать в строке количество слов, состоящих только из разных букв»

textual
Листинг программы
for(pp=p_str;pp<(pp+strlen(p_str)-1);++pp)
  {
     i=strchr(temp,*pp)-strrchr(temp,*pp);
     if(i!=0)
     return 0;
  }

Объяснение кода листинга программы

В данном коде выполняется следующая последовательность действий:

  1. В переменной pp хранится указатель на начало строки p_str.
  2. В переменной i хранится значение 0.
  3. В цикле выполняется следующее:
    • Переменная pp увеличивается на 1.
    • В переменной i хранится разница между strchr(temp,*pp) и strrchr(temp,*pp). Где strchr - функция, возвращающая первый символ в строке temp, который равен символу в позиции pp в строке p_str. А strrchr - функция, возвращающая последний символ в строке temp, который равен символу в позиции pp в строке p_str. Если такой символ в строке temp отсутствует, то возвращается 0.
    • Если i не равно 0, то выполняется выход из цикла и возврат 0.
  4. Если цикл был выполнен полностью, то возвращается 1.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы