Перевод кода с Pascal на СИ - C (СИ)
Формулировка задачи:
Ребята очень надо перевести программу с Pascal на СИ.
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.
Решение задачи: «Перевод кода с Pascal на СИ»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <locale.h> int arrp[5050];// ÑæГ*ГІГ*Гї ГІГ*áëèöГ* int XM; // ГЊГ*ГЄГ±ГЁГ¬Г*ëüГ*ûå ГЁГ*äåêñû Гў ГІГ*áëèöå //==== ÔóГ*êöèÿ ïåðåâû÷èñëåГ*ГЁГї ГЁГ*äåêñîâ ==== // y,x - ГЁГ*äåêñû Гў 2-ìåðГ*îì Г¬Г*Г±Г±ГЁГўГҐ. Г”-öèÿ âîçâðГ*Г№Г*ГҐГІ ГЁГ*äåêñ Гў 1-ìåðГ*îì Г¬Г*Г±Г±ГЁГўГҐ int NewIndex(int y, int x) { int i, d; for(d=i=0;i<y-1;i++) d+=XM-i; return d+x-y+1; } /*=== ÔóГ*êöèÿ Г§Г*ГЇГЁГ±ГЁ Гў Г±Г¦Г*òîå ïðåäñòГ*âëåГ*ГЁГҐ Г¬Г*Г±Г±ГЁГўГ* ==== y, x - ГЁГ*äåêñû Гў 2-ìåðГ*îì Г¬Г*Г±Г±ГЁГўГҐ, value - Г§Г*ïèñûâГ*åìîå Г§Г*Г*Г·ГҐГ*ГЁГҐ. ÔóГ*êöèÿ âîçâðГ*Г№Г*ГҐГІ Г§Г*ïèñûâГ*åìîå Г§Г*Г*Г·ГҐГ*ГЁГҐ èëè 0 - åñëè (x,y) Г§Г*Г¤Г*ГѕГІ ГЁГ*äåêñû ýëåìåГ*ГІГ*, Г*óëåâîãî ГЇГ® îïðåäåëåГ*ГЁГѕ */ int PutTab(int y,int x,int value) { if(x < y) return 0; arrp[NewIndex(y,x)]=value; return value; } //==== ÔóГ*êöèÿ âûáîðêè ГЁГ§ Г±Г¦Г*òîãî ïðåäñòГ*âëåГ*ГЁГї Г¬Г*Г±Г±ГЁГўГ* ==== // y, x - ГЁГ*äåêñû Гў 2-ìåðГ*îì Г¬Г*Г±Г±ГЁГўГҐ. ÔóГ*êöèÿ âîçâðГ*Г№Г*ГҐГІ âûáðГ*Г*Г*îå Г§Г*Г*Г·ГҐГ*ГЁГҐ int GetTab(int y,int x) { return (x < y)?0:arrp[NewIndex(y,x)]; } //============= ГѓГ«Г*ГўГ*Г*Гї ïðîãðГ*ììГ* ===================} int main(int argc, char *argv[]) { int x, y;// Г€Г*äåêñû Гў 2-ìåðГ*îì Г¬Г*Г±Г±ГЁГўГҐ int k; XM=10; setlocale(LC_ALL,"Russian_russia.1251"); // Г‡Г*ГЇГЁГ±Гј ýëåìåГ*òîâ Гў 1-ìåðГ*ûé Г¬Г*Г±Г±ГЁГў for(k=y=0; y<XM; y++) for(x=0; x<XM; x++, k++) PutTab(y,x,k); // ГђГ*Г±ГЇГҐГ·Г*ГІГЄГ* Г¬Г*òðèöû printf("===== ГЊГ*òðèöГ* =====\n"); for(y=0; y<XM; y++, printf("\n")) for(x=0; x<XM; x++) printf("%3d",GetTab(y,x)); // ГђГ*Г±ГЇГҐГ·Г*ГІГЄГ* ГўГ*óòðåГ*Г*ГҐГЈГ® ïðåäñòГ*âëåГ*ГЁГї Г¬Г*òðèöû printf("===== ГЊГ*òðèöГ* (ГўГ*ГіГІГ°.ïðåäñòГ*âëåГ*ГЁГҐ) =====\n"); for(y=0; y<55; y++) printf("%4d",arrp[y]); printf("\n\n"); getch(); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д