Giter Club home page Giter Club logo

p2c2's Introduction

p2c2: Pascal to C converter. Coursework for University.

Example dump (run make then execute test.sh. See also file p2c2stdlib.h):

bison -v -d -o parser.cc parser.y -Wno-other
parser.y: warning: 1 shift/reduce conflict [-Wconflicts-sr]
flex -o lexer.cc lexer.l
g++ -c -o .lexer.o lexer.cc -Wall -Wextra -Wpedantic -g -std=c++0x
g++ -c -o .parser.o parser.cc -Wall -Wextra -Wpedantic -g -std=c++0x
g++ -c -o .main.o main.cc -Wall -Wextra -Wpedantic -g -std=c++0x
g++ -c -o .ast.o ast.cc -Wall -Wextra -Wpedantic -g -std=c++0x
g++ -c -o .utils.o utils.cc -Wall -Wextra -Wpedantic -g -std=c++0x
g++ -c -o .codegen.o codegen.cc -Wall -Wextra -Wpedantic -g -std=c++0x
g++ -o p2c2 .lexer.o .parser.o .main.o .ast.o .utils.o .codegen.o
test/basic/add.pas ==================================================================
{{{
  1 program add;
  2 
  3 type why = real;
  4      whyy = why;
  5 	 whyyy = whyy;
  6 
  7 var num1, num2, sum : integer;
  8     f : whyyy;
  9 
 10 begin
 11   write('input number 1:');
 12   readln(num1);
 13   writeln('input number 2:');
 14   readln(num2);
 15   sum := num1 + num2;
 16   writeln(sum);
 17   writeln(sum:10);
 18   writeln(sum:10:3);
 19   readln;
 20 end.
 21 
}}}
/* Program "add" */
#include "p2c2stdlib.h"

int num1, num2, sum;
float f;

int main()
{
  write(1, "input number 1:");
  readln(num1);
  writeln(1, "input number 2:");
  readln(num2);
  sum = num1 + num2;
  writeln(1, sum);
  writeln(1, width_format(sum, 10));
  writeln(1, full_format(sum, 10, 3));
  readln();
  return 0;
}

test/basic/bubble.pas ==================================================================
{{{
  1 (*****************************************************************************
  2  * A simple bubble sort program.  Reads integers, one per line, and prints   *
  3  * them out in sorted order.  Blows up if there are more than 49.            *
  4  *****************************************************************************)
  5 PROGRAM Sort(input, output);
  6     CONST
  7         (* Max array size. *)
  8         MaxElts = 50;
  9     TYPE
 10         (* Type of the element array. *)
 11         IntArrType = ARRAY [1..MaxElts] OF Integer;
 12 
 13     VAR
 14         (* Indexes, exchange temp, array size. *)
 15         i, j, tmp, size: integer;
 16 
 17         (* Array of ints *)
 18         arr: IntArrType;
 19 
 20     (* Read in the integers. *)
 21     PROCEDURE ReadArr(VAR size: Integer; VAR a: IntArrType);
 22         BEGIN
 23             size := 1;
 24             WHILE NOT eof DO BEGIN
 25                 readln(a[size]);
 26                 IF NOT eof THEN
 27                     size := size + 1
 28             END
 29         END;
 30 
 31     BEGIN
 32         (* Read *)
 33         ReadArr(size, arr);
 34 
 35         (* Sort using bubble sort. *)
 36         FOR i := size - 1 DOWNTO 1 DO
 37             FOR j := 1 TO i DO
 38                 IF arr[j] > arr[j + 1] THEN BEGIN
 39                     tmp := arr[j];
 40                     arr[j] := arr[j + 1];
 41                     arr[j + 1] := tmp;
 42                 END;
 43 
 44         (* Print. *)
 45         FOR i := 1 TO size DO
 46             writeln(arr[i])
 47     END.
}}}
/* Program "Sort" */
#include "p2c2stdlib.h"

const int MaxElts = 50;

int i, j, tmp, size;
array<1,MaxElts,int> arr;

void ReadArr(int &size, array<1,MaxElts,int> &a)
{
  size = 1;
  while (!(eof))
  {
    readln(a[size]);
    if (!(eof))
      size = size + 1;
  }
}
int main()
{
  ReadArr(size, arr);
  for (i = size - 1; i >= 1; i--)
    for (j = 1; j <= i; j++)
      if (arr[j] > arr[j + 1])
      {
        tmp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = tmp;
      }
  for (i = 1; i <= size; i++)
    writeln(1, arr[i]);
  return 0;
}

test/basic/hw.pas ==================================================================
{{{
  1 program hw;
  2 begin
  3   write('Hello, World!');
  4   readln;
  5 end.
  6 
}}}
/* Program "hw" */
#include "p2c2stdlib.h"

int main()
{
  write(1, "Hello, World!");
  readln();
  return 0;
}

test/basic/input.pas ==================================================================
{{{
  1 program ye(wyt, what);
  2 label 420, 2517;
  3 const im_givin_up = -4; on_trying = +20; to_sell_you_things = 'that you aint buying';
  4       coat = 'steel'; lmax = 20;
  5 type
  6   natural = 0..maxint;
  7   count = integer;
  8   range = integer;
  9   angle = 0..360;
 10   colour = (red, yellow, green, blue);
 11   sex = (male, female);
 12   year = 1900..1999;
 13   asdf = -10..+10;
 14   wdydt = '0'..'9';
 15   yyk = red..green;
 16   shape = (triangle, rectangle, circle);
 17   punchedcard = array [1..80] of char;
 18   wake_me_up_inside = array [(the, ride, never, ends)] of (how, can, you, see, into, my, eyes);
 19   win = array [Boolean] of colour;
 20   size = 1..20;
 21   send = array [Boolean] of array [1..10] of array [size] of real;
 22   help = packed array [Boolean] of array [1..10, size] of real;
 23   charsequence = string;
 24   polar = record
 25             r : real;
 26             theta: angle;
 27             year: 0..2000;
 28             name, firstname: string;
 29 			(*
 30             case shape of
 31               triangle :
 32                 (side : real ; inclination, angle1, angle2 : angle);
 33               rectangle :
 34                 (side1, side2 : real; sadfj : angle);
 35               circle :
 36                 (diameter : real);
 37 				*)
 38           end;
 39   indextype = 1..lmax;
 40   masti = set of (club, diamond, heart, spade);
 41   vector = array [indextype] of real;
 42   person = ^ persondetails;
 43   persondetails = record
 44                     name, firstname: charsequence;
 45                     age : natural;
 46                     father, child, sibling : person;
 47 					(*
 48                     case married : Boolean of
 49                       true : (Gal : string);
 50                       false : ( );
 51 					  *)
 52                   end;
 53   whyyy = 1..lmax;
 54   whyy = whyyy;
 55   why = array [whyy] of real;
 56 FileOfInteger = file of integer;
 57 
 58 var
 59 	(*
 60 	wat : natural;
 61 	test : count;
 62 	yuo : angle;
 63 	col : colour;
 64 	y : year;
 65 	s : asdf;
 66 	hi : wdydt;
 67 	waddup : yyk;
 68 	sh : shape;
 69 	p : punchedcard;
 70 	wake_me_up : wake_me_up_inside;
 71 	heh : win;
 72 	sz : size;
 73 	psl : send;
 74 	pls : help;
 75 	what : charsequence;
 76 	ohshit : polar;
 77 	idx : indextype;
 78 	dude : masti;
 79 	depedns : vector;
 80 	*)
 81 	gyu : person;
 82 	// bio : persondetails;
 83 	// f : fileofinteger;
 84 
 85 begin
 86 	writeln('asdf');
 87 	readln;
 88 end.
 89 
}}}
/* Program "ye" */
#include "p2c2stdlib.h"

const int im_givin_up = -4, on_trying = +20, lmax = 20;
const char *to_sell_you_things = "that you aint buying", *coat = "steel";

struct rec1 { string name, firstname; subrange<0,maxint> age; rec1 *father, *child, *sibling; } *gyu;

int main()
{
  writeln(1, "asdf");
  readln();
  return 0;
}

