using System;
using System.Collections.Generic;
namespace Num
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите количество элементов: ");
int N = Int32.Parse(Console.ReadLine());
Console.WriteLine("Введите элементы через enter: ");
List<int> numbers = new List<int>();
for(int i = 0; i < N; ++i)
{
int temp = Int32.Parse(Console.ReadLine());
numbers.Add(temp);
}
Console.WriteLine("Элемены значения которых совпадают с их индексом:");
for (int i = 0; i < N; ++i)
{
if (numbers[i] == i)
Console.Write(numbers[i] + " ");
}
Console.WriteLine();
Console.ReadKey();
}
}
}
<h3>PascalABC.NET 3.4.2, сборка 1864 от 11.11.2018</h3><h3>Внимание! Если программа не работает, обновите версию!</h3>
begin
var (x0, xk, h) := ReadReal3('Задайте x0,xk,h:');
var Ctg: real-> real := x -> Cos(x) / sin(x); // котангенс
var a, b, F: real;
if x0 * xk <= 0 then (a, b) := ReadReal2('Задайте a,b:');
for var i := 0 to Trunc((xk - x0) / h) do
begin
var x := x0 + i * h;
if x < 0 then F := ArcTan(x) + Sqrt(x + 3)
else
if x = 0 then F := (a - b) + Cos(Pi * x) // на самом деле a-b+1
else F := x ** 3 * Ctg(Pi * x / 2);
Writeln(x:20:15, F:25:15)
end
end.
===== PascalABC.NET =====
1. Короткое, внешне изящное, но крайне неэффективное решение, поскольку массив просматривается ПЯТЬ раз.
begin
var a := ArrRandom(40, 0, 120);
a.Println;
Println('Элементов, равных 30:', a.Count(p -> p = 30));
Println('Сумма элементов:', a.Sum);
Println('Среднее арифметическое элементов:', a.Average);
var (imax, imin) := (a.IndexMax, a.IndexMin);
Println('Максимальный элемент №', imax + 1, '=', a[imax]);
Println('Минимальный элемент №', imin + 1, '=', a[imin])
end.
2. Более длинное решение, но с ОДНИМ просмотром массива и поэтому эффективное.
begin
var a := ArrRandom(40, 0, 120);
a.Println;
var (k, s, imax, imin) := (0, 0, 0, 0);
for var i := 0 to a.High do
begin
if a[i] = 30 then
Inc(k);
s += a[i];
if a[i] > a[imax] then
imax := i
else if a[i] < a[imin] then
imin := i
end;
Println('Элементов, равных 30:', k);
Println('Сумма элементов:', s);
Println('Среднее арифметическое элементов:', s / 40);
Println('Максимальный элемент №', imax + 1, '=', a[imax]);
Println('Минимальный элемент №', imin + 1, '=', a[imin])
end.
// PascalABC.NET 3.0, сборка 1156 от 30.01.2016
function Avg(a:array[,] of integer):real;
begin
var s:=0; var k:=0;
foreach var e:integer in a do
if e>0 then begin s+=e; Inc(k) end;
if k>0 then Result:=s/k else Result:=1e-100;
end;
begin
var A:=MatrixRandom(4,4,-50,50); Writeln(A);
Writeln('Среднее арифметическое положительных равно ',Avg(A):0:3);
var B:=MatrixRandom(5,5,-30,30); Writeln(B);
Writeln('Среднее арифметическое положительных равно ',Avg(B):0:3);
var C:=MatrixRandom(4,5,-25,38); Writeln(C);
Writeln('Среднее арифметическое положительных равно ',Avg(C):0:3);
end.
<u><em>Тестовое решение:</em></u>
[[35,35,5,-47],[14,34,35,-13],[25,-5,35,-29],[-7,10,-12,12]]
Среднее арифметическое положительных равно 24.000
[[-12,-17,-10,19,14],[20,17,-27,-2,16],[-3,-21,30,2,10],[5,-3,-17,-3,18],[0,-26,29,1,-22]]
Среднее арифметическое положительных равно 15.083
[[-5,-11,17,-4,15],[15,17,-24,36,15],[-8,-3,-22,28,-25],[-21,6,12,31,-1]]
Среднее арифметическое положительных равно 19.200