Задачи по C++. Найти среднюю длину слов в заданной строке.

Задачи по C++

Условие задачи : Найти среднюю длину слов в заданной строке. Строку вводит пользователь (Язык C++)

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

Решение задачи :

Для того чтобы разобраться в этой задаче вам нужно посмотреть (эту). Там мы искали самое длинное слово.

Тут почти тоже самое, только тут всё легче. Мы в цикле будем искать длину каждого слова и заносить в общую сумму. А потом поделим на количество слов.

Для того чтобы найти среднюю длину слов в заданной строке нам понадобятся следующие переменные :

  1. Переменная str — для нашей строки
  2. Переменная average — для средней длины слов
  3. Переменная summa — для суммы слов
  4. Переменная count — для количества слов
  5. Указатель 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;
}

cyber
Оцените автора
CyberLesson | Быстро освоить программирование Pascal и C++. Решение задач Pascal и C++
Добавить комментарий