*ptr1,*min;
gets(arr);
ptr1 = strtok(arr," ");
min = ptr1;
while(ptr1!=NULL)
{
min=(strlen(ptr1)>strlen(min)) ? min : ptr1;
ptr1 = strtok(NULL," ");
}
puts(min);
return 0;
}
Данный код выводит наименьшее слово из предложения, введённого из клавиатуры. Вопрос...а если мне надо выводить 2 таких слов, какое условие мне нужно наложить, на какое-то, допустим, char *min2?
Я пробовал пойти через strcmp, которое бы смотрело, не одинаковые ли min1 и min2 по символьно, чтобы оно не выводило одно и то же слово. Но как-то оно не пошло...
Ну просто не один максимум делаешь, а массив таких, 2 или 5 -сколько надо. По сути это стек максимумов
не совсем понимаю...
Делаешь массив из скажем 3х элементов. Сравниваешь не с одним, а со всеми элементами, и если надо, вставляешь в нужное место этого массива, а остальное из него выпадает (один лишний элемент)
Чёт мне сложно это понять( То есть мне нужно убрать всё, что я написал ,и пойти через массив?
Слушай, я даже уже забыл, что тебе там надо было. Видимо, да. Подумай, может это наведёт тебя на решение.
Вот задание. Два наименьших слова - это как ? Наименьшее, и наименьшее из оставшихся , искключая наименьшее ?
Я имел ввиду, выводить два слова, у которых наименьшее количество букв
#include <stdio.h> #include <string.h> int main () { char arr[1000]; char *ptr1,*min; gets(arr); ptr1 = strtok(arr," "); while(ptr1) { min= strlen(ptr1)>strlen(min) ? min : ptr1; ptr1 = strtok(NULL," "); } puts(min); return 0; }
Ну, я всё понял правильно сразу же, я просто уточнил. Ну вот так и делать, у тебя сейчас один минимум, а должен быть массив минимумов. На каждом шаге ты вместо вычисления одного минимума вычисляешь два. Делаешь массив из трёх элементов (указателей), туда кладёшь твои два минимума и ещё текущее слово. Сортируешь по длине слова. И берёшь как новые два минимума два наименьших по длине слова — первые два элемента. И так до конца списка слов.
Кстати, не выводи через puts(). Вывод должен всегда содержать какие-то слова ПЛЮС твои данные. А то у тебя будет пустая строка — ты вообще ничего в выводе не увидишь.
выводи printf("1st minimum: [%s]", min);
Обсуждают сегодня