Условие задачи : Найти среднюю длину слов в заданной строке. Строку вводит пользователь (Язык C++)
Сложность : средняя .
Решение задачи :
Для того чтобы разобраться в этой задаче вам нужно посмотреть (эту). Там мы искали самое длинное слово.
Тут почти тоже самое, только тут всё легче. Мы в цикле будем искать длину каждого слова и заносить в общую сумму. А потом поделим на количество слов.
Для того чтобы найти среднюю длину слов в заданной строке нам понадобятся следующие переменные :
- Переменная str — для нашей строки
- Переменная average — для средней длины слов
- Переменная summa — для суммы слов
- Переменная count — для количества слов
- Указатель ptr — для слова.
Начнем мы с каркаса нашей программы :
int main() { setlocale(LC_ALL, "Russian"); // включаем русский язык char str[256]; cout << "Введите строку : "; cin.getline(str,256); double average, summa , count ; summa = 0; count = 0; char* ptr=strtok(str," .,!?"); system("PAUSE"); // чтобы программа не закрывалась return 0 ; // возвращаем функции main() ноль }
Тут мы объявили все переменные, просим пользователя ввести строку и присвоили начальные значения summa и count.
Ну а дальше цикл :
do { summa = summa + strlen(ptr); count = count + 1; } while(ptr=strtok(NULL," .,!?"));
Пускаем цикл, сразу прибавляем в общую сумму длину слова, и увеличиваем кол-во слов на 1.
Теперь считаем среднюю длину, точно также как считаем среднее арифметическое, делим сумму слов на их кол-во.
average = summa / count ; cout << "Средняя длинна слов равна : " << average << endl;
Всё решение задачи C++ :
#include <iostream> using namespace std; int main() { setlocale(LC_ALL,"Rus"); // включаем русский язык char str[256]; // объявляем строку cout << "Введите строку : "; cin.getline(str,256); // просим пользователя ввести строку double average, summa , count ; // объявляем переменные summa = 0; // обнуляем count = 0; // обнуляем char* ptr=strtok(str," .,!?"); // создаем указатель do { summa = summa + strlen(ptr); // считаем сумму count = count + 1; // увеличиваем кол-во слов } while(ptr=strtok(NULL," .,!?")); average = summa / count ; // считаем среднюю длину cout << "Средняя длинна слов равна : " << average << endl; // выводим среднюю длину system("pause"); // чтобы программа не закрывалась return 0; }