Как найти самое длинное слово в строке c
Перейти к содержимому

Как найти самое длинное слово в строке c

  • автор:

Самое длинное слово в строке

Дана строка символов. Признак конца строки — символ ‘n’ (переход на новую строку). Строка состоит из слов, которые отделены друг от друга пробелами. Вывести самое длинное слово и его порядковый номер.

Задание аналогично задаче поиска самого короткого слова в строке. Для решения этой задачи прочитайте статью — о строках в С++. Определить символ пробела в строке можно с помощью функции isspace. Чтобы определить длину слова, воспользуйтесь функцией strlen. Пример вывода программы:

Ниже приведен код для этой задачи. Код самый простой и может усовершенствоваться (например разбиение его на несколько отдельных функции). Код нам предоставил пользователь — Василий Шуверов. Скажем ему: «Спасибо!».

#include #include #include int main() < char s[100000]; int number [10000]; char a; int i,j=0,n=0,k=0, g, max=0, hulp=0, hulp_1=0; /*Набор текста и одновременный подсчет длины каждого слова.*/ for (i=0;i<100000;++i) < s[i]=getchar(); if (s[i]=='n') < number[k]=j; break; >++n; if (s[i] != ' ') < ++j; >if (s[i]==' ') < number[k]=j; ++k; j=0; >> printf("n"); /*Отыскание самого длинного слова и его позиции в тексте */ max=number[0]; for (g=0;gmax) < max=number[g]; hulp=g; >> ++hulp; /*Вывод на экран самого длинного слова и его позиции */ printf("The longest word at number %d: ", hulp); for (g=0;g if (hulp-hulp_1==1) printf("%c", s[g]); if (hulp_1>g) break; > return 0; >

CppStudio.com

Лишь очень немногие живут сегодняшним днем. Большинство готовится жить позднее. n The longest word at number 5: сегодняшним

Задачи по C++. Найти самое длинное слово предложения

Задачи по C++

Автор cyber На чтение 4 мин.

Условие задачи : Найти самое длинное слово заданного предложения и вывести его длину.

Сложность : средняя .

Начнем решать эту. В условии сказано что надо найти самое длинное слово предложения, т.е. сразу же ясно что нам нужна строка, но так как мы будем перебирать каждое слово предложения нам понадобиться функция getline, подобную мы использовали (тут), если у нас будет обычные cin , то в итоге мы будем работать только с одним словом.

Давайте сделаем каркас , объявим переменную и попросим пользователя ввести строку :

#include using namespace std; // используем именное пространство std int main() < setlocale(LC_ALL,"Rus"); // включаем русский язык char str[256]; cout

Первый параметр ф-и getline, т.е str, в него мы будем заносить саму строку,а второй(256) это размер строки.

Но к сожалению как и в той задаче у нас не получиться работа со строкой из русских символов.

Вот теперь самое трудное. Для того чтобы решить эту задачу мы будем использовать так называемые указатели.

Подробнее про них я расскажу в видео уроке. А сейчас скажу то что указатель представляет собой адрес памяти, который указывает (или ссылается) на определенный участок.

Знаю что не понятно. Но надеюсь сейчас станет всё понятно.

И так мы создаем два указателя :

char* ptr=strtok(str," . "); char* max=ptr;

В одном у нас будет храниться адрес на первое слово.

Как вы заметили у нас в указателе ptr есть функция strtok(), это функция разбивает строку на символы, т.е. она нам вернет набор символов, проще говоря слово. У неё два параметра : 1-й — это сама строка, а 2-й — это разделители.

Допустим у нас есть строка : I,Love,it. И как только мы запустим программу у нас отделиться I . Потом уже с помощью цикла мы отделим Love и It.

Во втором указателе у нас будет адрес на ptr. Это точно также как и с поиском наибольшего элемента массива, там чтобы найти его мы присваивали переменной max значение первого элемента, а потом уже сравнивали со следующим, так и тут, нам нужно какое-то начальное максимальное значение.

