Перевод с языка Pascal на C#: Заменить все члены, следующие за членом с наибольшим значением - C# (184404)
Формулировка задачи:
Помогите,пожалуйста,кто-нибудь с программой. Надеюсь,что я все правильно делал в паскале,но как перевести в c#. Помогите люди добрые
Задание: Дано действительные числа A1,...,An и B1,...,Bn. В последовательности A1,...,An и в последовательности B1,...,Bn все члены, следующие за членом с наибольшим значением (за первым по порядку если их несколько), заменить на 0,5.
Код на паскале:
uses crt;
const nmax=100;
type mas=array[1..nmax] of real;
var n:byte;
procedure Massiv(var a:mas;c:char);
var i:byte;
begin
writeln('Исходный массив ',c);
for i:=1 to n do
begin
a[i]:=9*random;
write(a[i]:4:1);
end;
writeln;
end;
procedure Zamena(var a:mas;c:char);
var i,imx:byte;
mx:real;
begin
mx:=a[1];
imx:=1;
for i:=2 to n do
if a[i]>mx then
begin
mx:=a[i];
imx:=i;
end;
writeln('Наибольшее значение=',mx:0:1,' имеет элемент a[',imx,']');
if imx=n then writeln('Замен нет')
else
begin
writeln('Измененный массив ',c);
for i:=1 to n do
begin
if i>imx then a[i]:=0.5;
write(a[i]:4:1);
end;
writeln;
end;
end;
var a,b:mas;
begin
clrscr;
randomize;
repeat
write('Размер массивов до ',nmax,' n=');
readln(n);
until n in [1..nmax];
Massiv(a,'A');
Zamena(a,'A');
Massiv(b,'B');
Zamena(b,'B');
readln
end.Решение задачи: «Перевод с языка Pascal на C#: Заменить все члены, следующие за членом с наибольшим значением»
textual
Листинг программы
class Program
{
const int nmax = 100;
static sbyte n;
static Random rnd = new Random();
static void Massiv(ref double[] a, char c)
{
Console.WriteLine("Исходный массив {0}", c);
for (sbyte i = 0; i < n; i++)
{
a[i] = 9*rnd.NextDouble();
Console.Write("{0:F1} ", a[i]);
}
Console.WriteLine();
}
static void Zamena(ref double[] a, char c)
{
sbyte i,imx;
double mx;
mx = a[0];
imx = 0;
for (i = 1; i < n; i++)
{
if (a[i] > mx)
{
mx = a[i];
imx = i;
}
}
Console.WriteLine("Наибольшее значение={0:F1} имеет элемент a[{1}]", mx, imx);
if (imx == n) Console.WriteLine("Замен нет");
else
{
Console.WriteLine("Измененный массив {0}", c);
for (i = 0; i < n; i++)
{
if (i > imx)
a[i] = 0.5;
Console.Write("{0:F1} ", a[i]);
}
Console.WriteLine();
}
}
static void Main(string[] args)
{
Console.Clear();
Console.Write("Размер массивов до {0}, n =", nmax);
do
{
n = sbyte.Parse(Console.ReadLine());
}
while (n > nmax);
double[] a,b;
a = new double[n];
b = new double[n];
Massiv(ref a, 'A');
Zamena(ref a, 'A');
Massiv(ref b, 'B');
Zamena(ref b, 'B');
Console.ReadLine();
}
}