Условие задачи : Найти среднюю длину слов в заданной строке. Строку вводит пользователь (Язык 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;
}
