Писал в visual studio. Как работает: Вводишь число произведений, далее вводишь названия произведений. Ввел одно название, жмешь Enter, вводишь следующее название и так до конца.
Код получился большим относительно, можно меньше, но тогда будет немного сложен для начинающих программистов, поэтому писал максимально простым языком.
Для вычисления среднего учащихся, сдавших экзамен, нужно просмотреть все n=30 учащихся и найти сумму s и количество k для тех учащихся, которые набрали более а затем получить и вывести s/k с нужной точностью.
const n=30; var x:array[1..n] of integer; i,k,s: integer; begin Randomize; Writeln('Результаты сдачи'); k:=0; s:=0; for i:=1 to n do begin x[i]:=Random(101); Write(x[i]:4); if x[i]>20 then begin s:=s+x[i]; Inc(k) end end; Writeln; Writeln('Средний сдавших равен ',s/k:6:3) end.
#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 << "\nСортировка по самому длинному названию: " << 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 << "\nСамое большое количество символов: " << 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 << "\nСамое большое кол-во гласных: " << 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 << "\nСамое большое кол-во согласных: " << sgmax << endl;
cout << "Самое малое кол-во согласных: " << sgmin << endl;
delete[] text;
return 0;
}
Объяснение:
Писал в visual studio. Как работает: Вводишь число произведений, далее вводишь названия произведений. Ввел одно название, жмешь Enter, вводишь следующее название и так до конца.
Код получился большим относительно, можно меньше, но тогда будет немного сложен для начинающих программистов, поэтому писал максимально простым языком.
const
n=30;
var
x:array[1..n] of integer;
i,k,s: integer;
begin
Randomize;
Writeln('Результаты сдачи');
k:=0; s:=0;
for i:=1 to n do
begin
x[i]:=Random(101);
Write(x[i]:4);
if x[i]>20 then begin s:=s+x[i]; Inc(k) end
end;
Writeln;
Writeln('Средний сдавших равен ',s/k:6:3)
end.
Тестовое решение:
Результаты сдачи
39 10 74 74 46 61 22 11 6 48 17 62 21 98 69 54 12 4 38 72 53 46 92 16 87 67 34 44 45 86
Средний сдавших равен 57.913