Дана строка-предложение. Вывести самое короткое слово в предложении (если таких слов несколько, то вывести первое из них).
Я попробовала написать, но почему-то выдает ошибку, совсем не знаю, как ее исправить
#include
using namespace std;
int main()
{
setlocale(0, "Rus");
char str[256];
cout << "Введите строку:";
cin.getline(str, 256);
char* ptr = strtok(str, ".,!?");
char* min = ptr;
do
{
if (strlen(min) > strlen(ptr))
min = ptr;
}
while (ptr = strtok(NULL, ".,!?"));
cout << "Самое короткое слово:" << min << endl;
system("pause");
return 0;
}
Другие языки программирования и технологии
Помогите написать (исправить) программу на языке Си++
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <algorithm>
using namespace std;
vector<string> split(const string& line) {
istringstream iss(line);
vector<string> box;
string token;
while (iss >> token) box.emplace_back(token);
return box;
}
int main() {
system("chcp 1251 > nul");
cout << "String: ";
string line;
getline(cin, line);
auto box = split(line);
auto min_length = [](const string& a, const string& b) {
return a.length() < b.length();
};
auto min_token = *min_element(box.begin(), box.end(), min_length);
cout << min_token << '\n';
system("pause");
}
#include <string>
#include <vector>
#include <sstream>
#include <algorithm>
using namespace std;
vector<string> split(const string& line) {
istringstream iss(line);
vector<string> box;
string token;
while (iss >> token) box.emplace_back(token);
return box;
}
int main() {
system("chcp 1251 > nul");
cout << "String: ";
string line;
getline(cin, line);
auto box = split(line);
auto min_length = [](const string& a, const string& b) {
return a.length() < b.length();
};
auto min_token = *min_element(box.begin(), box.end(), min_length);
cout << min_token << '\n';
system("pause");
}
Вы в цикле do проверяете одно и то же слово. Если программа и запустится, то не остановится.
Олег .
У меня все работает без изменений. И останавливается и даже слово правильное находит.
А библиотека string.h или cstring подключена? Если что это одна и та же библиотека с разными названиями для работы с сишными строками. Как различать:
cstring - впереди буквочка С говорит что это сишная библиотека
string.h - сзаде есть расширение то есть в данном случае это сишная библиотека, но тут можно путаться потому как например windows.h это не родная библиотека, а библиотека для работы с windows. То есть сторонние библиотеки тоже вполне могут иметь расширение *.h
string - стандартная библиотека для с++ и использования класса string
Дополнительная информация могла запутать, поэтому еще раз повторю что вам нужна именно сишная библиотека (cstring или string.h без разницы, на ваш выбор), так как strtok реализованно именно в ней. И среди разделителей не вижу пробела. Проверил побыстрому, у меня все работает.
cstring - впереди буквочка С говорит что это сишная библиотека
string.h - сзаде есть расширение то есть в данном случае это сишная библиотека, но тут можно путаться потому как например windows.h это не родная библиотека, а библиотека для работы с windows. То есть сторонние библиотеки тоже вполне могут иметь расширение *.h
string - стандартная библиотека для с++ и использования класса string
Дополнительная информация могла запутать, поэтому еще раз повторю что вам нужна именно сишная библиотека (cstring или string.h без разницы, на ваш выбор), так как strtok реализованно именно в ней. И среди разделителей не вижу пробела. Проверил побыстрому, у меня все работает.
Похожие вопросы
- надо написать код программы на языке си. помогите кто знает как!
- Помогите написать текст программы на языке С
- Помогите написать 2 программы на языке pascal!
- помогите написать элементарную программу на языке с или с++
- Помогите, пожалуйста, написать программу на языке Си
- Помогите написать пару программ на СИ
- помогите написать программу на языке Си: В одномерном массиве целых чисел заменить максимальное значение минимальным.
- Как настроить Python под Си? Как написать программу на языке Си в Python'е ?
- помогите написать программу на языке си
- Помогите, пожалуйста, написать текст программы на языке высокого уровня (Basic или Pascal)!