Перевод кода с Pascal на СИ - C (СИ)

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

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

Ребята очень надо перевести программу с Pascal на СИ.
Листинг программы
  1. Program LAB2;
  2. Var
  3. arrp: array[1..5050] of integer; { Сжатая таблица }
  4. XM : integer; { Максимальные индексы в таблице }
  5. {==== Функция перевычисления индексов ====}
  6. { y,x - индексы в 2-мерном массиве. Ф-ция возвращает индекс в 1-мерном массиве }
  7. Function NewIndex(y, x : integer) : integer;
  8. var i, d: integer;
  9. begin
  10. d:=0;
  11. for i:=1 to y-1 do d:=d+XM-i+1;
  12. NewIndex:=d+x-y+1;
  13. end;
  14. {==== Функция записи в сжатое представление массива ====}
  15. { y, x - индексы в 2-мерном массиве, value - записываемое значение.
  16. Функция возвращает записываемое значение или 0 - если (x,y)
  17. задают индексы элемента, нулевого по определению }
  18. Function PutTab(y,x,value : integer) : integer;
  19. begin
  20. if x < y then PutTab:=0
  21. else begin
  22. arrp[NewIndex(y,x)]:=value;
  23. PutTab:=value;
  24. end;
  25. end;
  26. {==== Функция выборки из сжатого представления массива ====}
  27. { y, x - индексы в 2-мерном массиве. Функция возвращает выбранное значение }
  28. Function GetTab(y,x: integer) : integer;
  29. begin
  30. if x < y then GetTab:=0
  31. else GetTab:=arrp[NewIndex(y,x)];
  32. end;
  33. {============= Главная программа ===================}
  34. Var
  35. x, y : integer; { Индексы в 2-мерном массиве }
  36. k, h: integer;
  37. begin
  38. {===== Проверка формирования массива ======}
  39. XM:=10;
  40. { Запись элементов в 1-мерный массив }
  41. k:=1;
  42. for y:=1 to XM do
  43. for x:=1 to XM do begin
  44. h:=PutTab(y,x,k); k:=k+1;
  45. end;
  46. { Распечатка матрицы }
  47. writeln('===== Матрица =====');
  48. for y:=1 to XM do begin
  49. for x:=1 to XM do write(GetTab(y,x):3);
  50. writeln;
  51. end;
  52. { Распечатка внутреннего представления матрицы }
  53. writeln('===== Матрица (внутр.представление) =====');
  54. for y:=1 to 55 do write(arrp[y]:4);
  55. writeln; writeln;
  56. end.

Решение задачи: «Перевод кода с Pascal на СИ»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <locale.h>
  5.  
  6. int arrp[5050];// ÑæГ*ГІГ*Гї ГІГ*áëèöГ*
  7. int XM; // ГЊГ*ГЄГ±ГЁГ¬Г*ëüГ*ûå ГЁГ*äåêñû Гў ГІГ*áëèöå
  8. //==== ÔóГ*êöèÿ ïåðåâû÷èñëåГ*ГЁГї ГЁГ*äåêñîâ ====
  9. // y,x - ГЁГ*äåêñû Гў 2-ìåðГ*îì Г¬Г*Г±Г±ГЁГўГҐ. Г”-öèÿ âîçâðГ*Г№Г*ГҐГІ ГЁГ*äåêñ Гў 1-ìåðГ*îì Г¬Г*Г±Г±ГЁГўГҐ
  10. int NewIndex(int y, int x)
  11. {
  12.   int i, d;
  13.   for(d=i=0;i<y-1;i++) d+=XM-i;
  14.   return d+x-y+1;
  15. }
  16. /*=== ÔóГ*êöèÿ Г§Г*ГЇГЁГ±ГЁ Гў Г±Г¦Г*òîå ïðåäñòГ*âëåГ*ГЁГҐ Г¬Г*Г±Г±ГЁГўГ* ====
  17.   y, x - ГЁГ*äåêñû Гў 2-ìåðГ*îì Г¬Г*Г±Г±ГЁГўГҐ, value - Г§Г*ïèñûâГ*åìîå Г§Г*Г*Г·ГҐГ*ГЁГҐ.
  18.   ÔóГ*êöèÿ âîçâðГ*Г№Г*ГҐГІ Г§Г*ïèñûâГ*åìîå Г§Г*Г*Г·ГҐГ*ГЁГҐ èëè 0 - åñëè (x,y)
  19.   Г§Г*Г¤Г*ГѕГІ ГЁГ*äåêñû ýëåìåГ*ГІГ*, Г*óëåâîãî ГЇГ® îïðåäåëåГ*ГЁГѕ */
  20. int PutTab(int y,int x,int value)
  21. {
  22.   if(x < y) return 0;
  23.   arrp[NewIndex(y,x)]=value;
  24.   return value;
  25. }
  26. //==== ÔóГ*êöèÿ âûáîðêè ГЁГ§ Г±Г¦Г*òîãî ïðåäñòГ*âëåГ*ГЁГї Г¬Г*Г±Г±ГЁГўГ* ====
  27. // y, x - ГЁГ*äåêñû Гў 2-ìåðГ*îì Г¬Г*Г±Г±ГЁГўГҐ. ÔóГ*êöèÿ âîçâðГ*Г№Г*ГҐГІ âûáðГ*Г*Г*îå Г§Г*Г*Г·ГҐГ*ГЁГҐ
  28. int GetTab(int y,int x)
  29. {
  30.   return (x < y)?0:arrp[NewIndex(y,x)];
  31. }
  32. //============= ГѓГ«Г*ГўГ*Г*Гї ïðîãðГ*ììГ* ===================}
  33. int main(int argc, char *argv[])
  34. {
  35.   int x, y;// Г€Г*äåêñû Гў 2-ìåðГ*îì Г¬Г*Г±Г±ГЁГўГҐ
  36.   int k;
  37.   XM=10;
  38.   setlocale(LC_ALL,"Russian_russia.1251");
  39.   // Г‡Г*ГЇГЁГ±Гј ýëåìåГ*òîâ Гў 1-ìåðГ*ûé Г¬Г*Г±Г±ГЁГў
  40.   for(k=y=0; y<XM; y++)
  41.     for(x=0; x<XM; x++, k++) PutTab(y,x,k);
  42.   // ГђГ*Г±ГЇГҐГ·Г*ГІГЄГ* Г¬Г*òðèöû
  43.   printf("===== ГЊГ*òðèöГ* =====\n");
  44.   for(y=0; y<XM; y++, printf("\n"))
  45.     for(x=0; x<XM; x++) printf("%3d",GetTab(y,x));
  46.   // ГђГ*Г±ГЇГҐГ·Г*ГІГЄГ* ГўГ*óòðåГ*Г*ГҐГЈГ® ïðåäñòГ*âëåГ*ГЁГї Г¬Г*òðèöû
  47.   printf("===== ГЊГ*òðèöГ* (ГўГ*ГіГІГ°.ïðåäñòГ*âëåГ*ГЁГҐ) =====\n");
  48.   for(y=0; y<55; y++) printf("%4d",arrp[y]);
  49.   printf("\n\n");
  50.   getch();
  51.   return 0;
  52. }

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


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

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

9   голосов , оценка 4.444 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут