Praxisaufgabe

develop
Trivernis 6 years ago
parent c6cfacb410
commit 35d49d8c8e

@ -1,5 +1,7 @@
unit linkedlist;
{ TODO: Change from interface and record to class. }
interface
type
link = ^node;

@ -0,0 +1,105 @@
{ Julius Riegel, 20.12.18 }
unit utils;
interface
uses
crt,
Graph;
type
person = record
pname : String[10];
psurname : String[10];
number: Integer;
end;
function int_to_str(i: Integer): String;
procedure write_file(fname: String; data: person);
function read_file(fname: String): person;
procedure drawrectnums(nums: Array of Integer; size: Integer);
procedure init_graphics;
procedure graphictext(x, y, size: Integer; text: String);
implementation
function int_to_str(i: Integer): String;
begin
Str(i, int_to_str);
end;
procedure write_file(fname: String; data: person);
var
outfile: File of person;
begin
Assign(outfile, fname);
Rewrite(outfile);
Write(outfile, data);
Close(outfile);
end;
function read_file(fname: String): person;
var
infile: File of person;
begin
Assign(infile, fname);
Reset(infile);
Read(infile, read_file);
Close(infile);
end;
function format_num(num: Integer) : String;
var
tempstr: String;
begin
tempstr := int_to_str(num);
if (tempstr = '0') then
tempstr := '*';
format_num := tempstr;
end;
procedure init_graphics;
var
gdriver,
gmode : Integer;
begin
DetectGraph(gdriver, gmode);
InitGraph(gdriver, gmode, '');
end;
procedure graphictext(x, y, size : Integer; text: String);
begin
SetTextStyle(0, 0, round(size/40));
OutTextXY(x, y, text);
end;
procedure drawrectnums(nums: Array of Integer; size: Integer);
var
xsize,
ysize,
xstart,
ystart: Integer;
begin
xsize := GetMaxX;
ysize := GetMaxY;
xstart := Round(xsize/2) - round(size/2);
ystart := Round(ysize/2) - round(size/2);
SetTextStyle(0, 0, round(size/40));
OutTextXY(xstart+size, ystart, format_num(nums[0]));
OutTextXY(xstart+size, ystart+size, format_num(nums[1]));
OutTextXY(xstart, ystart+size, format_num(nums[2]));
OutTextXY(xstart, ystart, format_num(nums[3]));
end;
procedure draw_lines(xstart, ystart, size: Integer);
begin
Line(xstart, ystart, xstart+size, ystart);
Line(xstart+size, ystart, xstart+size, ystart+size);
Line(xstart+size, ystart+size, xstart, ystart+size);
Line(xstart, ystart+size, xstart, ystart);
end;
begin
{ Main Body }
end.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,38 @@
{ Julius Riegel, 20.12.18 }
program programm1;
uses
utils in './lib/utils.pas';
const
fname = './persons/Name';
procedure gen_entry(fnum: Integer);
var
temp_person: person;
curr_fname : String;
begin
curr_fname := fname + int_to_str(fnum) + '.prs';
Write(' Name: ');
ReadLn(temp_person.pname);
Write(' Surname: ');
ReadLn(temp_person.psurname);
temp_person.number := Random(101);
WriteLn(' Number is: ', temp_person.number);
WriteLn;
write_file(curr_fname, temp_person);
end;
var
i : Integer;
begin
Randomize;
WriteLn;
for i := 1 to 4 do
begin
gen_entry(i);
end;
WriteLn('[+] All names saved.');
end.

@ -0,0 +1,41 @@
{ Julius Riegel, 20.12.18 }
program programm2;
uses
utils in './lib/utils.pas';
const
fname = './persons/Name';
function reading_file_int(fnum: Integer): Integer;
var
curr_fname: String;
temp_entry: person;
begin
curr_fname := fname + int_to_str(fnum) + '.prs';
temp_entry := read_file(curr_fname);
graphictext(10, 20*fnum, 80, 'file' + int_to_str(fnum) + ': ' + curr_fname);
reading_file_int := temp_entry.number;
end;
var
i: Integer;
numsum, num: Integer;
nums: Array [0..3] of Integer;
begin
WriteLn;
numsum := 0;
init_graphics();
for i := 1 to 4 do
begin
num := reading_file_int(i);
nums[i-1] := num;
numsum := numsum + num;
end;
graphictext(10, 100, 80, ('sum: '+ int_to_str(numsum)));
drawrectnums(nums, 80);
ReadLn;
end.
Loading…
Cancel
Save