Var i: integer; begin for i:=1 to 9 do write(i); writeln(10); for i:=0 to 8 do write(i); writeln(9); for i:=1 to 2 do write('0'); for i:=1 to 7 do write(i); writeln('8'); for i:=1 to 3 do write('0'); for i:=1 to 6 do write(i); writeln('7'); for i:=1 to 4 do write('0'); for i:=1 to 5 do write(i); writeln('6'); for i:=1 to 5 do write('0'); for i:=1 to 4 do write(i); writeln(5); for i:=1 to 6 do write('0'); for i:=1 to 3 do write(i); writeln('4'); for i:=1 to 7 do write('0'); for i:=1 to 2 do write(i); writeln(3); for i:=1 to 8 do write('0'); write('1');writeln('2'); for i:=1 to 9 do write('0'); writeln(1); end.
Как сделать более кратко не знаю. Но эта программа работает.
var i, j, n: integer; a: array[1..nn, 1..nn] of integer;
begin writeln('Задайте размер матрицы n'); readln(n); if n > nn then writeln('Вы превысили допустимый размер матрицы 20') else begin writeln('Матрица-результат'); for i := 1 to n do begin writeln; for j := 1 to n do begin if i < j then a[i, j] := 1 else if i = j then a[i, j] := 2 else a[i, j] := 3; write(a[i, j]:2) end; end; writeln end end.
.data
conTitle DB "Counting of separate int in array", 0
mesl DB "Array: ", 0
len_mesl EQU $-mesl
mes2 DB Odh, Oah, "Number = ", 0
len_mes2 EQU $-mes2
mes3 DB Odh, Oah, "Found times = ", 0
len mes3 EQU $-mes3
charBuf DB ", 0
len charBuf DD $-charBuf
iarray DD • -9, 3, -5, 2,
larray EQU ($-iarray)/4
lpFmt DB "%d", 0
cnt DD 0
num DD • -5
readBuf DB
lenReadBuf DD 1
hStdln DD 0
hStdOut DD 0
chrsRead DD 0
chrsWritten DD 0
STD_INP_HNDL DD • -10
STD OUTP HNDL DD • -11
.code
start:
call AiiocConsoie
test EAX, EAX
j z ex
push offset conTitle
call SetConsoleTitleA
test EAX, EAX
j z ex
call getout_hndl
call getinp_hndl
push EBX
mov EBX, offset mesl
mov ECX, len_mesl
call write_con
pop EBX
mov ESI, offset iarray
mov ECX, larray
show_next:
push ESI
push ЕСХ
push DWORD PTR [ESI]
push offset lpFmt
push offset charBuf
call wsprintf
add ESP, 12
push EBX
mov EBX, offset charBuf
mov ECX, len_charBuf
call write_con
pop EBX
call clear_buf
pop ECX
pop ESI
add ESI, 4
loop show_next
push EBX
mov EBX, offset mes2
mov ECX, len_mes2
call write_con
pop EBX
push DWORD PTR num
push offset lpFmt
push offset charBuf
call wsprintf
add ESP, 12
push EBX
mov EBX, offset charBuf
mov ECX, len_charBuf
call write_con
pop EBX
; подсчитать, сколько раз встречается элемент в массиве
mov DWORD PTR cnt, О
lea ESI, iarray
mov ECX, larray
f init
; загрузка исходного числа в вершину стека сопроцессора
fild DWORD PTR num
next_cmp:
ficom DWORD PTR [ESI]
fstsw AX
sahf
jne skip
; если значение в вершине стека равно элементу массива,
; увеличить содержимое счетчика
inc cnt
skip:
add ESI, 4
loop next_cmp
; преобразовать результат подсчета в строку
push DWORD PTR cnt
push offset lpFmt
push offset charBuf
call wsprintf
add ESP, 12
push EBX
mov EBX, offset mes3
mov ECX, len_mes3
call write_con
pop EBX
push EBX
mov EBX, offset charBuf
mov ECX, len_charBuf
call write_con
pop EBX
call clear buf
Объяснение: