Перевести код из паскаля в с++

Ответить
Кирыч_йоЖж
Сообщения: 2
Зарегистрирован: 27 май 2013, 16:21

28 май 2013, 15:38

Код: Выделить всё

ses CRT;
const
 n=10;
type
 Vector=array [1..n] of integer;
var
 mas:Vector;
 m,q:Byte;


procedure vivod(var A:Vector);
var i:integer;
begin
 writeln('Initial array:');
 for i:=1 to n do
  write(A[i]:5);
 writeln;
end;

procedure vvod_ruchnoi(var A:Vector);
var i:integer;
begin
 for i:=1 to n do
 begin
  write('A[', i, ']= ');
  readln(a[i]);
 end;
 writeln;
 vivod(A);
end;

procedure vvod_random(var A:Vector);
var i:integer;
begin
 Randomize;
 for i:=1 to n do
  A[i]:=-10+Random(21);
 vivod(A);
end;


procedure zadacha1(var A:Vector);
var
 i,k: integer;
 sum: real;
begin
 vivod(A);
 i:=0;
 k:=0;
 Sum:=0;
 repeat
  i:=i+1;
  if A[i]<0 then
   begin
    Sum:=Sum+A[i];
    k:=k+1;
   end;
 until (A[i]>0) or (i=n);
 if k>0 then
  Writeln('Arithmetic mean is ',Sum/k:0:3)
 else
  Writeln('No such elements!');
end;

procedure zadacha2(var A:Vector);
var
 B,C: Vector;
 i,Imin,Imax,Min,Max,n1,n2: integer;
begin
 vivod(A);
 B:=A;
 Max:=B[1];
 for i:=2 to n do
  if B[i]>Max then Max:=B[i];
 i:=0;
 repeat
  i:=i+1;
 until B[i]=Max;
 Imax:=i;
 If Imax=n then
  begin
   Writeln('First maximal element is the last one!');
   n1:=n;
  end
 else
 If Imax=n-1 then
  n1:=n-1
 else
  begin
   for i:=Imax+2 to n do B[i-1]:=B[i];
   n1:=n-1;
  end;
 C:=B;
 Min:=C[1];
 for i:=2 to n1 do
  if C[i]<Min then Min:=C[i];
 i:=0;
 repeat
  i:=i+1;
 until C[i]=Min;
 Imin:=i;
 If Imin=n1 then
  begin
   Writeln('First minimal element is the last one!');
   n2:=n1;
  end
 else
 If Imin=n1-1 then
  n2:=n1-1
 else
  begin
   for i:=Imin+2 to n1 do C[i-1]:=C[i];
   n2:=n1-1;
  end;
 Writeln('New array:');
 For i:=1 to n2 do write(C[i]:5);
 writeln;
end;

procedure zadacha3(var A:Vector);
var
 i,Izero:integer;
 B:Array[1..n+2] of integer;
begin
 vivod(A);
 for i:=1 to n do B[i]:=A[i];
 i:=n+1;
 repeat
  i:=i-1;
 until (A[i]=0) or (i=1);
 if (i=1) and (A[i]<>0) then
  writeln('No zero elements!')
 else
  begin
   Izero:=i;
   if Izero=n then
    begin
     B[n+1]:=0;
     B[n+2]:=0;
    end
   else
    begin
     for i:=n downto Izero+1 do B[i+2]:=A[i];
     B[Izero+1]:=0;
     B[Izero+2]:=0;
    end;
   Writeln('New array:');
   for i:=1 to n+2 do write(B[i]:5);
  end;
 writeln;
end;

procedure zadacha4(var A:Vector);
var
 i: integer;
 p: boolean;
begin
 vivod(a);
 p:=true;
 for i:=1 to n-1 do
  if a[i]>a[i+1] then p:=false;
 Writeln(p);
end;

Begin
 ClrScr;
 Repeat
  WriteLn;
  repeat
   WriteLn('Elements entering metod:');
   WriteLn('   1 - console');
   WriteLn('   2 - random');
   WriteLn('   3 - exit');
   Readln(m);
  until (m>0) and (m<4);
  if m<3 then
   begin
    if m=1 then vvod_ruchnoi(mas);
    if m=2 then vvod_random(mas);
    repeat
     Writeln;
     WriteLn('Chooze the task:');
     WriteLn('  1 - Arithmetic mean');
     WriteLn('  2 - Excluding of elements');
     WriteLn('  3 - Inserting zeroes');
     WriteLn('  4 - Test of ordering');
     WriteLn('  5 - Exit');
     Readln(q);
     if (q=0) or (q>5) then q:=5;
     Case q of
       1: zadacha1(mas);
       2: zadacha2(mas);
       3: zadacha3(mas);
       4: zadacha4(mas);
     End;
    until q=5;
   end;
 Until m=3;
End.
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

28 май 2013, 19:59

Ни здрасте, ни до свидания, ни пожалуйста. Кошмар. Перенёс в "Решите мне задачку".
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить