Не сказала бы, что это решение сильно отличается от уже имеющегося, но
а) оно совсем немножко удобнее (хотя бы из-за ClrScr и вывода ответа с определённым количеством знаков после запятой). А ещё предусмотрена возможность отсутствия таковых чисел.
б)ну не могла я пропустить задачу по паскалю)
Program n1;
Uses CRT;
Const n=10;
Var a: array[1..n] of integer;
i,s,k: integer;
begin
ClrScr;
Randomize;
For i:=1 to n do
begin
a[i]:=random(10);
write(a[i]:3);
If a[i]=i then
begin
s:=s+a[i];
writeln('s=',s);
k:=k+1;
end;
end;
writeln;
If k=0 then writeln('таких элементов нет') else
Writeln('Среднее арифметическое элементов массива, равных своим индексам, равно ',s/k:4:4);
readln
end.
ДЗ для ВЕРЫ ВИКТОРОВНЫ:
Объяснение:
Var I, N, m: integer;
{Выводит таблицу квадратов до N числа}
Begin
Readln(N); //Что вводим в этой строке и зачем? Как можно подсказать пользователю, что ввести?
{Вводим до какого числа нам нужно получить квадрат; Подсказать можно через WRITELN}
Writeln('Таблица квадратов чисел от 1 до N'); //Сколько раз выполняется этот оператор?
{Один раз}
For i:=1 to N do //Сколько раз выполнится цикл?
{N раз}
Begin //Зачем снова писать операторные скобки?
{Затем, что это цикл, который всегда обособляется и отделяет от остальных операторов}
m:=i*I;
Writeln(I,' ',m); //Как по-другому оставить пробелы между столбиками?
{Можно сделать так - Writeln(I:3,m:16);}
End;
End.