test/basic/quicksort.pas ==================================================================
{{{
  1 {*****************************************************************************
  2  * A Pascal quicksort.
  3  *****************************************************************************}
  4 
  5 
  6 PROGRAM Sort(input, output);
  7     CONST
  8         { Max array size. }
  9         MaxElts = 50;
 10     TYPE 
 11         { Type of the element array. }
 12         IntArrType = ARRAY [1..MaxElts] OF Integer;
 13 
 14     VAR
 15 
 16         { Indexes, exchange temp, array size. }
 17 
 18         i, j, tmp, size: integer;
 19 
 20         { Array of ints }
 21         arr: IntArrType;
 22 
 23     { Read in the integers. }
 24     PROCEDURE ReadArr(VAR size: Integer; VAR a: IntArrType);
 25         BEGIN
 26             size := 1;
 27             WHILE NOT eof DO BEGIN
 28                 readln(a[size]);
 29                 IF NOT eof THEN 
 30                     size := size + 1
 31             END
 32         END;
 33 
 34     { Use quicksort to sort the array of integers. }
 35     PROCEDURE Quicksort(size: Integer; VAR arr: IntArrType);
 36         { This does the actual work of the quicksort.  It takes the
 37           parameters which define the range of the array to work on,
 38           and references the array as a global. }
 39         PROCEDURE QuicksortRecur(start, stop: integer);
 40             VAR
 41                 m: integer;
 42 
 43                 { The location separating the high and low parts. }
 44                 splitpt: integer;
 45 
 46             { The quicksort split algorithm.  Takes the range, and
 47               returns the split point. }
 48             FUNCTION Split(start, stop: integer): integer;
 49                 VAR
 50                     left, right: integer;       { Scan pointers. }
 51                     pivot: integer;             { Pivot value. }
 52 
 53                 { Interchange the parameters. }
 54                 PROCEDURE swap(VAR a, b: integer);
 55                     VAR
 56                         t: integer;
 57                     BEGIN
 58                         t := a;
 59                         a := b;
 60                         b := t
 61                     END;
 62 
 63                 BEGIN { Split }
 64                     { Set up the pointers for the hight and low sections, and
 65                       get the pivot value. }
 66                     pivot := arr[start];
 67                     left := start + 1;
 68                     right := stop;
 69 
 70                     { Look for pairs out of place and swap 'em. }
 71                     WHILE left <= right DO BEGIN
 72                         WHILE (left <= stop) AND (arr[left] < pivot) DO
 73                             left := left + 1;
 74                         WHILE (right > start) AND (arr[right] >= pivot) DO
 75                             right := right - 1;
 76                         IF left < right THEN 
 77                             swap(arr[left], arr[right]);
 78                     END;
 79 
 80                     { Put the pivot between the halves. }
 81                     swap(arr[start], arr[right]);
 82 
 83                     { This is how you return function values in pascal.
 84                       Yeccch. }
 85                     Split := right
 86                 END;
 87 
 88             BEGIN { QuicksortRecur }
 89                 { If there's anything to do... }
 90                 IF start < stop THEN BEGIN
 91                     splitpt := Split(start, stop);
 92                     QuicksortRecur(start, splitpt-1);
 93                     QuicksortRecur(splitpt+1, stop);
 94                 END
 95             END;
 96 
 97         BEGIN { Quicksort }
 98             QuicksortRecur(1, size)
 99         END;
100 
101     BEGIN
102         { Read }
103         ReadArr(size, arr);
104 
105         { Sort the contents. }
106         Quicksort(size, arr);
107 
108         { Print. }
109         FOR i := 1 TO size DO
110             writeln(arr[i])
111     END.
112 
}}}
Function definitions inside functions are not supported in C
test/basic/records.pas ==================================================================
{{{
  1 program records_test;
  2 
  3 type date =
  4 record
  5 	year : 0..2000;
  6 	month : 1..12;
  7 	day : 1..31
  8 end;
  9 
 10 person =
 11 record
 12 	name, firstname : string;
 13 	age : 0..99;
 14 	case married : Boolean of
 15 		true : (Spousesname : string);
 16 		false : ( )
 17 end;
 18 
 19 what =
 20 record
 21 	x, y: real;
 22 	area: real;
 23 	case shape of
 24 		triangle: (side: real ; inclination, angle1, angle2: angle);
 25 		rectangle: (side1, side2: real ; skew: angle);
 26 		circle: (diameter: real);
 27 end;
 28 
 29 begin
 30 end.
 31 
}}}
/* Program "records_test" */
#include "p2c2stdlib.h"

int main()
{
  return 0;
}

test/basic/tri.pas ==================================================================
{{{
  1 program TRI-HEAP;
  2 
  3    const N = 10;   
  4    var TABLE: array[1..N] of INTEGER;
  5        TEMP: INTEGER;
  6 
  7    procedure AJUSTE(var I,N: INTEGER);
  8       var TEMP,J: INTEGER;
  9           TERMINE: BOOLEAN;
 10    begin
 11       TEMP :=    TABLE[I];
 12       J    :=    2*I;
 13       TERMINE := FALSE;
 14  
 15       while (J<=N) and not TERMINE do
 16       begin
 17          if (J<N) and (TABLE[J]<TABLE[J+1]) then J := J+1;
 18          if TEMP>TABLE[J] then
 19 	 TERMINE := TRUE
 20          else
 21 	 begin
 22             TABLE[J/2] := TABLE[J];
 23             J := 2*J;
 24 	 end;
 25       end;
 26 
 27       TABLE[J/2] := TEMP;
 28 
 29    end;
 30 
 31    procedure CONSTRUIRE-HEAP;
 32    begin
 33       for I := N/2 downto 1 do AJUSTE(I,N);
 34    end;
 35 
 36 begin
 37 
 38    for I := 1 to N do READ(TABLE[I]);
 39 
 40    CONSTRUIRE-HEAP;
 41 
 42    for I := N-1 downto 1 do
 43    begin
 44       TEMP := TABLE[I+1];
 45       TABLE[I+1] := TABLE[1];
 46       TABLE[1] := TEMP;
 47       AJUSTE(1,I);
 48    end;
 49 
 50    for I := 1 to N do WRITE(TABLE[I]);
 51 
 52 end.
}}}
/* Program "TRI-HEAP" */
#include "p2c2stdlib.h"

const int N = 10;

array<1,N,int> TABLE;
int TEMP;

void AJUSTE(int &I, int &N)
{
  int TEMP, J;
  bool TERMINE;

  TEMP = TABLE[I];
  J = 2 * I;
  TERMINE = FALSE;
  while ((J <= N) && !(TERMINE))
  {
    if ((J < N) && (TABLE[J] < TABLE[J + 1]))
      J = J + 1;
    if (TEMP > TABLE[J])
      TERMINE = TRUE;
    else
    {
      TABLE[J / 2] = TABLE[J];
      J = 2 * J;
    }
  }
  TABLE[J / 2] = TEMP;
}
void CONSTRUIRE-HEAP()
{
  for (I = N / 2; I >= 1; I--)
    AJUSTE(I, N);
}
int main()
{
  for (I = 1; I <= N; I++)
    READ(TABLE[I]);
  CONSTRUIRE-HEAP();
  for (I = N-1; I >= 1; I--)
  {
    TEMP = TABLE[I + 1];
    TABLE[I + 1] = TABLE[1];
    TABLE[1] = TEMP;
    AJUSTE(1, I);
  }
  for (I = 1; I <= N; I++)
    WRITE(TABLE[I]);
  return 0;
}

test/basic/what.pas ==================================================================
{{{
  1 program ples;
  2 
  3 var a : (red, gren, ble);
  4     b : (red, gren, ble);
  5 
  6 begin
  7 
  8 end.
  9 
}}}
/* Program "ples" */
#include "p2c2stdlib.h"

enum en1 { red = 0; ; gren; ble } a;
en1 b;

int main()
{
  return 0;
}

test/labs/lab1.pas ==================================================================
{{{
  1 program lab1;
  2 const lmax = 20;
  3 var B, D, A: array[1..lmax] of real;
  4     i, k, n, nmax: integer;
  5     maximum, z, x, z1, z2, x1, y1: real;
  6 
  7 begin
  8   writeln('Ëàáîðàòîðíàÿ ðàáîòà ¹1');
  9   writeln('Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, çàäàíèÿ: 14, 2, 4');
 10   
 11   { ### Çàäàíèå 1 }
 12   writeln('Çàäàíèå 1');
 13   repeat
 14     write('Ââåäèòå íàòóðàëüíîå ÷èñëî k îò 1 äî ', lmax);
 15     write(', äëèíó ìàññèâà B: ');
 16     read(k);
 17   until (k > 0) and (k < lmax);
 18   
 19   writeln('Ââåäèòå ìàññèâ B èç ', k, ' ýëåìåíòîâ:');
 20   for i := 1 to k do
 21     read(B[i]);
 22 
 23   repeat
 24     write('Ââåäèòå íåïîëîæèòåëüíûå ÷èñëà x è z, ãäå x <= z: ');
 25     read(x, z);
 26   until (x <= 0) and (z <= 0) and (z >= x);
 27   
 28   maximum := 0;
 29   nmax := 0;
 30   for i := 1 to k do
 31     if (abs(B[i]) >= abs(maximum)) and
 32        (-z <= abs(B[i])) and
 33        (abs(B[i]) <= -x) then
 34     begin
 35       maximum := B[i];
 36       nmax := i;
 37     end;
 38     
 39   if nmax = 0 then
 40     writeln('Íåò ìàêñèìóìà.')
 41   else
 42     writeln('Ìàêñèìóì = ', maximum, ', åãî èíäåêñ â ìàññèâå = ', nmax);
 43   
 44   { ### Çàäàíèå 2 }
 45   writeln;
 46   writeln('Çàäàíèå 2');
 47   repeat
 48     write('Ââåäèòå ÷èñëà z1 è z2, ãäå z1 <= z2: ');
 49     read(z1, z2);
 50   until (z1 <= z2);
 51   
 52   n := 0;
 53   for i := 1 to k do
 54     if (z1 <= B[i]) and (B[i] <= z2) then
 55     begin
 56       n := n + 1;
 57       D[n] := B[i];
 58     end;
 59     
 60   if n = 0 then
 61     writeln('Íå óäàëîñü ñîñòàâèòü ìàññèâû D è A.')
 62   else
 63   begin
 64     writeln('Ìàññèâ D èç ', n, ' ýëåìåíòîâ');
 65     for i := 1 to n do
 66       write(D[i]:10:3, ' ');
 67     writeln;
 68     
 69     { ### Çàäàíèå 3 }
 70     writeln;
 71     writeln('Çàäàíèå 3');
 72     repeat
 73       write('Ââåäèòå ÷èñëà x1 è y1, ãäå x1 < y1: ');
 74       read(x1, y1);
 75     until (x1 < y1);
 76     
 77     for i := 1 to n do
 78       if (-y1 < D[i]) and (D[i] < -x1) then
 79         if (D[i] < 0) then begin
 80           A[i] := 0;
 81           write('Ýëåìåíò ìàññèâà A[', i, '] íå îïðåäåë¸í',
 82               ', ïîýòîìó ñ÷èòàåòñÿ íóë¸ì')
 83         end else
 84           A[i] := sqrt(D[i])
 85       else
 86         A[i] := D[i] / 3;
 87         
 88     writeln('Ìàññèâ A èç ', n, ' ýëåìåíòîâ');
 89     for i := 1 to n do
 90       write(A[i]:10:3);
 91     writeln;
 92   end;
 93 end.
}}}
/* Program "lab1" */
#include "p2c2stdlib.h"

const int lmax = 20;

array<1,lmax,float> B, D, A;
int i, k, n, nmax;
float maximum, z, x, z1, z2, x1, y1;

int main()
{
  writeln(1, "Ëàáîðàòîðíàÿ ðàáîòà ¹1");
  writeln(1, "Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, çàäàíèÿ: 14, 2, 4");
  writeln(1, "Çàäàíèå 1");
  do
  {
    write(2, "Ââåäèòå íàòóðàëüíîå ÷èñëî k îò 1 äî ", lmax);
    write(1, ", äëèíó ìàññèâà B: ");
    read(k);
  } while (!((k > 0) && (k < lmax)));
  writeln(3, "Ââåäèòå ìàññèâ B èç ", k, " ýëåìåíòîâ:");
  for (i = 1; i <= k; i++)
    read(B[i]);
  do
  {
    write(1, "Ââåäèòå íåïîëîæèòåëüíûå ÷èñëà x è z, ãäå x <= z: ");
    read(x, z);
  } while (!((x <= 0) && (z <= 0) && (z >= x)));
  maximum = 0;
  nmax = 0;
  for (i = 1; i <= k; i++)
    if ((abs(B[i]) >= abs(maximum)) && (-z <= abs(B[i])) && (abs(B[i]) <= -x))
    {
      maximum = B[i];
      nmax = i;
    }
  if (nmax == 0)
    writeln(1, "Íåò ìàêñèìóìà.");
  else
    writeln(4, "Ìàêñèìóì = ", maximum, ", åãî èíäåêñ â ìàññèâå = ", nmax);
  writeln();
  writeln(1, "Çàäàíèå 2");
  do
  {
    write(1, "Ââåäèòå ÷èñëà z1 è z2, ãäå z1 <= z2: ");
    read(z1, z2);
  } while (!((z1 <= z2)));
  n = 0;
  for (i = 1; i <= k; i++)
    if ((z1 <= B[i]) && (B[i] <= z2))
    {
      n = n + 1;
      D[n] = B[i];
    }
  if (n == 0)
    writeln(1, "Íå óäàëîñü ñîñòàâèòü ìàññèâû D è A.");
  else
  {
    writeln(3, "Ìàññèâ D èç ", n, " ýëåìåíòîâ");
    for (i = 1; i <= n; i++)
      write(2, full_format(D[i], 10, 3), " ");
    writeln();
    writeln();
    writeln(1, "Çàäàíèå 3");
    do
    {
      write(1, "Ââåäèòå ÷èñëà x1 è y1, ãäå x1 < y1: ");
      read(x1, y1);
    } while (!((x1 < y1)));
    for (i = 1; i <= n; i++)
      if ((-y1 < D[i]) && (D[i] < -x1))
        if ((D[i] < 0))
        {
          A[i] = 0;
          write(4, "Ýëåìåíò ìàññèâà A[", i, "] íå îïðåäåë¸í", ", ïîýòîìó ñ÷èòàåòñÿ íóë¸ì");
        }
        else
          A[i] = sqrt(D[i]);
      else
        A[i] = D[i] / 3;
    writeln(3, "Ìàññèâ A èç ", n, " ýëåìåíòîâ");
    for (i = 1; i <= n; i++)
      write(1, full_format(A[i], 10, 3));
    writeln();
  }
  return 0;
}

test/labs/lab2.pas ==================================================================
{{{
  1 program lab2;
  2 const lmax = 20;
  3 var R: array[1..lmax] of real;
  4     i, n, k, f, nmax: integer;
  5     a, x, h, max, avg: real;
  6 
  7 begin
  8   writeln('Ëàáîðàòîðíàÿ ðàáîòà ¹2');
  9   writeln('Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, çàäàíèÿ: 2, 7, 2');
 10   
 11   { Çàäàíèå 1 }
 12   writeln('Çàäàíèå 1');
 13   repeat
 14     write('Ââåäèòå íàòóðàëüíîå ÷èñëî n îò 1 äî ', lmax, ', äëèíó ìàññèâà R: ');
 15     read(n);
 16   until (n > 0) and (n <= lmax);
 17   write('Ââåäèòå ÷èñëà a, x è h: ');
 18   read(a, x, h);
 19   
 20   for i := 1 to n do
 21     R[i] := 1.25*sin(3*a*x - i*h);
 22   
 23   writeln('Ìàññèâ R:');
 24   for i := 1 to n do
 25     write(R[i]:-8:3);
 26   writeln;
 27   
 28   { Çàäàíèå 2 }
 29   f := 0;
 30   for i := n downto 1 do
 31     if R[i] < 0 then
 32       f := i;
 33   if f = 0 then
 34     writeln('Â ìàññèâå îòñóòñòâóþò îòðèöàòåëüíûå ýëåìåíòû.')
 35   else
 36   begin
 37     writeln;
 38     writeln('Çàäàíèå 2');
 39     
 40     k := 0;
 41     for i := 1 to n do
 42       if (i <= f) or (abs(R[i]) < 0.3) then
 43       begin
 44         k := k + 1;
 45         R[k] := R[i]
 46       end;
 47     
 48     writeln('Ìàññèâ R'':');
 49     for i := 1 to k do
 50       write(R[i]:-8:3);
 51     writeln;
 52     if k = n then
 53       writeln('Íåò óäàëåíèé');
 54     
 55     { Çàäàíèå 3 }
 56     writeln;
 57     writeln('Çàäàíèå 3');
 58     nmax := 0;
 59     max := -1e308;
 60     for i := 1 to k do
 61       if R[i] > max then
 62       begin
 63         nmax := i;
 64         max := R[i]
 65       end;
 66     
 67     if nmax = k then
 68       writeln('Íå óäàëîñü íàéòè ñðåäíåå àðèôìåòè÷åñêîå')
 69     else
 70     begin
 71       avg := 0;
 72       for i := nmax + 1 to k do
 73         avg := avg + R[i];
 74       avg := avg / (k - nmax);
 75       writeln('Ñðåäíåå àðèôìåòè÷åñêîå: ', avg:-14:5)
 76     end
 77   end;
 78 end.
}}}
/* Program "lab2" */
#include "p2c2stdlib.h"

const int lmax = 20;

array<1,lmax,float> R;
int i, n, k, f, nmax;
float a, x, h, max, avg;

int main()
{
  writeln(1, "Ëàáîðàòîðíàÿ ðàáîòà ¹2");
  writeln(1, "Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, çàäàíèÿ: 2, 7, 2");
  writeln(1, "Çàäàíèå 1");
  do
  {
    write(3, "Ââåäèòå íàòóðàëüíîå ÷èñëî n îò 1 äî ", lmax, ", äëèíó ìàññèâà R: ");
    read(n);
  } while (!((n > 0) && (n <= lmax)));
  write(1, "Ââåäèòå ÷èñëà a, x è h: ");
  read(a, x, h);
  for (i = 1; i <= n; i++)
    R[i] = 1.25 * sin(3 * a * x - i * h);
  writeln(1, "Ìàññèâ R:");
  for (i = 1; i <= n; i++)
    write(1, full_format(R[i], -8, 3));
  writeln();
  f = 0;
  for (i = n; i >= 1; i--)
    if (R[i] < 0)
      f = i;
  if (f == 0)
    writeln(1, "Â ìàññèâå îòñóòñòâóþò îòðèöàòåëüíûå ýëåìåíòû.");
  else
  {
    writeln();
    writeln(1, "Çàäàíèå 2");
    k = 0;
    for (i = 1; i <= n; i++)
      if ((i <= f) || (abs(R[i]) < 0.3))
      {
        k = k + 1;
        R[k] = R[i];
      }
    writeln(1, "Ìàññèâ R'':");
    for (i = 1; i <= k; i++)
      write(1, full_format(R[i], -8, 3));
    writeln();
    if (k == n)
      writeln(1, "Íåò óäàëåíèé");
    writeln();
    writeln(1, "Çàäàíèå 3");
    nmax = 0;
    max = -1e308;
    for (i = 1; i <= k; i++)
      if (R[i] > max)
      {
        nmax = i;
        max = R[i];
      }
    if (nmax == k)
      writeln(1, "Íå óäàëîñü íàéòè ñðåäíåå àðèôìåòè÷åñêîå");
    else
    {
      avg = 0;
      for (i = nmax + 1; i <= k; i++)
        avg = avg + R[i];
      avg = avg / (k - nmax);
      writeln(2, "Ñðåäíåå àðèôìåòè÷åñêîå: ", full_format(avg, -14, 5));
    }
  }
  return 0;
}

test/labs/lab3-1.pas ==================================================================
{{{
  1 program lab3_prog1;
  2 var i: integer;
  3     s, prev, cur, eps, x: real;
  4 
  5 begin
  6   writeln('Ëàáîðàòîðíàÿ ðàáîòà ¹3 ïðîãðàììà 1');
  7   writeln('Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, âàðèàíò çàäàíèÿ 6');
  8   writeln('Çàäàíèå ¹1');
  9   
 10   repeat
 11     write('Ââåäèòå âåùåñòâåííîå ÷èñëî eps áîëüøåå íóëÿ: ');
 12     read(eps);
 13   until (eps > 0);
 14   repeat
 15     write('Ââåäèòå ÷èñëî x òàêæå áîëüøåå íóëÿ: ');
 16     read(x);
 17   until (x > 0);
 18   
 19   prev := (x - 1)/x;
 20   cur := sqr(x - 1)/(2*sqr(x));
 21   s := prev + cur;
 22   i := 2;
 23   while abs(cur) > eps do
 24   begin
 25     prev := cur;
 26     cur := prev * (i - 1)*(x - 1)/(i*x);
 27     s := s + cur;
 28     i := i + 1
 29   end;
 30   writeln('Ïîëó÷åííîå çíà÷åíèå ïî ôîðìóëå: ', s);
 31   writeln('Òî÷íîå çíà÷åíèå: ln(', x, ') = ', ln(x));
 32   writeln('Ñðàâíåíèå: |ln(x)-s| = ', abs(ln(x)-s));
 33   writeln('Îòëè÷èå â ', 100*(1-s/ln(x)) : 7 : 6, '%');
 34 end.
}}}
/* Program "lab3_prog1" */
#include "p2c2stdlib.h"

int i;
float s, prev, cur, eps, x;

int main()
{
  writeln(1, "Ëàáîðàòîðíàÿ ðàáîòà ¹3 ïðîãðàììà 1");
  writeln(1, "Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, âàðèàíò çàäàíèÿ 6");
  writeln(1, "Çàäàíèå ¹1");
  do
  {
    write(1, "Ââåäèòå âåùåñòâåííîå ÷èñëî eps áîëüøåå íóëÿ: ");
    read(eps);
  } while (!((eps > 0)));
  do
  {
    write(1, "Ââåäèòå ÷èñëî x òàêæå áîëüøåå íóëÿ: ");
    read(x);
  } while (!((x > 0)));
  prev = (x - 1) / x;
  cur = sqr(x - 1) / (2 * sqr(x));
  s = prev + cur;
  i = 2;
  while (abs(cur) > eps)
  {
    prev = cur;
    cur = prev * (i - 1) * (x - 1) / (i * x);
    s = s + cur;
    i = i + 1;
  }
  writeln(2, "Ïîëó÷åííîå çíà÷åíèå ïî ôîðìóëå: ", s);
  writeln(4, "Òî÷íîå çíà÷åíèå: ln(", x, ") = ", ln(x));
  writeln(2, "Ñðàâíåíèå: |ln(x)-s| = ", abs(ln(x) - s));
  writeln(3, "Îòëè÷èå â ", full_format(100 * (1 - s / ln(x)), 7, 6), "%");
  return 0;
}

test/labs/lab3-2.pas ==================================================================
{{{
  1 program lab3_prog2;
  2 const lmax = 20;
  3 var A: array[1..lmax, 1..lmax] of integer;
  4     B: array[1..lmax] of array[1..lmax] of integer;
  5     i, j, n, t, nodd: integer;
  6 
  7 begin
  8   writeln('Ëàáîðàòîðíàÿ ðàáîòà ¹3 ïðîãðàììà 2');
  9   writeln('Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, âàðèàíòû çàäàíèé 7 è 2');
 10   writeln('Çàäàíèå ¹2');
 11   
 12   repeat
 13     write('Ââåäèòå ðàçìåð ìàòðèöû A, íàòóðàëüíîå ÷èñëî n îò 3 äî ', lmax, ': ');
 14     read(n);
 15   until (n >= 3) and (n <= lmax);
 16   
 17   writeln('Ââåäèòå ìàòðèöó:');
 18   for i := 1 to n do
 19     for j := 1 to n do
 20       read(A[i,j]);
 21 
 22   for i := 1 to n-1 do
 23     for j := i+1 to n do
 24       if A[1,i] > A[1,j] then
 25       begin
 26         t := A[1,i];
 27         A[1,i] := A[1,j];
 28         A[1,j] := t
 29       end;
 30   
 31   writeln('Òðè ìèíèìàëüíûõ ýëåìåíòà íà ïåðâîé ñòðîêå: ',
 32       A[1,1], ' ', A[1,2], ' ', A[1,3]);
 33   
 34   writeln('Çàäàíèå ¹3');
 35   nodd := 0;
 36   for i := 1 to n do
 37     if A[i, n-i+1] mod 2 <> 0 then
 38       nodd := nodd + 1;
 39   
 40   if nodd = 0 then
 41     writeln('Íåò íå÷¸òíûõ ýëåìåíòîâ')
 42   else
 43     writeln('Íå÷¸òíûõ ýëåìåíòîâ íà ïîáî÷íîé äèàãîíàëè: ', nodd);
 44 end.
}}}
/* Program "lab3_prog2" */
#include "p2c2stdlib.h"

const int lmax = 20;

array<1,lmax,array<1,lmax,int>> A;
array<1,lmax,array<1,lmax,int>> B;
int i, j, n, t, nodd;

int main()
{
  writeln(1, "Ëàáîðàòîðíàÿ ðàáîòà ¹3 ïðîãðàììà 2");
  writeln(1, "Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, âàðèàíòû çàäàíèé 7 è 2");
  writeln(1, "Çàäàíèå ¹2");
  do
  {
    write(3, "Ââåäèòå ðàçìåð ìàòðèöû A, íàòóðàëüíîå ÷èñëî n îò 3 äî ", lmax, ": ");
    read(n);
  } while (!((n >= 3) && (n <= lmax)));
  writeln(1, "Ââåäèòå ìàòðèöó:");
  for (i = 1; i <= n; i++)
    for (j = 1; j <= n; j++)
      read(A[i][j]);
  for (i = 1; i <= n-1; i++)
    for (j = i + 1; j <= n; j++)
      if (A[1][i] > A[1][j])
      {
        t = A[1][i];
        A[1][i] = A[1][j];
        A[1][j] = t;
      }
  writeln(6, "Òðè ìèíèìàëüíûõ ýëåìåíòà íà ïåðâîé ñòðîêå: ", A[1][1], " ", A[1][2], " ", A[1][3]);
  writeln(1, "Çàäàíèå ¹3");
  nodd = 0;
  for (i = 1; i <= n; i++)
    if (A[i][n-i + 1] % 2 != 0)
      nodd = nodd + 1;
  if (nodd == 0)
    writeln(1, "Íåò íå÷¸òíûõ ýëåìåíòîâ");
  else
    writeln(2, "Íå÷¸òíûõ ýëåìåíòîâ íà ïîáî÷íîé äèàãîíàëè: ", nodd);
  return 0;
}

test/labs/lab4-1.pas ==================================================================
{{{
  1 program lab4_prog1;
  2 const lmax = 20;
  3 var A: array[1..lmax, 1..lmax] of integer;
  4     n, m, i, j, fz, lnz, t: integer;
  5     flag : boolean;
  6 
  7 begin
  8   writeln('Ëàáîðàòîðíàÿ ðàáîòà ¹4 ïðîãðàììà 1');
  9   writeln('Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, âàðèàíò çàäàíèÿ 6');
 10   writeln('Çàäàíèå ¹1');
 11   
 12   repeat
 13     write('Ââåäèòå ðàçìåð n ìàòðèöû A[1:n,1:m], íàòóðàëüíîå ÷èñëî 2 äî ',
 14         lmax, ': ');
 15     read(n);
 16   until (n >= 2) and (n <= lmax);
 17   repeat
 18     write('Ââåäèòå ðàçìåð m, íàòóðàëüíîå ÷èñëî 1 äî ', lmax, ': ');
 19     read(m);
 20   until (m >= 1) and (m <= lmax);
 21   
 22   writeln('Ââåäèòå ìàòðèöó:');
 23   for i := 1 to n do
 24     for j := 1 to m do
 25       read(A[i,j]);
 26   
 27   fz := 0;
 28   i := 1;
 29   flag := false;
 30   while (i <= n) and (flag = false) do begin
 31     for j := 1 to m do
 32       if A[i,j] = 0 then begin
 33         fz := i;
 34         flag := true;
 35       end;
 36     i := i + 1;
 37   end;
 38   lnz := n;
 39   flag := false;
 40   while (lnz >= 1) and (flag = false) do begin
 41     flag := true;
 42     for j := 1 to m do
 43       if A[lnz,j] = 0 then
 44         flag := false;
 45     if not flag then lnz := lnz - 1;
 46   end;
 47   
 48   if fz = 0 then
 49     writeln('Íåò ñòðîêè ñ íóëåâûì ýëåìåíòîì')
 50   else if lnz = 0 then
 51     writeln('Íåò ñòðîê íå ñîäåðæàùèõ íè îäíîãî íóëÿ')
 52   else begin
 53     for j := 1 to m do begin
 54       t := A[fz,j];
 55       A[fz,j] := A[lnz,j];
 56       A[lnz,j] := t
 57     end;
 58     
 59     writeln('Ìàòðèöà A:');
 60     for i := 1 to n do begin
 61       for j := 1 to m do
 62         write(A[i,j]:3);
 63       writeln
 64     end
 65   end;
 66 end.
}}}
/* Program "lab4_prog1" */
#include "p2c2stdlib.h"

const int lmax = 20;

array<1,lmax,array<1,lmax,int>> A;
int n, m, i, j, fz, lnz, t;
bool flag;

int main()
{
  writeln(1, "Ëàáîðàòîðíàÿ ðàáîòà ¹4 ïðîãðàììà 1");
  writeln(1, "Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, âàðèàíò çàäàíèÿ 6");
  writeln(1, "Çàäàíèå ¹1");
  do
  {
    write(3, "Ââåäèòå ðàçìåð n ìàòðèöû A[1:n,1:m], íàòóðàëüíîå ÷èñëî 2 äî ", lmax, ": ");
    read(n);
  } while (!((n >= 2) && (n <= lmax)));
  do
  {
    write(3, "Ââåäèòå ðàçìåð m, íàòóðàëüíîå ÷èñëî 1 äî ", lmax, ": ");
    read(m);
  } while (!((m >= 1) && (m <= lmax)));
  writeln(1, "Ââåäèòå ìàòðèöó:");
  for (i = 1; i <= n; i++)
    for (j = 1; j <= m; j++)
      read(A[i][j]);
  fz = 0;
  i = 1;
  flag = false;
  while ((i <= n) && (flag == false))
  {
    for (j = 1; j <= m; j++)
      if (A[i][j] == 0)
      {
        fz = i;
        flag = true;
      }
    i = i + 1;
  }
  lnz = n;
  flag = false;
  while ((lnz >= 1) && (flag == false))
  {
    flag = true;
    for (j = 1; j <= m; j++)
      if (A[lnz][j] == 0)
        flag = false;
    if (!(flag))
      lnz = lnz - 1;
  }
  if (fz == 0)
    writeln(1, "Íåò ñòðîêè ñ íóëåâûì ýëåìåíòîì");
  else
    if (lnz == 0)
      writeln(1, "Íåò ñòðîê íå ñîäåðæàùèõ íè îäíîãî íóëÿ");
    else
    {
      for (j = 1; j <= m; j++)
      {
        t = A[fz][j];
        A[fz][j] = A[lnz][j];
        A[lnz][j] = t;
      }
      writeln(1, "Ìàòðèöà A:");
      for (i = 1; i <= n; i++)
      {
        for (j = 1; j <= m; j++)
          write(1, width_format(A[i][j], 3));
        writeln();
      }
    }
  return 0;
}

test/labs/lab4-2.pas ==================================================================
{{{
  1 program lab4_prog2;
  2 const lmax = 20;
  3 var B: array[1..lmax] of integer;
  4     k, i, t: integer;
  5 
  6 begin
  7   writeln('Ëàáîðàòîðíàÿ ðàáîòà ¹4 ïðîãðàììà 2');
  8   writeln('Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, âàðèàíò çàäàíèÿ 2');
  9   writeln('Çàäàíèå ¹2');
 10   
 11   repeat
 12     write('Ââåäèòå k, äëèíó ìàññèâà B, íàòóðàëüíîå ÷èñëî îò 1 äî ', lmax, ': ');
 13     read(k);
 14   until (k >= 1) and (k <= lmax);
 15   
 16   writeln('Ââåäèòå ìàññèâ:');
 17   for i := 1 to k do begin
 18     read(t);
 19     B[i] := 0;
 20     while t > 0 do begin
 21       B[i] := B[i] * 10 + (t mod 10);
 22       t := t div 10;
 23     end;
 24   end;
 25   
 26   writeln('Ìàññèâ B:');
 27   for i := 1 to k do
 28     write(B[i], ' ');
 29 end.
}}}
/* Program "lab4_prog2" */
#include "p2c2stdlib.h"

const int lmax = 20;

array<1,lmax,int> B;
int k, i, t;

int main()
{
  writeln(1, "Ëàáîðàòîðíàÿ ðàáîòà ¹4 ïðîãðàììà 2");
  writeln(1, "Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, âàðèàíò çàäàíèÿ 2");
  writeln(1, "Çàäàíèå ¹2");
  do
  {
    write(3, "Ââåäèòå k, äëèíó ìàññèâà B, íàòóðàëüíîå ÷èñëî îò 1 äî ", lmax, ": ");
    read(k);
  } while (!((k >= 1) && (k <= lmax)));
  writeln(1, "Ââåäèòå ìàññèâ:");
  for (i = 1; i <= k; i++)
  {
    read(t);
    B[i] = 0;
    while (t > 0)
    {
      B[i] = B[i] * 10 + (t % 10);
      t = t / 10;
    }
  }
  writeln(1, "Ìàññèâ B:");
  for (i = 1; i <= k; i++)
    write(2, B[i], " ");
  return 0;
}

test/labs/lab5-1.pas ==================================================================
{{{
  1 program lab5_prog1;
  2 var nr, mr : real; n, m : integer;
  3 
  4 function lnf(k : integer) : real; 
  5 begin
  6   for k := k downto 1 do
  7     result := result + ln(k);
  8 end;
  9 
 10 begin
 11   writeln('Ëàáîðàòîðíàÿ ðàáîòà ¹5 ïðîãðàììà 1');
 12   writeln('Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, çàäàíèå ¹1 (âàð 2)');
 13   repeat
 14     write('Ââåäèòå öåëûå ÷èñëà n è m, ãäå m >= n >= 0: ');
 15     read(nr);
 16     read(mr);
 17   until (nr >= 0) and (mr >= nr)
 18       and (abs(nr) < maxint) and (abs(mr) < maxint)
 19       and (round(nr) = nr) and (round(mr) = mr);
 20   n := round(nr);
 21   m := round(mr);
 22   writeln('a = ', exp(lnf(m) - lnf(n) - lnf(m-n)));
 23 end.
}}}
/* Program "lab5_prog1" */
#include "p2c2stdlib.h"

float nr, mr;
int n, m;

float lnf(int k)
{
  for (k = k; k >= 1; k--)
    result = result + ln(k);
}
int main()
{
  writeln(1, "Ëàáîðàòîðíàÿ ðàáîòà ¹5 ïðîãðàììà 1");
  writeln(1, "Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, çàäàíèå ¹1 (âàð 2)");
  do
  {
    write(1, "Ââåäèòå öåëûå ÷èñëà n è m, ãäå m >= n >= 0: ");
    read(nr);
    read(mr);
  } while (!((nr >= 0) && (mr >= nr) && (abs(nr) < maxint) && (abs(mr) < maxint) && (round(nr) == nr) && (round(mr) == mr)));
  n = round(nr);
  m = round(mr);
  writeln(2, "a = ", exp(lnf(m) - lnf(n) - lnf(m-n)));
  return 0;
}

test/labs/lab5-2.pas ==================================================================
{{{
  1 program lab5_prog2;
  2 const lmax = 20;
  3 var i, j, n, m : integer; nr, mr, min, max : real;
  4     a : array [1..lmax, 1..lmax] of real;
  5 begin
  6   writeln('Ëàáîðàòîðíàÿ ðàáîòà ¹5 ïðîãðàììà 2');
  7   writeln('Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, çàäàíèå ¹2 (âàð 7)');
  8   
  9   repeat
 10     write('Ââåäèòå n: ');
 11     read(nr);
 12   until (nr > 0) and (nr <= lmax) and (nr = round(nr));
 13   n := round(nr);
 14   repeat
 15      write('Ââåäèòå m: ');
 16      read(mr);
 17   until (mr > 0) and (mr <= lmax) and (mr = round(mr));
 18   m := round(mr);
 19   
 20   writeln('Ââåäèòå ìàòðèöó:');
 21   for i := 1 to n do
 22       for j := 1 to m do
 23        read(a[i,j]);
 24 
 25   max := a[1,1];
 26   for i := 1 to n do begin
 27     min := maxint;
 28     for j := 1 to m do
 29       if abs(a[i,j]) < abs(min) then
 30         min := a[i,j];
 31     if min > max then
 32       max := min;
 33   end;
 34 
 35   writeln('D = ', max);
 36 end.
}}}
/* Program "lab5_prog2" */
#include "p2c2stdlib.h"

const int lmax = 20;

int i, j, n, m;
float nr, mr, min, max;
array<1,lmax,array<1,lmax,float>> a;

int main()
{
  writeln(1, "Ëàáîðàòîðíàÿ ðàáîòà ¹5 ïðîãðàììà 2");
  writeln(1, "Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, çàäàíèå ¹2 (âàð 7)");
  do
  {
    write(1, "Ââåäèòå n: ");
    read(nr);
  } while (!((nr > 0) && (nr <= lmax) && (nr == round(nr))));
  n = round(nr);
  do
  {
    write(1, "Ââåäèòå m: ");
    read(mr);
  } while (!((mr > 0) && (mr <= lmax) && (mr == round(mr))));
  m = round(mr);
  writeln(1, "Ââåäèòå ìàòðèöó:");
  for (i = 1; i <= n; i++)
    for (j = 1; j <= m; j++)
      read(a[i][j]);
  max = a[1][1];
  for (i = 1; i <= n; i++)
  {
    min = maxint;
    for (j = 1; j <= m; j++)
      if (abs(a[i][j]) < abs(min))
        min = a[i][j];
    if (min > max)
      max = min;
  }
  writeln(2, "D = ", max);
  return 0;
}

test/labs/lab5-3.pas ==================================================================
{{{
  1 program lab5_prog3;
  2 const lmax = 20;
  3 type arr = array [1..lmax] of real;
  4 var i, n : integer; nr : real; a : arr;
  5 
  6 procedure uniq(var n : integer; var a : arr);
  7 var nn, j, i : integer; na : arr;
  8 begin
  9   nn := 0;
 10   for i := 1 to n do begin
 11     j := 1;
 12     while (j <= nn) and (a[i] <> na[j]) do
 13       inc(j);
 14     if j > nn then begin
 15       inc(nn);
 16       na[nn] := a[i]
 17     end
 18   end;
 19   n := nn;
 20   a := na;
 21 end;
 22 
 23 procedure countRepeats(n : integer; var a : arr);
 24 var reps, nn, i, j : integer; uniq : arr;
 25 begin
 26   for i := 1 to n do begin
 27     write('a[', i:2, '] = ', a[i]:2, ' ; ');
 28     reps := 0;
 29     for j := 1 to n do
 30       if (i <> j) and (a[i] = a[j]) then
 31         inc(reps);
 32     writeln('âñòðå÷àåòñÿ ðàç: ', reps);
 33   end
 34 end;
 35 
 36 begin
 37   writeln('Ëàáîðàòîðíàÿ ðàáîòà ¹5 ïðîãðàììà 3');
 38   writeln('Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, çàäàíèå ¹3 (âàð 2)');
 39   
 40   repeat
 41     write('Ââåäèòå n: ');
 42     read(nr);
 43   until (nr > 0) and (nr <= lmax) and (nr = round(nr));
 44   n := round(nr);
 45   
 46   writeln('Ââåäèòå ìàññèâ:');
 47   for i := 1 to n do begin
 48     repeat
 49       write('Ââåäèòå A[', i, ']: ');
 50       read(nr);
 51     until (abs(nr) < maxint) and (nr = round(nr));
 52     a[i] := round(nr);
 53   end;
 54   
 55   countRepeats(n, a);
 56   
 57   uniq(n, a);
 58   
 59   writeln('Ìàññèâ B:');
 60   for i := 1 to n do
 61     write(a[i], ' ');
 62 end.
}}}
/* Program "lab5_prog3" */
#include "p2c2stdlib.h"

const int lmax = 20;

int i, n;
float nr;
array<1,lmax,float> a;

void uniq(int &n, array<1,lmax,float> &a)
{
  int nn, j, i;
  array<1,lmax,float> na;

  nn = 0;
  for (i = 1; i <= n; i++)
  {
    j = 1;
    while ((j <= nn) && (a[i] != na[j]))
      inc(j);
    if (j > nn)
    {
      inc(nn);
      na[nn] = a[i];
    }
  }
  n = nn;
  a = na;
}
void countRepeats(int n, array<1,lmax,float> &a)
{
  int reps, nn, i, j;
  array<1,lmax,float> uniq;

  for (i = 1; i <= n; i++)
  {
    write(5, "a[", width_format(i, 2), "] = ", width_format(a[i], 2), " ; ");
    reps = 0;
    for (j = 1; j <= n; j++)
      if ((i != j) && (a[i] == a[j]))
        inc(reps);
    writeln(2, "âñòðå÷àåòñÿ ðàç: ", reps);
  }
}
int main()
{
  writeln(1, "Ëàáîðàòîðíàÿ ðàáîòà ¹5 ïðîãðàììà 3");
  writeln(1, "Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, çàäàíèå ¹3 (âàð 2)");
  do
  {
    write(1, "Ââåäèòå n: ");
    read(nr);
  } while (!((nr > 0) && (nr <= lmax) && (nr == round(nr))));
  n = round(nr);
  writeln(1, "Ââåäèòå ìàññèâ:");
  for (i = 1; i <= n; i++)
  {
    do
    {
      write(3, "Ââåäèòå A[", i, "]: ");
      read(nr);
    } while (!((abs(nr) < maxint) && (nr == round(nr))));
    a[i] = round(nr);
  }
  countRepeats(n, a);
  uniq(n, a);
  writeln(1, "Ìàññèâ B:");
  for (i = 1; i <= n; i++)
    write(2, a[i], " ");
  return 0;
}

test/labs/lab6.pas ==================================================================
{{{
  1 program lab6;
  2 const lmax = 20;
  3 type strings = array [1..lmax] of string;
  4 var s, subs : strings; i, k, n, smallest, err : integer; reads, dots : string;
  5 
  6 procedure filterSubstrings(k : integer; s : strings;
  7     var n : integer; var subs : strings);
  8 var it, j, j1 : integer; cur : string;
  9 begin
 10   n := 0;
 11   for it := 1 to k do begin
 12     cur := s[it];
 13     j := 1;
 14     j1 := 1;
 15     while j <= length(cur) do
 16       if ((cur[j] = '[') or (cur[j] = ']')) then begin
 17         if j <> 1 then begin
 18           n := n + 1;
 19           subs[n] := copy(cur, j1, j - j1);
 20         end; 
 21         while (j <= length(cur)) and ((cur[j] = '[') or (cur[j] = ']')) do
 22           j := j + 1;
 23         j1 := j;
 24       end else
 25         j := j + 1;
 26     if j <> j1 then begin
 27       n := n + 1;
 28       subs[n] := copy(cur, j1, j - j1);
 29     end;      
 30   end;  
 31 end;
 32 
 33 procedure findSmallest(n : integer; var subs : strings; var idx : integer);
 34 var ml, i : integer;
 35 begin
 36   ml := length(subs[1]); idx := 1;
 37   for i := 1 to n do
 38     if length(subs[i]) < ml then begin
 39       ml := length(subs[i]);
 40       idx := i
 41     end;
 42 end;
 43 
 44 procedure insertDots(var s : string);
 45 var i : integer;
 46 begin
 47   i := 1;
 48   while (i <= length(s)) and (not (s[i] in ['0'..'9'])) do
 49     inc(i);
 50   if i <= length(s) then
 51     insert('...', s, i+1);
 52 end;
 53 
 54 begin
 55   writeln('Ëàáîðàòîðíàÿ ðàáîòà ¹6');
 56   writeln('Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, çàäàíèÿ 10, 2, 10');
 57   
 58   writeln('Çàäàíèå 1');
 59   repeat
 60     write('Ââåäèòå íàòóðàëüíîå ÷èñëî k: ');
 61     readln(reads);
 62     val(reads, k, err);
 63   until (err = 0) and (k > 0) and (k <= lmax);
 64   
 65   writeln('Ââåäèòå ñòðîêè:');
 66   for i := 1 to k do
 67     readln(s[i]);
 68     
 69   filterSubstrings(k, s, n, subs);
 70     
 71   if n = 0 then 
 72     writeln('Íåò ïîäñòðîê') 
 73   else begin
 74     { if n = k then
 75       writeln('Óäàëåíèé íå áûëî.')
 76     else begin }
 77       writeln('Ïîäñòðîêè:');
 78       for i := 1 to n do
 79         writeln(subs[i]);
 80     { end; }
 81       
 82     writeln('Çàäàíèå 2');
 83     findSmallest(n, subs, smallest);
 84     writeln('Íàèìåíüøàÿ:');
 85     writeln(subs[smallest]);
 86 
 87     writeln('Çàäàíèå 3');
 88     dots := subs[smallest];
 89     insertDots(dots);
 90     if dots = subs[smallest] then
 91       writeln('Öèôð â íàéäåííîé ïîäñòðîêå íåò.')
 92     else begin
 93       writeln('Ïðåîáðàçîâàííàÿ:');
 94       writeln(dots);
 95     end
 96   end;
 97 end.
}}}
/* Program "lab6" */
#include "p2c2stdlib.h"

const int lmax = 20;

array<1,lmax,string> s, subs;
int i, k, n, smallest, err;
string reads, dots;

void filterSubstrings(int k, array<1,lmax,string> s, int &n, array<1,lmax,string> &subs)
{
  int it, j, j1;
  string cur;

  n = 0;
  for (it = 1; it <= k; it++)
  {
    cur = s[it];
    j = 1;
    j1 = 1;
    while (j <= length(cur))
      if (((cur[j] == "[") || (cur[j] == "]")))
      {
        if (j != 1)
        {
          n = n + 1;
          subs[n] = copy(cur, j1, j - j1);
        }
        while ((j <= length(cur)) && ((cur[j] == "[") || (cur[j] == "]")))
          j = j + 1;
        j1 = j;
      }
      else
        j = j + 1;
    if (j != j1)
    {
      n = n + 1;
      subs[n] = copy(cur, j1, j - j1);
    }
  }
}
void findSmallest(int n, array<1,lmax,string> &subs, int &idx)
{
  int ml, i;

  ml = length(subs[1]);
  idx = 1;
  for (i = 1; i <= n; i++)
    if (length(subs[i]) < ml)
    {
      ml = length(subs[i]);
      idx = i;
    }
}
void insertDots(string &s)
{
  int i;

  i = 1;
  while ((i <= length(s)) && (!((s[i] & set("0","9")))))
    inc(i);
  if (i <= length(s))
    insert("...", s, i + 1);
}
int main()
{
  writeln(1, "Ëàáîðàòîðíàÿ ðàáîòà ¹6");
  writeln(1, "Àêáàøåâ Ðóñëàí, ãðóïïà ÁÈÂ155, âàðèàíò 141, çàäàíèÿ 10, 2, 10");
  writeln(1, "Çàäàíèå 1");
  do
  {
    write(1, "Ââåäèòå íàòóðàëüíîå ÷èñëî k: ");
    readln(reads);
    val(reads, k, err);
  } while (!((err == 0) && (k > 0) && (k <= lmax)));
  writeln(1, "Ââåäèòå ñòðîêè:");
  for (i = 1; i <= k; i++)
    readln(s[i]);
  filterSubstrings(k, s, n, subs);
  if (n == 0)
    writeln(1, "Íåò ïîäñòðîê");
  else
  {
    writeln(1, "Ïîäñòðîêè:");
    for (i = 1; i <= n; i++)
      writeln(1, subs[i]);
    writeln(1, "Çàäàíèå 2");
    findSmallest(n, subs, smallest);
    writeln(1, "Íàèìåíüøàÿ:");
    writeln(1, subs[smallest]);
    writeln(1, "Çàäàíèå 3");
    dots = subs[smallest];
    insertDots(dots);
    if (dots == subs[smallest])
      writeln(1, "Öèôð â íàéäåííîé ïîäñòðîêå íåò.");
    else
    {
      writeln(1, "Ïðåîáðàçîâàííàÿ:");
      writeln(1, dots);
    }
  }
  return 0;
}

test/labs/lab7-1.pas ==================================================================
{{{
  1 program p1;
  2 
  3 var
  4   r, rmax: Real;
  5   f: File of Real;
  6   filename, buf: String;
  7   err, nn, i: Integer;
  8 
  9 begin
 10   writeln('�або�а�о�на� �або�а �7');
 11   writeln('�кба�ев Р��лан, г��ппа ���155, ва�иан� 141, задание 1 (10)');
 12 
 13   repeat
 14     write('�м� �айла запи�и: ');
 15     readln(filename);
 16   until CanCreateFile(filename);
 17   
 18   assign(f, filename);
 19   
 20   rewrite(f);
 21   
 22   repeat
 23     write('�веди�е коли�е��во �и�ел: ');
 24     readln(buf);
 25     val(buf, nn, err)
 26   until (err = 0) and (nn > 0);
 27   for i := 1 to nn do begin
 28     repeat
 29       write('�веди�е �лемен� �', i, ': ');
 30       readln(buf);
 31       val(buf, r, err)
 32     until (err = 0);
 33     write(f, r);
 34   end;
 35   
 36   close(f);
 37   
 38   reset(f);
 39   
 40   rmax := 0;
 41   i := 1;
 42   while not eof(f) do begin
 43     read(f, r);
 44     if ((r > rmax) or (rmax = 0)) and (i mod 2 = 1)
 45       then rmax := r;
 46     inc(i);
 47   end;
 48   writeln('�ак�имал�ное �и�ло: ', rmax);
 49   
 50   close(f);
 51 end.
}}}
unknown character 'ï' in string on line 1
unknown character '»' in string on line 1
unknown character '¿' in string on line 1
Variable declaration of "f": Typed File-type variables are not supported in C
test/labs/lab7-2.pas ==================================================================
{{{
  1 program p2;
  2 
  3 var
  4   inf, outf: Text;
  5   inFilename, outFilename, row: String;
  6   counter, i: Integer;
  7 
  8 begin
  9   writeln('�або�а�о�на� �або�а �7');
 10   writeln('�кба�ев Р��лан, г��ппа ���155, ва�иан� 141, задание 2 (7)');
 11 
 12   repeat
 13     write('�веди�е им� �и�аемого �айла: ');
 14     readln(inFilename)
 15   until FileExists(inFilename);
 16   assign(inf, inFilename);
 17   reset(inf);
 18   
 19   repeat
 20     write('�м� �айла дл� запи�и: ');
 21     readln(outFilename);
 22     if FileExists(outFilename)
 23       then writeln('Файл � �аким именем �же ���е��в�е�')
 24   until CanCreateFile(outFilename) and not FileExists(outFilename);
 25   assign(outf, outFilename);
 26   rewrite(outf);
 27   
 28   counter := 0;
 29   while not eof(inf) do begin
 30     readln(inf, row);
 31     for i := 1 to length(row) do begin
 32       while (row[i] in ['0'..'9']) and (i <= length(row)) do begin
 33         inc(counter);
 34         inc(i);
 35       end;
 36       if counter >= 2 then begin
 37         counter := 0;
 38         insert('A', row, i);
 39       end else
 40         counter := 0;
 41     end;
 42     writeln(outf, row);
 43   end;
 44   
 45   close(inf);
 46   close(outf);
 47 end.
}}}
Syntax error: unknown type "Text" in variable declaration of "inf"
test/labs/lab7-3.pas ==================================================================
{{{
  1 program p3;
  2 
  3 const lmax = 40;
  4 
  5 type
  6   tv = record
  7     manufacturer: record
  8       city, factory: String;
  9     end;
 10     name: String;
 11     params: record
 12       year, price: Integer;
 13       size: Real;
 14     end;
 15   end;
 16 
 17 var
 18   records: array [1..lmax] of tv;
 19   nr, i, searchedIdx, maxYear, minPrice: Integer;
 20   f: File of tv;
 21   name: String;
 22 
 23 begin
 24   writeln('�або�а�о�на� �або�а �7');
 25   writeln('�кба�ев Р��лан, г��ппа ���155, ва�иан� 141, задание 3 (12)');
 26 
 27   repeat
 28     write('�м� �айла дл� запи�и: ');
 29     readln(name);
 30   until CanCreateFile(name);
 31   
 32   assign(f, name);
 33   rewrite(f);
 34   
 35   repeat
 36     write('�оли�е��во запи�ей: ');
 37     readln(nr);
 38   until nr in [1..lmax];
 39   
 40   writeln('�веди�е данн�е:');
 41   for i := 1 to nr do begin
 42     with records[i] do begin
 43       with manufacturer do begin
 44         write('�о�од изго�ови�ел�: ');
 45         readln(city);
 46         write('�авод: ');
 47         readln(factory);
 48       end;
 49       write('�азвание: ');
 50       readln(name);
 51       with params do begin
 52         repeat
 53           write('�од в�п��ка: ');
 54           readln(year);
 55         until (year > 1900) and (year <= 2015);
 56 
 57         repeat
 58           write('Цена: ');
 59           readln(price);
 60         until price > 0;
 61 
 62         repeat
 63           write('Разме� �к�ана: ');
 64           readln(size);
 65         until size > 0;
 66         writeln;
 67       end;
 68     end;
 69     write(f, records[i]);
 70   end;
 71   close(f);
 72   
 73   searchedIdx := 0;
 74   maxYear := records[1].params.year;
 75   minPrice := 0;
 76   for i := 1 to nr do
 77     with records[i], params do
 78       if (year >= maxYear) or (maxYear = 0) then
 79         maxYear := year;
 80   for i := 1 to nr do
 81     with records[i], params do
 82       if ((price < minPrice) or (minPrice = 0)) and (year = maxYear) then begin
 83         minPrice := price;
 84         searchedIdx := i
 85       end;
 86 
 87   writeln('��ком�й �елевизо�: ', records[searchedIdx].name);
 88 end.
}}}
Variable declaration of "f": Typed File-type variables are not supported in C
test/labs/lab8.pas ==================================================================
{{{
  1 program woop;
  2 
  3 type nodeptr = ^node;
  4   node = record
  5     next: nodeptr;
  6     data: integer;
  7   end;
  8 
  9 var root: ^node;
 10 
 11 procedure print(var root: ^node);
 12 var p: ^node;
 13 begin
 14   p := root;
 15   while true do begin
 16     write(p^.data, ' -> ');
 17     if p^.next = nil then begin
 18       writeln('end');
 19       break;
 20     end;
 21     p := p^.next
 22   end;
 23 end;
 24   
 25 procedure make_queue(var root: ^node);
 26 var
 27   t: integer;
 28   p, temp: ^node;
 29 begin
 30   writeln('�âåäèòå öåëûå ÷èñëà äëß çàïèñè:');
 31   writeln('(-1 îáîçíà÷àåò êîíåö ïîñëåäîâàòåëüíîñòè)');
 32   read(t);
 33   if t = -1 then
 34     root := nil
 35   else begin
 36     new(root);
 37     temp := root;
 38     repeat
 39       p := temp;
 40       new(temp);
 41       p^.next := temp;
 42       p^.data := t;
 43       read(t);
 44     until t = -1;
 45     p^.next := nil;
 46     dispose(temp);
 47   end;
 48 end;
 49 
 50 procedure process(var root: ^node);
 51 var p, t: ^node; i, a1: integer;
 52 begin
 53   p := root;
 54   i := 1;
 55   write('�âåäèòå ÷èñëî A1: ');
 56   read(a1);
 57   while true do begin
 58     if i mod 2 = 1 then begin
 59       t := p^.next;
 60       new(p^.next);
 61       p^.next^.next := t;
 62       p^.next^.data := a1;
 63     end;
 64     if p^.next = nil then
 65       break;
 66     p := p^.next;
 67     inc(i);
 68   end;
 69 end;
 70 
 71 procedure removals(var root: ^node);
 72 var p, t: ^node; i, f, l: integer;
 73 begin
 74   p := root;
 75   f := 0;
 76   i := 0;
 77   while true do begin
 78     inc(i);
 79     if p^.data mod 2 = 0 then begin
 80       if f = 0 then
 81         f := i;
 82       l := i;
 83     end;
 84     if p^.next = nil then
 85       break;
 86     p := p^.next;
 87   end;
 88   if f = 0 then
 89     writeln('� î÷åðåäè íå ñóùåñòâóþò ÷Þòíûå ýëåìåíòû')
 90   else if f = l then
 91     writeln('� î÷åðåäè ñóùåñòâóåò òîëüêî îäèí ÷Þòíûé ýëåìåíò')
 92   else begin
 93     p := root;
 94     i := 0;
 95     while true do begin
 96       inc(i);
 97       if i = f then
 98         break;
 99       p := p^.next;
100     end;
101     while i <> l-1 do begin
102       inc(i);
103       t := p^.next^.next;
104       dispose(p^.next);
105       p^.next := t;
106     end;
107   end;
108 end;
109 
110 begin
111   make_queue(root);
112   if root = nil then
113     writeln('�óñòàß î÷åðåäü')
114   else begin
115     print(root);
116     process(root);
117     print(root);
118     removals(root);
119     print(root);
120   end;
121 end.
}}}
/* Program "woop" */
#include "p2c2stdlib.h"

struct rec1 { rec1 *next; int data; } *root;

void print(rec1 &root)
{
  struct rec1 { rec1 *next; int data; } *p;

  p = root;
  while (true)
  {
    write(2, (*p).data, " -> ");
    if ((*p).next == NULL)
    {
      writeln(1, "end");
      break;
    }
    p = (*p).next;
  }
}
void make_queue(rec1 &root)
{
  int t;
  struct rec1 { rec1 *next; int data; } *p, *temp;

  writeln(1, "�âåäèòå öåëûå ÷èñëà äëß çàïèñè:");
  writeln(1, "(-1 îáîçíà÷àåò êîíåö ïîñëåäîâàòåëüíîñòè)");
  read(t);
  if (t == -1)
    root = NULL;
  else
  {
    new(root);
    temp = root;
    do
    {
      p = temp;
      new(temp);
      (*p).next = temp;
      (*p).data = t;
      read(t);
    } while (!(t == -1));
    (*p).next = NULL;
    dispose(temp);
  }
}
void process(rec1 &root)
{
  struct rec1 { rec1 *next; int data; } *p, *t;
  int i, a1;

  p = root;
  i = 1;
  write(1, "�âåäèòå ÷èñëî A1: ");
  read(a1);
  while (true)
  {
    if (i % 2 == 1)
    {
      t = (*p).next;
      new((*p).next);
      (*(*p).next).next = t;
      (*(*p).next).data = a1;
    }
    if ((*p).next == NULL)
      break;
    p = (*p).next;
    inc(i);
  }
}
void removals(rec1 &root)
{
  struct rec1 { rec1 *next; int data; } *p, *t;
  int i, f, l;

  p = root;
  f = 0;
  i = 0;
  while (true)
  {
    inc(i);
    if ((*p).data % 2 == 0)
    {
      if (f == 0)
        f = i;
      l = i;
    }
    if ((*p).next == NULL)
      break;
    p = (*p).next;
  }
  if (f == 0)
    writeln(1, "� î÷åðåäè íå ñóùåñòâóþò ÷Þòíûå ýëåìåíòû");
  else
    if (f == l)
      writeln(1, "� î÷åðåäè ñóùåñòâóåò òîëüêî îäèí ÷Þòíûé ýëåìåíò");
    else
    {
      p = root;
      i = 0;
      while (true)
      {
        inc(i);
        if (i == f)
          break;
        p = (*p).next;
      }
      while (i != l-1)
      {
        inc(i);
        t = (*(*p).next).next;
        dispose((*p).next);
        (*p).next = t;
      }
    }
}
int main()
{
  make_queue(root);
  if (root == NULL)
    writeln(1, "�óñòàß î÷åðåäü");
  else
  {
    print(root);
    process(root);
    print(root);
    removals(root);
    print(root);
  }
  return 0;
}

p2c2's People

Contributors

ruslashev avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.