Archiwum na sierpień 30th, 2007

Polecenie
Przykład sortowania przez wstawienie rekordów.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
PROGRAM tablica;
USES CRT;
CONST
N = 3;
TYPE
PRACOWNIK = RECORD
NAZWISKO: STRING;
PLACA: REAL;
END;
 
VAR
BAZA : Array[1..N] of PRACOWNIK;
{POM: PRACOWNIK;}
p, i : BYTE;
BEGIN
CLRSCR;
WRITELN('BAZA DANYCH');
FOR i := 1 TO N DO
BEGIN
WRITE('Nazwisko: ');READLN(BAZA[i].NAZWISKO);
WRITE('Placa: ');READLN(BAZA[i].PLACA);
END;
TEXTCOLOR(YELLOW);
WRITELN('Sortowanie wstawienie z wartownikiem:');
TEXTCOLOR(WHITE);
 
FOR i:=2 TO N DO
  BEGIN
   BAZA[0] := BAZA[i];
   p := i -1;
  WHILE BAZA[0].NAZWISKO < BAZA[p].NAZWISKO DO
   BEGIN
    BAZA[p+1] := BAZA[p];
    p := p-1;
   END;
   BAZA[p+1] := BAZA[0];
   END;
     WRITELN('Posortowane:');
      FOR i := 1 TO N DO
       WRITELN('Pracownik [',BAZA[i].NAZWISKO,'] zarabia: ', BAZA[i].PLACA:5:2, ' zl');
      WRITELN('Pacnij buttona aby wyjsc...');
      READKEY;
   END.

Comments Brak komentarzy »

Polecenie
Wylosować elementy do tablicy prostokątnej X na Y. Obliczyć sumę wszystkich elementów dodatnich, ujemnych i zliczyć ile ich jest. Zliczyć ile jest elementów równych zero. Na koniec zapytać czy powtórzyć całość, dopuszczalne znaki to T/t/n/N. Program zabezpieczyć hasłem.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
PROGRAM macierz;
USES crt;
CONST
X=5;
Y=2;
VAR
t: ARRAY[1..X,1..Y] OF Integer;
ix, iy, id,iu,sd, su, sz :integer;
pass : string;
k :char;
BEGIN
 
CLRSCR;
 REPEAT
  WRITELN('Podaj haslo:');
  READLN(pass);
 UNTIL pass = 'lol';
 
REPEAT 
 RANDOMIZE;
 FOR iy:=1 TO Y DO
  FOR ix:=1 TO X DO
  	t[ix,iy]:=RANDOM(9)-RANDOM(4);
	iu:=0;
	id:=0;
	sz:=0;
	su:=0;
	sd:=0;	
FOR iy:=1 TO Y DO
  FOR ix:=1 TO X DO
  BEGIN
  IF t[ix,iy] >= 0 THEN
   BEGIN
    IF t[ix,iy] > 0 THEN
     	BEGIN
    	sd:=sd+1;
	id:=id+t[ix,iy];
	END
    ELSE
     sz:=sz+1;
   END
   ELSE
   BEGIN
    su:=su+1;
    iu:=iu+t[ix,iy];
    END;
  WRITE(t[ix,iy],', ');
  END;
  WRITELN;
  WRITELN('Ilosc dodatnich: ',sd,'. Ich suma: ',id);
  WRITELN('Ilosc zer: ',sz);
  WRITELN('Ilosc ujemnych: ', su,'. Ich suma: ',iu);
 WRITELN;
 REPEAT
  WRITELN('Kontynuowac T/N? ');
  k:=UPCASE(READKEY());
   IF (k <> 'N') AND (k <> 'T') THEN
    WRITELN('Zly klawisz!');
   UNTIL (k='N') OR (k='T');
  UNTIL (k='N') ;
   END.

Comments Brak komentarzy »

