program lab3_1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
const N=4 ;
type Tliczba=array[0..N-1] of 0..9;
var A,B,C:TLiczba;
i:integer;
function dod(a, b :Tliczba):Tliczba;
var suma,poz:integer;
begin
poz:=0;
for i:=0 to n-1 do
begin
suma:=A[i]+B[i]+poz;
if suma > 9 then
begin
suma:=suma-10;
poz:=1;
end
else poz:=0;
Result[i]:=suma;
end;
end;
function Pisz(c :TLiczba):Tliczba;
begin
for i:=N-1 downto 0 do write(C[i],' ');
end;
function CzytajA:TLiczba;
begin
for i:=0 to N-1 do
readln(Result[i]);
end;
function CzytajB:TLiczba;
begin
for i:=0 to N-1 do
readln(Result[i]);
end;
begin
Pisz( dod(CzytajA, CzytajB));
readln;
end.
program lab3_2;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
var
s,Xs:single;
r,Xr:real;
x,Xx:extended;
{$IFDEF WINDOWS}{$R lab3_2.rc}{$ENDIF}
begin
s:=1; Xs:=(s/2);
while Xs<>0 do
begin
s:=Xs;
Xs:=s/2;
end;
r:=1; Xr:=r/2;
while Xr<>0 do
begin
r:=Xr;
Xr:=r/2;
end;
X:=1; Xx:=x/2;
while Xx<>0 do
begin
X:=Xx;
Xx:=x/2;
end;
writeln(s,r,x);
readln;
end.
program DuzeZnaki;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
H = 5;
type
TZnak = array[1..H] of string;
TWzorZn = array ['A'..'Z'] of TZnak;
const
WzorZn :TWzorZn =(
(
(
‘ ## ‘,
‘# # ‘,
‘# # ‘,
‘#### ‘,
‘# # ‘
), (
………. Do Z
)
);
var
s :string;
a,b :integer;
begin
writeln('napis (duze litery):');
readln(s);
for a:=1 to length(s) do
if (((s[a]) < ('A')) OR ((s[a]) > ('Z'))) then s:='';
if s<>'' then
for b:=1 to H do
begin
for a:=1 to length(s) do
write(WzorZN[s[a],b]);
writeln('');
end;
write('Nacisnij ENTER...'); readln;
end.
program lab3_4;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
var a : integer;
function silnia(x : integer) : integer;
begin
if x=1 then silnia:=1
else silnia:=x*silnia(x-1);
end;
{$IFDEF WINDOWS}{$R lab3_4.rc}{$ENDIF}
begin
write('podaj liczbe: '); readln(a);
writeln('silnia wynosi: ', silnia(a));
readln;
end.
program lab3_5;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
var rzymska :string;
function cyfra(cyfra_rzymska:char):longint;
begin
case cyfra_rzymska of
'I','i' : Result:=1;
'V','v' : Result:=5;
'X','x' : Result:=10;
'L','l' : Result:=50;
'C','c' : Result:=100;
'D','d' : Result:=500;
'M','m' : Result:=1000;
else Result:=0;
end;
end;
function rzymska2arabska(liczba_rzymska:string):longint;
var i,akt,pop,wynik :LongInt;
begin
wynik:=0;
pop:=0;
for i:=length(liczba_rzymska) downto 1 do begin
akt:=cyfra(liczba_rzymska[i]);
if (akt=0) then writeln('Niepoprawna liczba!!!!');
if pop > akt then wynik:=wynik-akt
else wynik:=wynik+akt;
pop:=akt;
end;
Result:=wynik;
end;
{$IFDEF WINDOWS}{$R lab3_5.rc}{$ENDIF}
begin
write('Podaj liczbe rzymska:');
Readln(rzymska);
writeln(rzymska2arabska(rzymska));
readln;
end.
program lab3_6;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
type
TMiesiac=1..12;
TDzien =1..31;
TDzTyg =0..6;
const dt:array[0..6]of string[12]=('Niedziela','Poniedzialek','Wtorek', 'Sroda','Czwartek','Piatek','Sobota');
function przestepny(rok:longint):boolean;
begin
przestepny:=false;
if ((rok mod 400)=0) or (((rok mod 4)=0) and ((rok mod 100)<>0))
then przestepny:=true;
end;
function dni_mies(m:TMiesiac):TDzien;
begin
case m of
1,3,5,7,8,10,12 :Result:=31;
2 :Result:=28 ;
else Result:=30;
end;
end;
function dni_tyg(DzTyg:TdzTyg):string;
begin
case DzTyg of
0 : dni_tyg:='Niedziela';
1 : dni_tyg:='Poniedzialek';
2 : dni_tyg:='Wtorek';
3 : dni_tyg:='Sroda';
4 : dni_tyg:='Czwartek';
5 : dni_tyg:='Piatek';
6 : dni_tyg:='Sobota';
end;
End;
var r,dni,i :longint;
d: TDzien;
m:TMiesiac;
DzTyg: TDzTyg;
{$IFDEF WINDOWS}{$R lab3_6.rc}{$ENDIF}
begin
write('podaj rok=');readln(r);
write('podaj miesiac=');readln(m);
write('podaj dzien=');readln(d);
dni:=d;
for i:=1 to m-1 do dni:=dni+dni_mies(i);
if przestepny(r)and(m>2) then dni:=dni+1;
for i:=1800 to r-1 do if (przestepny(i)) then dni:=dni+366
else dni:=dni+365;
DzTyg:=(dni+2) mod 7;
writeln('To: ',dni_tyg(DzTyg));
readln;
end.