Ласло Краус |
ПЈМП Други парцијални испит 25. 7. 2000. |
---|
Citaj
у
безименом пакету која садржи заједничке методе за читање свих
стандардних типова података.Саставити на језику Java класу са главним програмом који преко главног улаза прочита податке о дређеном броју возила и после тога на главном излазу испише податке о возилима која могу да пређу преко моста задате носивости.
Саставити на симболичком машинском језику за IBM-PC главни програм који позива претходни потпрограм за један комплет података. Читање података и приказивање резултата довољно је назначити само у облику коментара.
// Vozilo.java - Apstraktna klasa vozila.
package Vozila;
import Citaj;
abstract public class Vozilo {
double sTezina;
public Vozilo () {}
public Vozilo (double sTez) { sTezina = sTez; }
public double ukTezina () { return sTezina; }
public void citaj () {
System.out.print ("Sopstvena tezina? ");
sTezina = Citaj.Double () ;
}
public String toString () { return "" + sTezina; }
}
// PVozilo.java - Klasa putnickih vozila.
package Vozila;
import Citaj;
public class PVozilo extends Vozilo {
int brPutnika;
double srTezina;
public PVozilo () {}
public PVozilo (double sTez, int brPut, double srTez) {
super (sTez);
brPutnika = brPut; srTezina = srTez;
}
public double ukTezina ()
{ return super.ukTezina () + brPutnika * srTezina; }
public void citaj () {
super.citaj ();
System.out.print ("Broj putnika? ");
brPutnika = Citaj.Int ();
System.out.print ("Srednja tezina putnika? ");
srTezina = Citaj.Double ();
}
public String toString () {
return "pVozilo (" + sTezina + "+" + brPutnika + "*" + srTezina +
"=" + ukTezina () + ")";
}
}
// TVozilo.java - Klasa teretnih vozila.
package Vozila;
import Citaj;
public class TVozilo extends Vozilo {
double tezTereta;
public TVozilo () {}
public TVozilo (double sTez, double tezTer)
{ super (sTez); tezTereta = tezTer; }
public double ukTezina ()
{ return super.ukTezina () + tezTereta; }
public void citaj () {
super.citaj ();
System.out.print ("Tezina tereta? ");
tezTereta = Citaj.Double ();
}
public String toString ()
{ return "tVozilo (" + sTezina + "+" + tezTereta+"="+ukTezina()+")"; }
}
// VozilaT.java - Ispitivanje klasa vozila.
import Vozila.*;
class VozilaT {
public static void main (String[] argi) {
Vozilo[] vozila = new Vozilo [100];
Vozilo vozilo = null;
int brVozila = 0;
while (true) {
System.out.print ("Vrsta vozila (P, T)? ");
switch (Citaj.Char()) {
case 'p': case 'P': vozilo = new PVozilo (); break;
case 't': case 'T': vozilo = new TVozilo (); break;
default : vozilo = null;
}
if (vozilo == null) break;
vozilo.citaj ();
vozila[brVozila++] = vozilo;
} while (vozilo != null);
System.out.print ("\nNosivost mosta? ");
double nosivost = Citaj.Double ();
System.out.print ("\nMogu da predju most:\n");
for (int i=0; i<brVozila; i++) {
if (vozila[i].ukTezina () <= nosivost)
System.out.println(" " + vozila[i]);
}
}
}
; izost.asm
; si == &A
; cx == n
prog segment para public 'code'
assume cs:prog
public izost
izost proc near;
jcxz kraj
push ax
push bx
push dx
push si
push di
mov di, si
mov bx, 33
opet: mov ax, [si]
test ax, 15
jz dalje
mov ax, [si]
cwd
idiv bx
cmp dx, 0
jz dalje
mov ax, [si]
mov [di], ax
add di, 2
dalje:add si, 2
loop opet
mov cx, di
pop di
pop si
pop dx
pop bx
pop ax
sub cx, si
shr cx, 1
kraj: ret
izost endp
prog ends
end
; izostt.asm
extrn izost:near
extrn exit_f:far
podat segment para public 'data'
a db 100 dup (?)
n dw ?
podat ends
prog segment para public 'code'
assume cs:prog, ds:podat
pocet:mov ax, podat;
mov ds, ax
mov es, ax
;;;; Citanje podataka.
mov si, offset a
mov cx, n
call radi
mov n, cx
;;;; Prikaz rezultata.
call exit_f
prog ends
stek segment para stack 'stack'
dw 64 dup (?)
stek ends
end pocet
; dodaj.asm
; void dodaj (char *a, char *b, short n);
; a += b;
dodaj_text segment para public 'code'
assume cs:dodaj_text
public _dodaj
a equ 6
b equ 8
n equ 10
_dodaj proc far
push bp
mov bp, sp
push si
push di
mov di, [bp].a
mov si, [bp].b
mov cx, [bp].n
clc
jcxz kraj
opet: mov al, [di]
adc al, [si]
cmp al, 9
jgt pren
clc
jmp dalje
pren: sub al, 10
stc
dalje:mov [di], al
inc si
inc di
loop opet
kraj: pop di
pop si
pop bp
ret
_dodaj endp
dodaj_text ends
end
(⇒ почетак)
Copyright © 2001, Laslo Kraus
Последња ревизија: 15.7.2001.