Преобразовать код Pascal в C++ [требует правки]

355
16 мая 2017, 04:59

Помогите преобразовать код Pascal в C++.

const nmax=750;
var a:array[1..nmax,1..nmax]of integer;
    m,n,i,j,k,max,jmax,imax,min,imin,jmin,res:integer;
    f:text;
begin
assign(f,'input.txt');
reset(f);
read(f,n,m);
for i:=1 to n do
for j:=1 to m do
read(f,a[i,j]);
close(f);
res:=0;
for i:=1 to n do
 begin
  min:=a[i,1];
  jmin:=1;
  for j:=1 to m do
  if a[i,j]<min then
   begin
    min:=a[i,j];
    jmin:=j;
   end;
  max:=a[1,jmin];
  imax:=1;
  for k:=1 to n do
  if a[k,jmin]>max then
   begin
    max:=a[k,jmin];
    imax:=i;
   end;
  if min=max then inc(res);
 end;
assign(f,'output.txt');
rewrite(f);
write(f,res);
close(f);
end.
Answer 1

можно попробовать программку p2c, вот что получается:

конечно руками надо будет поправить

/* Output from p2c 2.00.Oct.15, the Pascal-to-C translator */
/* From input file "a.pas" */

#include <p2c/p2c.h>

#define nmax            750

main(argc, argv)
int argc;
Char *argv[];
{
  long a[nmax][nmax];
  long m, n, i, j, k, max, jmax, imax, min, imin, jmin;
  long res = 0;
  FILE *f = NULL;
  long FORLIM, FORLIM1;
/* p2c: a.pas, line 6: Warning:
 * Don't know how to ASSIGN to a non-explicit file variable [207] */
  PASCAL_MAIN(argc, argv);
  assign(f, "input.txt");
  rewind(f);
  fscanf(f, "%ld%ld", &n, &m);
  FORLIM = n;
  for (i = 1; i <= FORLIM; i++) {
    FORLIM1 = m;
    for (j = 1; j <= FORLIM1; j++)
      fscanf(f, "%ld", &a[i-1][j-1]);
  }
  if (f != NULL)
    fclose(f);
  f = NULL;
  FORLIM = n;
  for (i = 1; i <= FORLIM; i++) {
    min = a[i-1][0];
    jmin = 1;
    FORLIM1 = m;
    for (j = 1; j <= FORLIM1; j++) {
      if (a[i-1][j-1] < min) {
    min = a[i-1][j-1];
    jmin = j;
      }
    }
    max = a[0][jmin-1];
    imax = 1;
    FORLIM1 = n;
    for (k = 1; k <= FORLIM1; k++) {
      if (a[k-1][jmin-1] > max) {
    max = a[k-1][jmin-1];
    imax = i;
      }
    }
    if (min == max)
      res++;
  }
/* p2c: a.pas, line 34: Warning:
 * Don't know how to ASSIGN to a non-explicit file variable [207] */
  assign(f, "output.txt");
/* p2c: a.pas, line 35: Note: REWRITE does not specify a name [181] */
  if (f != NULL)
    rewind(f);
  else
    f = tmpfile();
  if (f == NULL)
    _EscIO(FileNotFound);
  fprintf(f, "%12ld", res);
  fclose(f);
  f = NULL;
  exit(EXIT_SUCCESS);
}
/* End. */
READ ALSO
Потоки, WaitForMultipleObject

Потоки, WaitForMultipleObject

Здравствуйте, использование WaitForMultipleObject(

277
Можно ли переместить консоль вывода с++ кода во внутреннее поле vscode?

Можно ли переместить консоль вывода с++ кода во внутреннее поле vscode?

По умолчанию при запуске с++ кода открывается внешняя консольЯ же хочу видеть вывод моей программы в качестве одной из вкладок в нижнем поле...

449
Не возвращается нужный return из dll

Не возвращается нужный return из dll

Пытаюсь из dll вернуть значение int в MetaTrader4

308
Жизненный цикл и выделение памяти в JS

Жизненный цикл и выделение памяти в JS

В объектно ориентированных языках по типу Java/C# память при создании выделяется: для примитивов(в stack), для объектов(в heap)Соответственно жизненный...

345