По сути, я ищу способ установить содержимое массива —пример: фраза— в отдельные слова для сравнения.
поэтому, когда пользователь вводит данные, я могу сказать, сколько слов одинаковой длины.
void main(){
char array[30];
int length, cont, array_tokens;
printf("enter a phrase: ");
scanf("%[^\n]s", array); //or gets(array); which ever one you like
/*-------------------------
*******magic happens*******
---------------------------*/
for(int i=0; i<wordcount;i++)
printf("%d word(s) with %d letters was entered", array_tokens, cont);//some sort of
system("pause"); //counter which came
} //with the magic that
//happened before
поэтому результат должен быть:
введите фразу: пользователь ввел фразу с похожими длинными словами
1 слово (а) с 1 буквой введено
Введено 2 слов с 4 буквами
Введено 1 слово (а) с 5 буквами
3 слово (а) с 6 буквами введено
Введено 1 слово (а) с 7 буквами
Ну, strtok () является одним из способов решения этой проблемы. Если вы стремитесь к эффективности (вам следует), вы должны написать цикл, который перебирает буквы в предложении. Подсчитайте количество непробельных символов, обнаруженных с момента последнего пробела, и обновляйте массив n-букв-слов-частот каждый раз, когда вы получаете пробел. Я мог бы написать код для этого, но я не хочу лишать вас чувства удовлетворения, когда вы пишете рабочий фрагмент кода самостоятельно. :П
Вы можете иметь массив подсчитывать где кол [я] количество слов длины я.
Set count to 0
Set t to 0
for(int i=0;i<given_phrase.length();i++)
{
if(given_phrase[i]==' ')
{
count[t]++;
t=0;
}
else
{
t++;
}
}
Для C просто проверьте «\ 0» в конце фразы.
Затем вы можете отобразить результаты на основе подсчета.
Вы хотите разделить предложение на tokens
(в данном случае отдельные слова) delimiter
(в этом случае пробел »). Есть разные способы сделать это. Хороший метод C старой школы заключается в использовании strtok
как предположил Роберт Харви, предоставленный C Standard Library. Он работает, передавая строку, которую вы хотите разделить, после чего следует разделитель, по которому нужно разделить строку.
Затем, чтобы посчитать слова одинаковой длины, попробуйте иметь целочисленные переменные для разных длин слов (или, проще говоря, в виде частотного массива, каждый индекс представляет слово этой длины, а его значение — счетчик их вхождений), проходя цикл все токены слова, увеличивая соответствующую переменную, когда встречается слово длины. Чтобы получить длину строки в стиле C, попробуйте strlen
,