Polecenie
Wczytaj początek przedziału i jego koniec. Wyświetl liczby z przedziału za pomocą pętli FOR, UNTIL, WHILE:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
PROGRAM przedzial;
USES CRT;
VAR
a,b,i:integer;
BEGIN
CLRSCR;
REPEAT
WRITELN('Podaj poczatek przedzialu: ');
READLN(a);
WRITELN('Podaj koniec przedzialu: ');
READLN(b);
 IF a>=b THEN
  WRITELN('Poczatek musi byc < od konca!');
UNTIL b>a;
 
WRITELN('Petla FOR:');
FOR i:=b DOWNTO a DO
WRITELN(i);
i:=b;
WRITELN('Petla REPEAT:');
REPEAT
  WRITELN(i);
  i:=i-1;
UNTIL i<a ;
i:=b;
WRITELN('Petla WHILE:');
WHILE i>=a DO
 BEGIN
  WRITELN(i);
  i:=i-1;
 END;
END.</a>

Comments Brak komentarzy »

Kilka zadanek z Asemblera - rozwiązujemy je na ćwiczeniach z UTK i AK.

Zadanie 1:

1
2
3
4
5
6
7
8
9
10
       LXI B, CD22
       MOV A, B
LOOP:  ADD A, B
       JC LOOP
       MOV L, A
       MVI H, AC
       INX H
       SPHL
       PUSH B
       XTHL

Odpowiedzi:

HL=CD22
SP=ACCD
BC=CD22
A=CE
CY=0
[SP]=CF
[SP+1]=AC

Zadanie 2:

1
2
3
4
5
6
7
8
9
10
11
       MVI A, 99
       LXI H, 0EAF
       MOV M, A
       LXI D, 9FFF
       MOV E, L
       INX H
       MOV C, L
LOOP:  INR C
       JZ LOOP
       MOV L, C
       MOV M, A

Odpowiedzi:

HL=0EB1
A=99
DE=9FAF
C=B1
CY=0
[0EB1]=99
[0EAF]=99

Kolokwium - grupa A:

1
2
3
4
5
6
7
LXI H, EDCB            HL=EDCB
MVI B, 02              B=02
MOV A, B               A=02
ADD A                  A=04
ORA B                  A=06
MOV H, A               HL=06CB
MOV M,H                M(HL)=06

Kolokwium - grupa B:

1
2
3
4
5
6
7
LXI H, AAEE            HL=AAEE
MVI C,11               C=11
MOV A,C                A=11
ORA C                  A=11
ADD A                  A=22
MOV L,A                HL=AA22
MOV M,L                M(HL)=22

Egzamin z 2006:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
POCZ  ANI A
      MVI A, 35        A=35
      LXI H            HL=0EEF
      MOV M, A         0EFF=35
      LXI D, 0FFF      DE=0FFF
      XCHG             HL=0FFF, DE=0EEF
      INX H            HL=1000
      MOV C, L         C=00
LOOP  INR C            C=01,C=02,C=03
      JPO LOOP         C=01,C=02,C=03
      MOV L, C         HL=1003
      MOV M, A         [1003]=35
      XCGH             DE=1003, HL=0EEF
      LDAX D           A=35
      RAL              A=6A
      ORA M            A=7F
      STAX D           [1003]=7F
      XRA L            A=80
      ANI 0C           A=00
SKOK  RAR              A=00, CY=0
      RAR              A=00, CY=0
      ADI FE           A=FE
      JZ SKOK
      NOP

Egzamin - 2007:

1
2
3
4
5
6
7
8
9
      LXI B, ABDC      BC=ABDC
      MVI A, B         A=AB
LOOP  ABB A, B
      JC LOOP          A=AC
      MOV L, A         L=AC
      MVI H, BC        HL=BCAC
      INX H            HL=BCAD
      SPHL             SP=BCAD
      PUSH B           SP-1=[BCAC]=AB, SP-2=[BCAB]=DC, SP=BCAB

Comments Brak komentarzy »

(c) 2007 by Michał Terbert