C/C++
C++ решение задач
Дана строка символов которая обязательно заканчивается символом точки . строка состоит из слов которые отделены друг от друга пробелами вывести самое короткое слово и его порядковый номер.( Продемонстрировать на примере) (
#include <iostream>
#include <string>
using namespace std;
int main()
{
char c;
string s,word,minword=""s;
while( (c = getchar()) != '.')
s += c;
int len,minlen=s.length() + 1,pos=1,posmin;
for(int x = 0; x < s.length(); x++)
{
len = 0;
word = ""s;
while(s[x] != ' ' && x < s.length())
{
len++;
word += s[x];
x++;
}
if(len > 0)
{
if(len < minlen)
{
minword = word;
posmin = pos;
minlen = len;
}
pos++;
}
}
if(minword.length())
{
cout << minword << ' ' << posmin << '.' << endl;
}
else
{
cout << "Слово не найдено." << endl;
}
return 0;
}

#include <string>
using namespace std;
int main()
{
char c;
string s,word,minword=""s;
while( (c = getchar()) != '.')
s += c;
int len,minlen=s.length() + 1,pos=1,posmin;
for(int x = 0; x < s.length(); x++)
{
len = 0;
word = ""s;
while(s[x] != ' ' && x < s.length())
{
len++;
word += s[x];
x++;
}
if(len > 0)
{
if(len < minlen)
{
minword = word;
posmin = pos;
minlen = len;
}
pos++;
}
}
if(minword.length())
{
cout << minword << ' ' << posmin << '.' << endl;
}
else
{
cout << "Слово не найдено." << endl;
}
return 0;
}

Виталий Маринохин
Тут напечаталось первое из коротких слов. Второе уже не напечаталось.
Дмитрий Коляда
Всё Путём бро спс Подскажи какими ты книги пользуешься а то у меня возникают проблемы или ты гайдами(в ютубе) пользуешься ?
string str= "сколько нам открытий чудных готовит просвященья дух.A опыт - сын ошибок трудных.И гений породокся вдруг.";
cout << str << endl;
size_t f = 0; size_t s= 0; size_t l= 100; size_t c= 0;
f = str.find_first_of("!-,.;"":");
while (f!=string::npos)
{
str[f]=' ';
f=str.find_first_of("!-,.;"":",f+1);
}
cout << str << endl;
f=0;
s= str.find(' ', f);
while (s!=string::npos)
{
cout << s << ' ';
if ( ((s-f)<l) && ((s-f)!=0) ) { c= f; l= s-f; }
f= s+1;
s= str.find(' ', f);
}
cout << endl << c << ' ' << l << endl;
cout << str.substr(c,l+1) << endl;
cout << str << endl;
size_t f = 0; size_t s= 0; size_t l= 100; size_t c= 0;
f = str.find_first_of("!-,.;"":");
while (f!=string::npos)
{
str[f]=' ';
f=str.find_first_of("!-,.;"":",f+1);
}
cout << str << endl;
f=0;
s= str.find(' ', f);
while (s!=string::npos)
{
cout << s << ' ';
if ( ((s-f)<l) && ((s-f)!=0) ) { c= f; l= s-f; }
f= s+1;
s= str.find(' ', f);
}
cout << endl << c << ' ' << l << endl;
cout << str.substr(c,l+1) << endl;
Zhargal Gomboev
При разбиении на токены (слова) надо сначала проезжать пробелы, табуляции и прочую хрень а потом уже выделять сам токен потому что никто не гарантирует, что строка не начнется с пустого символа. Для этих целей лучше использовать find_first_not_of а потом уже .find_first_of
Андрей Литвинов
а что здесь тусовались ребятки из украины знаешь? перекрыли им кислород поди? Теперь вот из харьковского политеха пусть им помогают. У них уровень Бауманки был во времена СССР
Это не ответ на вопрос, а скорее замечание к нему.
Вам дали очень коварное ТЗ, и, к сожалению, ни один из авторов предыдущих ответов не обратил на это внимание. Вчитайтесь еще раз "Дана строка символов". Не БАЙТ а СИМВОЛОВ. И НИЧЕГО не сказано про кодировку, в которой эти символы находятся. Авторы двух предыдущих ответов, да и вы, вероятно, по умолчанию приняли что один символ равен одному байту, а ведь это совсем не обязательно так. И когда вас просят вывести самое короткое слово - то какую длину они имеют ввиду - символы или байты? Например если cтрока "Hello друг." будет в очень распространенной кодировке UTF-8, то самое короткое слово в байтах будет "Hello" а не "друг" потому что длина слова Hello в этой кодировке 5 байт а слова "друг" 8 байт. Такие вещи программист должен сразу просекать и уточнять у заказчика, что именно ему нужно.
Вам дали очень коварное ТЗ, и, к сожалению, ни один из авторов предыдущих ответов не обратил на это внимание. Вчитайтесь еще раз "Дана строка символов". Не БАЙТ а СИМВОЛОВ. И НИЧЕГО не сказано про кодировку, в которой эти символы находятся. Авторы двух предыдущих ответов, да и вы, вероятно, по умолчанию приняли что один символ равен одному байту, а ведь это совсем не обязательно так. И когда вас просят вывести самое короткое слово - то какую длину они имеют ввиду - символы или байты? Например если cтрока "Hello друг." будет в очень распространенной кодировке UTF-8, то самое короткое слово в байтах будет "Hello" а не "друг" потому что длина слова Hello в этой кодировке 5 байт а слова "друг" 8 байт. Такие вещи программист должен сразу просекать и уточнять у заказчика, что именно ему нужно.
Похожие вопросы
- Нужна помощь при решении задачи в c++
- Решение задачи на C++.
- Помогите с решением задачи на языке СИ
- Основы программирования. Решение задач. Обработка структур. Программа.
- Тренажеры по решению задач С++.
- Решение задач по с++
- Помогите с решением задачи С++
- Помогите с решением задачи в С++.
- Visual Studio. Решение задач
- Решение задачи на языке С++