Задача по нахождению самого короткого слова в предложении – это одна из базовых задач программирования, которая часто встречается при решении различных задач. Это несложная задача, которую может решить даже начинающий программист.
Есть много способов решения этой задачи, в этой статье мы поговорим о следующих подходах:
1. Разбить предложение на слова.
2. Найти самое короткое слово в списке.
3. Проверить, существует ли повторяющееся самое короткое слово.
Давайте разберем каждый из этих способов более детально.
Разбить предложение на слова
Первым шагом в решении этой задачи является разбиение предложения на слова. Существует много способов это сделать, но наиболее простой – это разбить строку по пробелам. Вот как это можно сделать на языке Python:
sentence = «The quick brown fox jumps over the lazy dog» words = sentence.split() print(words)
В этом примере мы использовали метод `split ()`, который позволяет разбить строку на слова, используя пробел в качестве разделителя. Мы также напечатали список слов, чтобы убедиться, что мы разбили предложение на отдельные слова.
#01 Самое короткое слово
Найти самое короткое слово в списке
Следующий шаг в решении этой задачи – это нахождение самого короткого слова в списке. Для этого мы можем перебрать все слова в списке и сравнить их длину. Вот как это можно сделать на языке Python:
sentence = «The quick brown fox jumps over the lazy dog»
words = sentence.split()
shortest_word = words[0]
for word in words:
if len(word)
Источник: qaa-engineer.ru
Подскажите, пожалуйста, составить программу, определяющую длину самого короткого слова в предложении. Если можно, то с объяснением. Даю 25 баллов.
begin
var a:=ReadlnString.ToWords;
var i:=a.Select(t-gt;t.Length).ToArray.IndexMin;
Writeln(Самое короткое слово «,a[i],» длиной ,a[i].Length)
end.
Пример
Зеленые бесцветные идеи яростно спят
Самое короткое слово «идеи» длиной 4
Var i1,i,k,sl,min:integer;
s:string;begin
min:=1000;
k:=0;
readln(s);
s:=s+ ;
for i:=1 to length(s) do
if s[i]= then k:=k+1;
for i:=1 to k do begin
i1:=1;
while s[i1] lt;gt; do
begin
sl:=sl+1;
i1:=i1*k+1;
if s[i1]= then begin
if sllt;min then min:=sl;
sl:=0;
end;
end;
end;
writeln(Длина наименьшего:,min);
end.
Источник: otvechu.com
Задано предложение, состоящее из слов-строк. Написать программу, которая находит самое короткое слово в предложении
Задано предложение, состоящее из слов-строк. Написать программу, которая находит самое короткое слово в предложении. Не понимаю, почему программа пишет самое первое слово и вообще не находит короткого слова.
Уроки Python / Как найти символ в строке
#include #include using namespace std; int main() < string n; int count = 0; int s; int min = INT_MAX; int min_i = 0; getline(cin, n); for (int i = 0; i < n.size(); i++) < count++; if (isspace(n[i])) < if (count < min) < min = count; min_i = i; >count = 0; > > for (int i = min — min_i — 1; i < min; i++) < cout >
Отслеживать
user328896
задан 15 мая 2020 в 17:18
smirnoffmv smirnoffmv
15 6 6 бронзовых знаков
По смыслу min — min_i — 1 должно быть равно начальной позиции самого короткого слова. А по факту оно равно непонятно чему.
15 мая 2020 в 17:49
15 мая 2020 в 18:00
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Я исправил ваш код, оставил в нём комментарии с объяснением. И ещё — в строку нужно вводить символы на латинице, русский она не воспринимает (или переводить строку в правильную кодировку и пользоваться русским).
#include using namespace std; int main() < setlocale(LC_ALL, «Russian»); string n; int count = 0, min = INT_MAX, min_i = 0; getline(cin, n); n += » «; //я добавил пробел, т.к. вы проверяете на наличие пробела в строке, и, когда доходит до последнего слова — // — пробела там нет и оно просто не учитывается for (int i = 0; i < n.length(); i++)< if (isspace(n[i]))< if (count < min) < min = count; min_i = i; >count = -1; //переместил count++ вниз цикла, иначе проверка начинается со 2го символа, // и чтобы расчёты остались верными нужно его уменьшить на один // (при следующем запуске цикла отсчёт начнется неправильно без -1) > count++; > cout >
Источник: ru.stackoverflow.com