Чтобы вывести обычное значение нам нужно написать либо max либо ptr, т.е. если мы напишем :

char* ptr=strtok(str," . "); char* max=ptr; cout 

То у нас выведется первое слово строки.

Теперь нам нужен цикл в котором мы и будем искать самое длинное слово предложения :

do < if(strlen(max)while(ptr=strtok(NULL," . "));

В самом цикле мы сравниваем длину слов, и если ptr больше max, то в max уже будет другое слово, как с числами.

Что значит while(ptr=strtok(NULL,» . »)); ?

Исходная строка задается при первом вызове strtok. Во всех последующих вызовах задается нулевой указатель(NULL).

Т.е. пока ptr что либо присваивается у нас цикл работает. Когда я делал эту задачу, я думал именно так ). = — значит присвоить , не забывайте это.

Ну и нам осталось только вывести самое длинное слово предложения :
Надеюсь объяснение было понятно.

cout

Весь код программы :

#include using namespace std; int main() < setlocale(LC_ALL,"Rus"); char str[256]; cin.getline(str,256); char* ptr=strtok(str," . "); char* max=ptr; do < if(strlen(max)while(ptr=strtok(NULL," . ")); cout

Язык Си. Найти самое длинное слово в стpоке символов, перевернуть его и вывести текст

На языке Си. Найти самое длинное слово, перевернуть его и вставить обратно. Программа только находит длинное слово, Введите текст: Привет самый большой мир Самое длинное слово: большой Доделать ее, чтобы она, это слово перевернуло и вставило обратно Введите текст: Привет самый большой мир Самое длинное слово: большой Переделанный текст: Привет самый йошьлоб мир

#include #include #include main() < system("chcp 1251"); // Переходим в консоли на русский язык setlocale(LC_ALL, "Rus");//Подключение рус.яз. char s[100]; // Массив символов int i, id, max, count, len; // Создаем переменные. printf("\nВведите текст:\n"); // Выводим сообщение. gets(s); // Запись введенного слова в массив "s" len = strlen(s); max = 0; // Длина самого длинного слова // Индекс начала самого длинного слова count = 0; for (i=0; imax) < max = count; - count; >count = 0; > if (count > max) < // Проверка последнего слова max = count; - count; >max += id; // Сложение, совмещённое с присваиванием printf("\nСамое длинное слово:\n"); // Выводим сообщение. for (i=id; i 

Отслеживать

задан 5 янв 2021 в 15:25

1 2 2 бронзовых знака

Вот у вас ищется max и id - так используйте их.

5 янв 2021 в 15:55

Если вам помог мой ответ, то примите его пожалуйста как "Правильный ответ", нажав на галочку слева от ответа, или напишите вопросы, которые у вас есть ко мне и я обязательно на них отвечу 🙂

JS длина строки или три способа найти самое длинное слово в строке JavaScript

С помощью разрабатываемого алгоритма мы узнаем в JavaScript длину строки и каждого слова. Затем мы сравним подсчеты, и определим, в каком слове содержится больше всего символов:

Это можно реализовать несколькими способами. Прежде всего, при помощи цикла FOR , методов sort() и reduce() .

Обновлено: 2021-07-14 19:23:59 Валентин Сейидов автор материала

Алгоритмическая задача

Вернуть длину самого длинного слова в предложении. Ответ должен быть выражен в числах:

function findLongestWord(str) < return str.length; >findLongestWord("The quick brown fox jumped over the lazy dog");

Предложенные тест-кейсы

  • findLongestWord(“The quick brown fox jumped over the lazy dog”) должна вернуть число;
  • findLongestWord(“The quick brown fox jumped over the lazy dog”) должна вернуть число 6;
  • findLongestWord(“May the force be with you”) должна вернуть число 5;
  • findLongestWord(“Google do a barrel roll”) должна вернуть число 6;
  • findLongestWord(“What is the average airspeed velocity of an unladen swallow”) должна вернуть число 8;
  • findLongestWord(“What if we try a super-long word such as otorhinolaryngology”) должна вернуть число 19.

