Professional Documents
Culture Documents
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.