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

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

  • автор:

Как найти в стоке слово наибольшей длины на C++?

Необходимо:
Осуществить взаимодействие клиента и сервера на основе протокола UDP.
Функционирование клиента и сервера реализовать следующим образом:
клиент посылает набор слов, сервер возвращает слово с максимальным количеством букв.

Я понимаю, что надо сделать, но не могу реализовать. Чтобы вывести слово максимальной длины, необходимо разбить строку на слова, а потом определять длину.
Часть кода, которая в комментариях начиная с цикла «for» определяет длину самого длинного слова, а часть когда перед этим, как раз разделяет строку и выводит отдельно слова.
Но всё вместе я не могу это совместить.

Русские Блоги

результат операции:

Интеллектуальная рекомендация

UTF64 в строку

Функция одной страницы на одной странице (о нас / свяжитесь с нами / корпоративная культура / введение лидерства / организационная структура / . )

предисловие Это руководство основано на модуле «apifm-wxapi» и учит вас быстрой реализации разработки небольших программ, поэтому вам может понадобиться понять следующие моменты: «Со.

Как писать файлы загрузки внешнего интерфейса (совместимо с IE Firefox chrome)

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

Excel обучение — производственная диаграмма

Каталог статьи Стиль гистограммы Гистограмма Вставить диаграмму вставки Данные первого сортировки Отрегулируйте вертикальную последовательность оси координат Отрегулируйте границу горизонтальной оси Д.

Использование заводского режима в Struts ModuleConfig

Sturts использует класс фабрики для создания объекта ModuleConfig, фактически он все еще использует метод интерфейсно-ориентированного программирования и использует интерфейс для динамического .

Вам также может понравиться

Ввод информации об экзамене для студентов и платформа запроса результатов последнего экзамена

1. Ввод информации об экзамене студента 1. Во-первых, в базе данных должно быть две таблицы: студент и оценка; Вы можете посмотреть на структуру таблицы студент студент базовая информация таблица табл.

2005 TCO Online Round 1 — RectangleError

RectangleError Problem’s Link Problem Statement You want to draw a rectangle on a piece of paper. Unfortunately, you are not a perfect draftsman. The lines you make, a.

Стек снова переполняется

источник Недавно код проекта снова пережил переполнение стека. На этот раз переполнение стека немного отличается от в прошлый раз. Оборный стек не является глубоким, и код функции не был выполнен, ког.

TCP управление потоком и перегрузка

Управление потоком TCP оригинал Так называемое управление потоком состоит в том, чтобы сделать скорость отправки отправителя не слишком быстрой, чтобы у получателя было время принять ее. Использование.

Процесс синхронизации между узлами в Ethereum

* Условия генерации синхронизации В процессе синхронизации блоков один узел будет синхронизироваться только с другим по одному, и только одна из следующих трех ситуаций запустит синхронизацию между уз.

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

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

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

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

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

setlocale
(LC_ALL,
«Rus»
);
// включаем русский язык

cout <<
«Введите строку : «
; cin.getline(str,256);

Первый параметр ф-и 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 << ptr << endl;
cout << max << endl;

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

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

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

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

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

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

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

[C] Вывод самого длинного слова в файле

do
<
word=getche();
if (word==’ ‘) word=’,’; //words are separated with a comma
if (word==’\r’) //lines are separated with a semicolon
//in case of pressing enter — go to the next string
if (word!=0x1B) putc (word,fp);
>
while (word!=0x1B); //do the transformation until Esc is not pressed
putc(‘.’,fp); //end of file designated by point
fclose (fp);
printf(«\n»);
max_n=count_char(fileName);
printf(«Position of the largest word is %d\n»,max_n);

fp=fopen (fileName,»r»); //opening the file for reading from it
if (fp==NULL)
< printf("\n Unable to open the file!\n");
getch();
return;
>
******
fseek(fp,0,max_n);
word=fgetc(fp);
do
<
putc(word,stdout);
word=fgetc(fp);
>while (word!=’.’);
//string=fgetc(fp);
*******8
printf («\nThe longest word in the text is the %s\n»,string);

fclose(fp);
printf («Press any key to exit\n»);
getch();
>

int count_char(const char* fileName) //subroutine for returning the position of the longest word in a file
<
FILE *fp; //file pointer
char word;
int pos[200], count=0, max=1, max_n=1, i;

fp=fopen(fileName,»r»); //checking the ability to open the file
if (fp==NULL)
<
printf («Unable to open the file\n»);
getch();
return 0;
>

fseek(fp,0,0); //reposition of the file pointer of the stream
pos[count]=0;
while (word!=’.’)
<
word=fgetc(fp); //reading the character from a file
if (word==’,’||word==’;’||word==’.’)
pos[count]=ftell(fp);
>
>
for (i=0;i<=count;i++)
if (max<pos[i+1]-pos) //calculating the longest word
< //as the difference of the positions of the words
max=pos[i+1]-pos-1;
max_n=pos;
>
fclose(fp);
return max_n; //returning the position of the longest word to the main program
>

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

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