Находим самое длинное слово при помощи цикла FOR

Чтобы узнать длину строки JavaScript , мы воспользуемся методом String.prototype.split() .

Метод split() разбивает объект String на массив строк, разделяя строки на подстроки.

Между скобками в методе split() нужно будет добавить пробел,

var strSplit = “The quick brown fox jumped over the lazy dog”.split(‘ ‘);

что позволит получить массив из раздельных слов:

var strSplit = [“The”, “quick”, “brown”, “fox”, “jumped”, “over”, “the”, “lazy”, “dog”];

если не добавить пробел в скобках, то получится следующий результат:

var strSplit = [“T”, “h”, “e”, “ “, “q”, “u”, “i”, “c”, “k”, “ “, “b”, “r”, “o”, “w”, “n”, “ “, “f”, “o”, “x”, “ “, “j”, “u”, “m”, “p”, “e”, “d”, “ “, “o”, “v”, “e”, “r”, “ “, “t”, “h”, “e”, “ “, “l”, “a”, “z”, “y”, “ “, “d”, “o”, “g”];
function findLongestWord(str) < // Этап 1. Разбиваем строку на массив строк var strSplit = str.split(' '); // var strSplit = "The quick brown fox jumped over the lazy dog".split(' '); // var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"]; // Этап 2. Инициализируем переменную, которая будет содержать в себе размер самого длинного слова var longestWord = 0; // Этап 3. Создаем цикл FOR for(var i = 0; i < strSplit.length; i++)< if(strSplit[i].length >longestWord) < // If strSplit[i].length больше, чем сравнимое слово. longestWord = strSplit[i].length; // . затем longestWord принимает новое значение >> /* Здесь strSplit.length = 9 Для каждой итерации: i = ? i < strSplit.length? i++ if(strSplit[i].length >longestWord)? longestWord = strSplit[i].length 1 итерация: 0 yes 1 if("The".length > 0)? => if(3 > 0)? longestWord = 3 2 итерация: 1 yes 2 if("quick".length > 3)? => if(5 > 3)? longestWord = 5 3 итерация: 2 yes 3 if("brown".length > 5)? => if(5 > 5)? longestWord = 5 4 итерация: 3 yes 4 if("fox".length > 5)? => if(3 > 5)? longestWord = 5 5 итерация: 4 yes 5 if("jumped".length > 5)? => if(6 > 5)? longestWord = 6 6 итерация: 5 yes 6 if("over".length > 6)? => if(4 > 6)? longestWord = 6 7 итерация: 6 yes 7 if("the".length > 6)? => if(3 > 6)? longestWord = 6 8 итерация: 7 yes 8 if("lazy".length > 6)? => if(4 > 6)? longestWord = 6 9 итерация: 8 yes 9 if("dog".length > 6)? => if(3 > 6)? longestWord = 6 10 итерация: 9 no Конец цикла FOR */ //Этап 4. Возвращаем самое длинное слово return longestWord; // 6 > findLongestWord("The quick brown fox jumped over the lazy dog");

Без комментариев использование JavaScript длина строки length выглядит так:

function findLongestWord(str) < var strSplit = str.split(' '); var longestWord = 0; for(var i = 0; i < strSplit.length; i++)< if(strSplit[i].length >longestWord) < longestWord = strSplit[i].length; >> return longestWord; > findLongestWord("The quick brown fox jumped over the lazy dog");

Находим самое длинное слово с помощью метода sort()

Мы воспользуемся методом Array.prototype.sort() , который позволяет сортировать массив по определенному критерию, а затем возвращает длину первого элемента в данном массиве.

Метод sort() сортирует элементы массива и возвращает массив.

Если мы просто отсортируем массив:

var sortArray = [“The”, “quick”, “brown”, “fox”, “jumped”, “over”, “the”, “lazy”, “dog”].sort();

то получим следующий результат:

var sortArray = [“The”, “brown”, “dog”, “fox”, “jumped”, “lazy”, “over”, “quick”, “the”];

Перед тем, как узнать длину строки в JavaScript, мы сортируем элементы по определенному критерию,

[].sort(function(firstElement, secondElement) < return secondElement.length — firstElement.length; >)

в котором длина второго элемента сравнивается с длиной первого:

function findLongestWord(str) < // Этап 1. Разбиваем строку на массив строк var strSplit = str.split(' '); // var strSplit = "The quick brown fox jumped over the lazy dog".split(' '); // var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"]; // Этап 2. Сортируем элементы в массиве var longestWord = strSplit.sort(function(a, b) < return b.length - a.length; >); /* Процесс сортировки a b b.length a.length var longestWord "The" "quick" 5 3 ["quick", "The"] "quick" "brown" 5 5 ["quick", "brown", "The"] "brown" "fox" 3 5 ["quick", "brown", "The", "fox"] "fox" "jumped" 6 3 ["jumped", quick", "brown", "The", "fox"] "jumped" "over" 4 6 ["jumped", quick", "brown", "over", "The", "fox"] "over" "the" 3 4 ["jumped", quick", "brown", "over", "The", "fox", "the"] "the" "lazy" 4 3 ["jumped", quick", "brown", "over", "lazy", "The", "fox", "the"] "lazy" "dog" 3 4 ["jumped", quick", "brown", "over", "lazy", "The", "fox", "the", "dog"] */ // Этап 3. Возвращаем длину первого элемента в массиве return longestWord[0].length; // var longestWord = ["jumped", "quick", "brown", "over", "lazy", "The", "fox", "the", "dog"]; // longestWord[0]="jumped" => jumped".length => 6 > findLongestWord("The quick brown fox jumped over the lazy dog");

Код, с помощью которого мы узнаем длину строки JavaScript , без комментариев выглядит так:

function findLongestWord(str) < var longestWord = str.split(' ').sort(function(a, b) < return b.length - a.length; >); return longestWord[0].length; > findLongestWord("The quick brown fox jumped over the lazy dog");

Находим самое длинное слово с помощью метода reduce()

reduce() применяет функцию к каждому значению в массиве ( слева направо ), чтобы сократить его до единственного значения. Метод исполняет callback-функцию лишь один раз для каждого элемента в массиве.

Вы можете представить исходное значение в качестве второго аргумента для метода reduce . Здесь мы добавляем пустую строку “” .

[].reduce(function(previousValue, currentValue) , “”);
function findLongestWord(str) < // Этап 1. Разбиваем строку на массив строк var strSplit = str.split(' '); // var strSplit = "The quick brown fox jumped over the lazy dog".split(' '); // var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"]; // Этап 2. Применяем метод reduce var longestWord = strSplit.reduce(function(longest, currentWord) < if(currentWord.length >longest.length) return currentWord; Else return longest; >, ""); /* Процесс уменьшения currentWord longest currentWord.length longest.length if(currentWord.length > longest.length)? var longestWord "The" "" 3 0 yes "The" "quick" "The" 5 3 yes "quick" "brown" "quick" 5 5 no "quick" "fox" "quick" 3 5 no "quick" "jumped" "quick" 6 5 yes "jumped" "over" "jumped" 4 6 no "jumped" "the" "jumped" 3 6 no "jumped" "lazy" "jumped" 4 6 no "jumped" "dog" "jumped" 3 6 no "jumped" */ // Этап 3. Возвращаем длину longestWord return longestWord.length; // var longestWord = "jumped" // longestWord.length => "jumped".length => 6 > findLongestWord("The quick brown fox jumped over the lazy dog");
function findLongestWord(str) < var longestWord = str.split(' ').reduce(function(longest, currentWord) < return currentWord.length >longest.length ? currentWord : longest; >, ""); return longestWord.length; > findLongestWord("The quick brown fox jumped over the lazy dog");

Валентин Сейидов автор-переводчик статьи « Three Ways to Find the Longest Word in a String in JavaScript »

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *