• Здравствуйте помогите решить задачу по программированию на языке C++
    Задача:Создать массив литературных произведений отсортировать в порядке увеличения количества символов в названии вывести на экран название с самым маленьким и самым большим количеством символов, с самым маленьким и самым большим количеством гласных, и самым маленьким и самым большим количеством согласных.

Ответы 1

  • Ответ:

    #include "stdafx.h"

    #include <iostream>

    #include <string>

    #include <fstream>

    #include <windows.h>

    using namespace std;

    int main()  

    {

    SetConsoleCP(1251);

    SetConsoleOutputCP(1251);

    setlocale(LC_ALL, "Russian");

    int str;

    cout << "Введите количество произведений: ";

    cin >> str;

    string glasnie = "ауоыиэяюеё";

    string soglasnie = "бвгджзйклмнпрстфхцчшщ";

    string * text = new string[str];

    string buffer;

    cin.get();

    for (int i = 0; i < str ; i++)

    {

     cout << "Название [" << i + 1 << "]: ";

     getline(cin, buffer);

     text[i] += buffer;

    }

     

    cout << "Сортировка по самому длинному названию: " << endl;

    for (int i = 0; i < str - 1; i++)

    {

     for (int j = i + 1; j < str; j++)

     {

      if (text[i].length() < text[j].length())

      {

       string box = text[i];

       text[i] = text[j];

       text[j] = box;

      }

     }

    }

    for (int i = 0; i < str; i++)

    {

     cout << text[i] << endl;

    }

    cout << "Самое большое количество символов: " << text[0] << endl;

    cout << "Самое малое количество символов: " << text[str-1] << endl;

    int glasn_max = 0;

    int glasn_min = 0;

    string gmax, gmin;

    bool check = 0;

    for (int i = 0; i < str; i++)

    {

     int counter = 0;

     for (int j = 0; j < text[i].length(); j++)

     {

      for (int k = 0; k < glasnie.length(); k++)

      {

       if (text[i][j] == glasnie[k])

       {

        counter++;

       }

      }

     }

     if (check == 0)

     {

      check = 1;

      glasn_min = counter;

      gmin = text[i];

     }

     if (glasn_max < counter)

     {

      glasn_max = counter;

      gmax = text[i];

     }

     if(glasn_min > counter)

     {

      glasn_min = counter;

      gmin = text[i];

     }

    }

    cout << "Самое большое кол-во гласных: " << gmax << endl;

    cout << "Самое малое кол-во гласных: " << gmin << endl;

    int sglasn_max = 0;

    int sglasn_min = 0;

    string sgmax, sgmin;

    check = 0;

    for (int i = 0; i < str; i++)

    {

     int counter = 0;

     for (int j = 0; j < text[i].length(); j++)

     {

      for (int k = 0; k < soglasnie.length(); k++)

      {

       if (text[i][j] == soglasnie[k])

       {

        counter++;

       }

      }

     }

     if (check == 0)

     {

      check = 1;

      sglasn_min = counter;

      sgmin = text[i];

     }

     if (sglasn_max < counter)

     {

      sglasn_max = counter;

      sgmax = text[i];

     }

     if (sglasn_min > counter)

     {

      sglasn_min = counter;

      sgmin = text[i];

     }

    }

    cout << "Самое большое кол-во согласных: " << sgmax << endl;

    cout << "Самое малое кол-во согласных: " << sgmin << endl;

    delete[] text;

    return 0;

    }

    Объяснение:

    Писал в visual studio. Как работает: Вводишь число произведений, далее вводишь названия произведений. Ввел одно название, жмешь Enter, вводишь следующее название и так до конца.

    Код получился большим относительно, можно меньше, но тогда будет немного сложен для начинающих программистов, поэтому писал максимально простым языком.

    • Автор:

      dragster
    • 6 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years