// В данном примере я использовал типы float, т. к. при попытке делить 3 на 2 мы получаем 1.5, но тип int обрезает все после .
int main()
{
cout << "Task 30240725!" << endl; // just for fun
int m[12] = {-1,-2,3,4,5,6,7,8,9,10,11,12}; // Инициализируем массив из 12 элементов, чтоб хоть части из них была отрицательная
// среднее арифметическое состоит из сумма_числел / кол-во_чисел
float min_sum = 0; // сумма чисел
float total_min_count = 0; // кол-во чисел
// Инициализиуем цикл от 0 (т. к. все массивы начинаются с 0) до 12 не включительно (т. к. всего элементов 12 начиная с 0. Значит 11)
for (int i = 0; i < 12; i++) {
// если текущий элемент массива m от индекса i меньше чем 0, значит это отрицательное число
if (m[i] < 0) {
min_sum += m[i]; // складываем, непосредственно, само число m[i]
total_min_count++; // увеличиваем кол-во чисел на 1. Можно написать строку вида total_min_count = total_min_count + 1; - суть не поменяется
}
}
// Если в массиве не было отрицательных чисел, то делаем проверку. Если кол_во_чисел и сумма_чисел равны 0 значит в массиве не было отрицательных чисел.
// а т. к. по умолчанию min_sum и total_min_count равны 0, то при попытке поделить их получим ошибку. Для этого обрабатываем это условие, чтоб не дать ее допустить.
if (total_min_count == 0 && min_sum == 0) {
// Выкидываем сообщение, мол, нету в массиве отрицательных чисел, работать не буду
cout << "There are no negative numbers in the array" << endl;
// делаем return, дабы программа не продолжила выполнение
return 0;
}
// если же у нас есть и кол-во_чисел и общая_сумма, то спокойно делим одно на другое и сразу выводим в консоль результат.
// PascalABC.NET 3.1, сборка 1172 от 19.02.2016 begin var s:=ReadInteger('n=').ToString.JoinIntoString(''); Writeln('Цифр в числе- ',s.Length); Writeln('Сумма цифр- ',s.Select(d->Integer.Parse(d)).Sum); Writeln('Последняя цифра- ',s.Last); Writeln('Первая цифра- ',s.First); Writeln('Предпоследняя цифра- ',s[s.Length-1]); var m:=ReadInteger('m='); Write('Сумма ',m,' последних цифр числа- '); Writeln(s.Skip(s.Length-m).Select(d->Integer.Parse(d)).Sum); Write('Цифра 3 в запись числа '); if Pos('3',s)>0 then Writeln('входит') else Writeln('не входит'); Writeln('Число в обратном порядке- ',s.Reverse.JoinIntoString('')); Writeln('Перестановка первой и последней цифр- ', s.Last+Copy(s,2,s.Length-2)+s.First); end.
Тестовое решение: n= 1063 Цифр в числе- 4 Сумма цифр- 10 Последняя цифра- 3 Первая цифра- 1 Предпоследняя цифра- 6 m= 2 Сумма 2 последних цифр числа- 9 Цифра 3 в запись числа входит Число в обратном порядке- 3601 Перестановка первой и последней цифр- 3061
Как-то так:
#include <iostream>
using namespace std;
// В данном примере я использовал типы float, т. к. при попытке делить 3 на 2 мы получаем 1.5, но тип int обрезает все после .
int main()
{
cout << "Task 30240725!" << endl; // just for fun
int m[12] = {-1,-2,3,4,5,6,7,8,9,10,11,12}; // Инициализируем массив из 12 элементов, чтоб хоть части из них была отрицательная
// среднее арифметическое состоит из сумма_числел / кол-во_чисел
float min_sum = 0; // сумма чисел
float total_min_count = 0; // кол-во чисел
// Инициализиуем цикл от 0 (т. к. все массивы начинаются с 0) до 12 не включительно (т. к. всего элементов 12 начиная с 0. Значит 11)
for (int i = 0; i < 12; i++) {
// если текущий элемент массива m от индекса i меньше чем 0, значит это отрицательное число
if (m[i] < 0) {
min_sum += m[i]; // складываем, непосредственно, само число m[i]
total_min_count++; // увеличиваем кол-во чисел на 1. Можно написать строку вида total_min_count = total_min_count + 1; - суть не поменяется
}
}
// Если в массиве не было отрицательных чисел, то делаем проверку. Если кол_во_чисел и сумма_чисел равны 0 значит в массиве не было отрицательных чисел.
// а т. к. по умолчанию min_sum и total_min_count равны 0, то при попытке поделить их получим ошибку. Для этого обрабатываем это условие, чтоб не дать ее допустить.
if (total_min_count == 0 && min_sum == 0) {
// Выкидываем сообщение, мол, нету в массиве отрицательных чисел, работать не буду
cout << "There are no negative numbers in the array" << endl;
// делаем return, дабы программа не продолжила выполнение
return 0;
}
// если же у нас есть и кол-во_чисел и общая_сумма, то спокойно делим одно на другое и сразу выводим в консоль результат.
cout << "Average: " << min_sum / total_min_count << endl;
// завершаем выполнение программы
return 0;
}
begin
var s:=ReadInteger('n=').ToString.JoinIntoString('');
Writeln('Цифр в числе- ',s.Length);
Writeln('Сумма цифр- ',s.Select(d->Integer.Parse(d)).Sum);
Writeln('Последняя цифра- ',s.Last);
Writeln('Первая цифра- ',s.First);
Writeln('Предпоследняя цифра- ',s[s.Length-1]);
var m:=ReadInteger('m=');
Write('Сумма ',m,' последних цифр числа- ');
Writeln(s.Skip(s.Length-m).Select(d->Integer.Parse(d)).Sum);
Write('Цифра 3 в запись числа ');
if Pos('3',s)>0 then Writeln('входит')
else Writeln('не входит');
Writeln('Число в обратном порядке- ',s.Reverse.JoinIntoString(''));
Writeln('Перестановка первой и последней цифр- ',
s.Last+Copy(s,2,s.Length-2)+s.First);
end.
Тестовое решение:
n= 1063
Цифр в числе- 4
Сумма цифр- 10
Последняя цифра- 3
Первая цифра- 1
Предпоследняя цифра- 6
m= 2
Сумма 2 последних цифр числа- 9
Цифра 3 в запись числа входит
Число в обратном порядке- 3601
Перестановка первой и последней цифр- 3061