Что позволяет вычислить алгоритм Евклида? 1) остаток от деления двух чисел 2) наибольший общий делитель 3)производную числа 4)среднее арифметическое двух чисел
// PascalABC.NET 3.2, сборка 1449 от 23.05.2017 // Внимание! Если программа не работает, обновите версию!
begin var f:real->real:= x->cos(0.75*Power(x,0.25)-0.5*Power(x,0.5)+0.25*Power(x,0.75)); var a:=MatrGen(10,10,(i,j)->f(5+(10*i+j)*0.75)); Writeln('*** Исходный массив ***'); a.Println(7,3); Writeln(70*'-'); var fo:=OpenWrite('output.txt'); Writeln(fo,'*** Исходный массив ***'); for var i:=0 to 9 do begin for var j:=0 to 9 do Write(fo,a[i,j]:7:3); Writeln(fo) end; Writeln(fo,70*'-'); Write('Сформированный массив: '); Write(fo,'Сформированный массив: '); var b:=a.ElementsWithIndexes.Where(x->(x[0]=x[1]) or (x[0]=9-x[1])) .Select(x->x[2]).ToArray; b.ForEach(x->Write(x:7:3)); Writeln; b.ForEach(x->Write(fo,x:7:3)); Writeln(fo); Write('Отсортированный массив:'); Write(fo,'Отсортированный массив:'); // пузырьковая сортировка for var i:=0 to 18 do for var j:=0 to 18-i do if b[j]>b[j+1] then Swap(b[j],b[j+1]); b.ForEach(x->Write(x:7:3)); Writeln; b.ForEach(x->Write(fo,x:7:3)); Writeln(fo); fo.Close end.
begin var f:real->real:= x->cos(0.75*Power(x,0.25)-0.5*Power(x,0.5)+0.25*Power(x,0.75)); var a:=MatrGen(10,10,(i,j)->f(5+(10*i+j)*0.75)); Writeln('*** Исходный массив ***'); a.Println(7,3); Writeln(70*'-'); var fo:=OpenWrite('output.txt'); Writeln(fo,'*** Исходный массив ***'); for var i:=0 to 9 do begin for var j:=0 to 9 do Write(fo,a[i,j]:7:3); Writeln(fo) end; Writeln(fo,70*'-'); Write('Сформированный массив: '); Write(fo,'Сформированный массив: '); var b:=a.ElementsWithIndexes.Where(x->(x[0]=x[1]) or (x[0]=9-x[1])) .Select(x->x[2]).ToArray; b.ForEach(x->Write(x:7:3)); Writeln; b.ForEach(x->Write(fo,x:7:3)); Writeln(fo); Write('Отсортированный массив:'); Write(fo,'Отсортированный массив:'); b.Sort; // вместо пузырьковой сортировки b.ForEach(x->Write(x:7:3)); Writeln; b.ForEach(x->Write(fo,x:7:3)); Writeln(fo); fo.Close end.
{ Вам следовало бы более точно описать, что вам нужно. Непонятно, что это за условие со следованием. В примере 21106 за цифрой 2 следует 11, но за 11 не следует ничего из перечисленного. Ну или в нем 10 следует за 1, но тогда зачем условия следования для 10..12? + ничего не сказано про случайное распределение этих чисел. Так-то программа, которая все время выводит "1", тоже подходит под эти условия }
2)наибольший общий делитель