Перевести из паскаля в СИ - C (СИ) (74138)

Узнай цену своей работы

Формулировка задачи:

Program LAB2;
Var
    arrp: array[1..5050] of integer;   { Сжатая таблица }
    XM : integer; { Максимальные индексы в таблице }
{==== Функция перевычисления индексов ====}
{ y,x - индексы в 2-мерном массиве. Ф-ция возвращает индекс в 1-мерном массиве }
Function NewIndex(y, x : integer) : integer;
  var i, d: integer;
  begin
  d:=0;
  for i:=1 to y-1 do d:=d+XM-i+1;
  NewIndex:=d+x-y+1;
  end;
 
{==== Функция записи в сжатое представление массива ====}
{ y, x - индексы в 2-мерном массиве, value - записываемое значение. 
  Функция возвращает записываемое значение или 0 - если (x,y) 
  задают индексы элемента, нулевого по определению }
Function PutTab(y,x,value : integer) : integer;
  begin
  if x < y then PutTab:=0
  else begin
    arrp[NewIndex(y,x)]:=value;
    PutTab:=value;
    end;
  end;
 
{==== Функция выборки из сжатого представления массива ====}
{ y, x - индексы в 2-мерном массиве. Функция возвращает выбранное значение }
Function GetTab(y,x: integer) : integer;
  begin
  if x < y then GetTab:=0
  else GetTab:=arrp[NewIndex(y,x)];
  end;
 
{============= Главная программа ===================}
Var
  x, y : integer;  { Индексы в 2-мерном массиве }
  k, h: integer;
  begin
  {===== Проверка формирования массива ======}
  XM:=10;
  { Запись элементов в 1-мерный массив }
  k:=1;
  for y:=1 to XM do
    for x:=1 to XM do begin
      h:=PutTab(y,x,k); k:=k+1;
      end;
  { Распечатка матрицы }
  writeln('===== Матрица =====');
  for y:=1 to XM do begin
    for x:=1 to XM do write(GetTab(y,x):3);
    writeln;
    end;
  { Распечатка внутреннего представления матрицы }
  writeln('===== Матрица (внутр.представление) =====');
  for y:=1 to 55 do write(arrp[y]:4);
  writeln; writeln;
end.

Решение задачи: «Перевести из паскаля в СИ»

textual
Листинг программы
#include <stdio.h>
 
#define N 5050
 
typedef int value;
 
value arr[N];
int columns;
 
int
newindex(int i, int j)
{
    return i * columns + j;
}
 
void
puttab(int i, int j, value v)
{
    arr[newindex(i, j)] = v;
}
 
value
gettab(int i, int j)
{
    return arr[newindex(i, j)];
}
 
int
main(void)
{
    int i, j, len;
    value v;
 
    columns = 10;
    v = 0;
    for (i = 0; i < columns; i++)
        for (j = 0; j < columns; j++)
            puttab(i, j, ++v);
 
    printf("==== Table ====\n");
    for (i = 0; i < columns; i++) {
        for (j = 0; j < columns; j++)
            printf("%3d ", gettab(i, j));
        printf("\n");
    }
 
    len = columns * columns;
    printf("==== Array ====\n");
    for (i = 0; i < len; i++)
        printf("%4d ", arr[i]);
 
    printf("\n\n");
    return 0;
}

Объяснение кода листинга программы

  1. Включаем заголовочный файл для использования функций ввода-вывода.
  2. Объявляем константу N, которая равна 5050.
  3. Создаем тип данных value и массив arr типа value размером N.
  4. Объявляем переменную columns, которая будет использоваться для хранения количества столбцов в таблице.
  5. Определяем функцию newindex, которая принимает два аргумента типа int (i и j) и возвращает индекс элемента массива, который находится в строке i и столбце j.
  6. Определяем функцию puttab, которая принимает три аргумента типа int (i, j и v) и записывает значение v в элемент массива с индексом, вычисленным функцией newindex.
  7. Определяем функцию gettab, которая принимает два аргумента типа int (i и j) и возвращает значение элемента массива с соответствующим индексом.
  8. В функции main() объявляем три переменные типа int (i, j и len) и одну переменную типа value (v).
  9. Инициализируем переменную columns значением 10.
  10. Инициализируем переменную v значением 0.
  11. Используем два вложенных цикла for для заполнения массива arr значениями от 1 до 100.
  12. Выводим таблицу на экран с помощью вложенных циклов for и функций puttab и gettab.
  13. Выводим значения массива arr на экран с помощью цикла for и функции printf.
  14. Выводим символ новой строки \n\n` для перехода на новую строку.
  15. Возвращаем 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5