You are on page 1of 5

UJIAN TENGAH SEMESTER

STRUKTUR DATA








Oleh
IRFAN RIZKI RACHMAN
NIM : J1A112023










PROGRAM UTS_1_Bubble_Sort;
USES CRT;
VAR
nim : ARRAY [1..100] OF STRING;
nama : ARRAY [1..100] OF STRING;
nilai : ARRAY [1..50] OF STRING;
n,i,j,bar,x : INTEGER;
min, temp : STRING;
LABEL INPUT,MENU,CETAK,SELESAI;
BEGIN

CLRSCR;

INPUT:
WRITE('Masukan jumlah data : ');
readln(n);
FOR i:= 1 TO n DO
BEGIN
clrscr;
Writeln('DATA KE- ',i:2);
Write('NIM : '); readln(nim[i]);
Write('Nama : '); readln(nama[i]);
Write('Nilai : '); readln(nilai[i]);
END;
GOTO CETAK;

MENU:
WRITELN('1) Sorting nama.');
WRITELN('2) Keluar.');

WRITE('pilihan: ');READLN(x);
case x of
1: begin
for i := n - 1 downto 1 do
for j := 1 to i do
if nama[j] > nama[j+1] then
begin
temp := nilai[j];
nilai[j] := nilai [j+1];
nilai[j+1] := temp;
temp := nim[j];
nim[j] := nim [j+1];
nim[j+1] := temp;
temp := nama[j];
nama[j] := nama [j+1];
nama[j+1] := temp;
end;
end;

2: begin
goto selesai;
end;
end;

CETAK:
clrscr;


gotoxy(5,1);write('NO');
gotoxy(9,1);write('NIM');
gotoxy(20,1);writeln('NAMA');
gotoxy(37,1);writeln('Nilai');

bar:=2;
FOR i:= 1 TO n DO
BEGIN
GOTOXY(5,bar); WRITELN(i:2);
GOTOXY(9,bar); WRITELN(nim[i]);
GOTOXY(20,bar); WRITELN(nama[i]);
GOTOXY(37,bar); WRITELN(nilai[i]);

bar:=bar+1;
END;

GOTO MENU;
SELESAI:
END.


Program UTS_1_Selection_Sort;

uses crt;
const

Nmaks = 100;

type

Mahasiswa = record
NIM : string[10];
Nama : string[20];
Nilai: string[2];
end;

var
Data : array[1..Nmaks] of Mahasiswa;
M : Mahasiswa;
i,j,N : integer;

procedure IsiData(var M:Mahasiswa; N:integer);

var
i:integer;

begin
for i := 1 to N do
begin
write('NIM Mahasiswa ke-',i,' = ');readln(Data[I].NIM);
write('Nama Mahasiswa ke-',i,' = ');readln(Data[I].Nama);
write('Nilai Mahasiswa ke-',i,' = ');readln(Data[I].Nilai);
writeln;
end;
end;

Procedure Selectionsort(var M:Mahasiswa; N:integer);
var I,J:integer;
imaks:integer;
begin

for I := N downto 2 do
Begin
imaks:=1 ;
for J := 2 to I do
begin
if Data[J].Nama > Data[imaks].Nama then
begin
imaks:=J;
end;
end;
M := Data[imaks];
Data[imaks]:= Data[I];
Data[I]:= M;
end;
end;

procedure HasilUrutan;
begin
writeln;
writeln('No NIM Nama Nilai');
for I := 1 to N do
begin
writeln(i:2,'|',Data[I].NIM:12,'|',Data[I].Nama:10,'|',Data[I].Nilai:20);
end;
end;

begin
clrscr;
write('Masukkan Jumlah Mahasiswa : ');readln(N);
writeln;
IsiData(M,N);
Selectionsort(M,N);
Clrscr;
writeln('Hasil Pengurutan;');
HasilUrutan;
readln;

end.


2.
program UTS2;
uses crt;
var
a:real;

function f(n:real):real;
begin
if (n<=3) then
f:=1
else f:= f(n-3)+f(n-2)+f(n-1);
end;

begin
clrscr;
write('Masukan nilainya berapa: ');readln(a);
writeln('Angka Tribollaci dari baris ke-',a:0:0,' adalah ',f(a):2:0);
readln;
end.


3.
program UTS_3;
uses crt;
var data:array[1..100] of real;
i,j,b,c,d: integer;
z,x,temp: real;

function f(n : integer):integer;
begin
if (n=1) then
f:=1
else f:=n*f(n-1);
end;

function g(o,p: integer):real;
begin
if (o=p) or (p=0) or (o<p) then
g:=1
else
g:=f(o)/(f(p) * f(o-p));
end;

begin
clrscr;

write('Pangkat? ');readln(b);

data[1]:=g(b,0);
for i:=1 to b do
begin
data[i+1]:=g(b,i);
end;

for i:=1 to b+1 do
begin
write(data[i]:6:0);
end;

writeln;
writeln('Angka paling besar adalah ');

for i:=1 to b do
begin
for j:=i+1 to b+1 do
begin
if data[i]<data[j] then
temp:=data[j];
end;
end;
write(temp:2:0);


readln;
end.

You might also like