Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

В матрице D[1..N.1..M] максимальный элемент заменить средним арифметическим элементов строки в которой находится максимальный элемент.

B матрице A[1..N,1..M] упорядочить элементы столбца. содержащего наибольшее количество отрицательных чисел, по убыванию. | В массиве C[1..N] все элементы, больше среднего арифметического положительных чисел, заменить на первое положительное значение массива. | Подсчитать количество предложений. Расставить предложения по возрастанию количества слов в каждом | Определить среднее арифметическое четных элементов, лежащих после максимального значения в массиве D[I..N]. Все нечетные рассортировать по возрастанию. | Создать массив М[ 1 ..N]. Определить минимальное значение среди первых N DIV 2 чисел. Максимальное всего массива заменить в массиве на это минимальное значение. | Определить, сколько нулей лежит между минимальным и максимальным значениями массива H[1..N]. До и после экстремумов массив отсортировать по убыванию. | В массиве Z[1..N] определить сумму нечетных чисел от последнего нулевого значения до Z[N] и среднее арифм. четных до последнего нуля. | Дан массив из 40 символов, содержащий слова, разделенные одним пробелом. Определить, сколько раз каждое слово встречается в этом массиве. | В массиве A[1..15] определить минимальное значение. Все числа, лежащие за минимальным записать в новый массив В и определить в нем среднее арифметическое положительных чисел. |


Читайте также:
  1. B матрице A[1..N,1..M] упорядочить элементы столбца. содержащего наибольшее количество отрицательных чисел, по убыванию.
  2. II.Игра «Спор животных»с элементами драматизации — продолжение русской народной сказки «Хвосты».
  3. Pound;Логическая роль отдельных минеральных элементов_________________
  4. quot;Никогда не хватает времени, чтобы сделать хорошо, однако всегда находится время, чтобы переделать заново". Джим Мескимен, режиссер
  5. Quot;Талант - это способность человека оригинально решать банальные задачи; способность, которая проявляется, когда человек находится в диапазоне нормы".
  6. А е В (А является элементом классаВ).
  7. Агиографические элементы, преобладающие в конце повести, не разрушают цельности ее содержания, основанного на художественном вымысле.

Uses crt;

const n=5; {5 строк}

m=10; {по 10 чисел}

type mytype = array [1..n, 1..m] of integer;

var a: mytype;

i,j,k: integer;

 

procedure work(var a:mytype; i,j:integer);

external;

 

Begin

Randomize;

clrscr;

{Заполнение матрицы}

for i:=1 to n do begin

for j:=1 to m do begin

k:=random (20);

a[i,j]:= k;

write (a[i,j]:4);

end;

writeln;

end;

writeln;

work (a, n, m);

writeln;

{Вывод матрицы}

for i:=1 to n do begin

for j:=1 to m do begin

write (a[i,j]:4);

end;

writeln;

end;

readkey;

End.

 

.286

public work

data segment public

matr dw?;Адресс матрицы

numcol dw?;Кол-во столбцов

numrow dw?;Кол-во строк

matrlen dw?;Длина матрицы в байтах

posmax dw?;Номер обрабатываемой строки

posmaxr dw Кол-во столбцов

mov numcol, ax; сохранить в переменной

mov bx,[bp+6];Кол-во строк

mov numrow, bx; записать в перемнную

mul bx;Умножить кол-во строк на кол-во столбцов

mov matrlen,ax; получим длину матрицы в байтах

mov si,[bp+8];Адрес начала матрицы

mov matr, si; запишем в переменную

mov posmax, 0;Максимум - первый элемент

 

mov dx, [si];Тут будет храниться максимум

mov cx, matrlen;Длина матрицы (кол-во чисел, а не байт)

xor bx, bx;Начало матрицы

cycl101: mov ax, bx[si];Взять число

cmp ax, dx;Сравнить с максимумом

jle nomemo;Если больше, то...

mov dx, ax; запомнить новый максимум

mov posmax, bx; и его позицию

nomemo: add bx, 2;Перейти к след. числу

loop cycl101

;Теперь в DX максимум, а в maxpos его смещение от начала матрицы

 

;Преобразование смещения в номер строки

xor dx,dx;Очистка DX (для деления д.б. пусто)

mov ax,posmax;Смещение

shr ax, 1;Разделить на 2 (в integer 2 байта)

div numcol;Делим на кол-во столбцов

;в АХ получим номер строки

;в DX получим номер столбца (не нужен)

mov posmaxr, ax;Запомним номер строки

;Теперь знаем номер нужной строки

 

;Нужно найти среднее арифметическое строки

xor dx,dx;Накопитель

mov si, matr;Начало матрицы

mov ax, numcol;Кол-во столбцов

shl ax, 1;Умножаем на 2, получаем длину строки в байтах

mov bx, posmaxr;Берем номер строки

mul bx;Умножаем на длину строки,

; получаем смещение строки от начала матрицы

add si, ax;Добавляем смещение к адресу матрицы

xor bx, bx;Начинаем с первого числа строки

mov cx, numcol;Количество чисел в строке

cycl201: mov ax, bx[si];Берем число

add dx, ax;Добавляем в накопитель

add bx, 2;Переходим к след. числу

loop cycl201

;Теперь DX содержит сумму все чисел строки с максимумом

 

;Запишем среднее арифметическое на место максимума

mov ax, dx;Сумму пишем в AX (для деления)

xor dx, dx;Очищаем DX (для деления)

mov bx, numcol;Кол-во чисел в строке

div bx;Получаем ср. арифм.

mov bx, posmax;Смещение до максимума от начала матрицы

mov si, matr;Начало матрицы

mov bx[si], ax;Пишем ср. арифм. по адресу+смещение

 

popa

pop bp

ret 10

work endp

code ends

end

 

 

Дан массив из 40 символов, содержащий слова, разделенные одним пробелом. Найти самое длинное симметричное слово.

 

{$L laba4.obj}

program laba4;

uses crt;

type text=array[1..256]of char;

var enter:string; {массив символов, вводимых с клавы}

out:text; {массив выводимых слов}

i,word:integer;

dlina1,dlina2:integer; {длины первоначального и выводимого массивов}

kol:integer; {кол-во нужных слов}

{------------------------------}

procedure slova(var word:integer;

var enter:string;

var out:text;

dlina1:integer;

var dlina2:integer;

var kol:integer);

external;

{------------------------------}

BEGIN

clrscr;

writeln('Вводите текст: ');

readln(enter);

dlina1:=length(enter);

slova(word,enter,out,dlina1,dlina2,kol);

writeln('Кол-во слов в тексте: ',word);

if kol=0 then writeln('Таких слов в тексте нет.')

else

begin

writeln('Найденные слова: ');

for i:=1 to dlina2 do

write(out[i]);

writeln;

write('Количество слов: ',kol);

end;

readkey;

Writeln(' (c) & (p) Dzhambula-44 Eagle Soft Production 2001');

END.

 

.286;использование инструкций 286 процессора

public slova

data segment byte public

assume ds:data

kol dw 0;число слов, читаемых в обе стороны

slov dw 0;число всех слов текста

data ends

code segment byte public

assume cs:code

slova proc near

push bp

mov bp,sp

pusha;сохраняем регистры в стек

;------проверка текста и подсчет слов

lds si,[bp+18];адрес введенного текста

mov cx,[bp+12];длина введенного текста

cmp cx,0;проверяем, были ли символы в массиве ENTER

je exit;если символов нет, то выход из программы

xor bx,bx;обнулили для длины текущего слова

xor dx,dx;обнулили для длины массива OUT

inc si;встаем на первый символ в строке

cycl1: mov al,[si]

cmp al,' '

je met11;если пробел

cmp al,','

je met11;если запятая

cmp al,'.'

je met11;если точка

jmp met1;если буква, то идем на подсчет букв и переадресацию

met11: inc slov;подсчитали слово

;------проверяем, можно ли читать слово в обе стороны

push cx;сохранили сх для нового цикла

mov cx,bx;кол-во букв в слове

cmp cx,1;если слово из 1 буквы, то оно читается в обе стороны

je metb;его сразу отправляем в OUT

shr cx,1;проверяем одну половину слова с другой

push si;сохранили si

mov di,si

sub di,bx;встали на начало слова

dec si;встали на конец слова

cycl2: mov al,[si];сравнение букв с начала и с конца слова

cmp al,[di]

jne met2;если какая-либо буква не совпала, то выход

dec si;иначе переадресация на 1 букву назад с конца

inc di;и на 1 букву вперед с начала слова

loop cycl2

jmp meta

exit: jmp met4;на выход из программы - вместо дальней метки met4

meta: pop si;встали на следующую букву после слова

metb: inc kol;подсчитали слово, читаемое в обе стороны

;------записываем слово в массив OUT

lds di,[bp+14];в di - адрес массива слов OUT

add di,dx;добавили смещение до следующего слова

mov cx,bx;кол-во букв в слове

push si

dec si;встали на последнюю букву слова

cycl3: mov al,[si]

mov [di],al;записываем слово в массив OUT

dec si

inc di

inc dx;счетчик символов в массиве OUT

loop cycl3

mov al,' ';переслали пробел

mov [di],al

inc dx;для пробела

met2: pop si

pop cx;вспомнили сх для внешнего цикла

xor bx,bx;обнулили для следующего слова

jmp met3;на переадресацию

met1: inc bx;счетчик букв

met3: inc si

mov al,[si]

loop cycl1

;------проверяем последний символ,если он - не признак конца слова, то

;------нужно подсчитать последнее слово и проверить его на признак

mov al,[si]

cmp al,' '

je met4

inc slov;считаем слово

;------проверка на совпадение

mov cx,bx;длина последнего слова

cmp cx,1

je metc

shr cx,1;счетчик цикла - нужно проверить половину букв слова

push si

mov di,si

sub di,bx;встали на начало слова

dec si

cmp cx,0;чтобы не зациклился цикл4

jne cycl4

inc cx;если слово из 1 буквы, то cycl4 выполнится 1 раз

cycl4: mov al,[si]

cmp al,[di]

jne met5;если какая-либо буква не совпала, то выход

dec si

inc di

loop cycl4

metc: inc kol;подсчитали слово, читаемое в обе стороны

lds di,[bp+14]

add di,dx;добавили смещение до следующего слова

pop si

mov cx,bx

push si

dec si

cycl5: mov al,[si]

mov [di],al;записываем слово в массив OUT

dec si

inc di

inc dx;счетчик символов в массиве OUT

loop cycl5

mov al,' '

mov [di],al

inc dx;для пробела

met5: pop si

;--------------отправляем в паскаль

met4: lds si,[bp+22]

mov bx,slov

mov [si],bx;отправили общее кол-во слов

lds si,[bp+4]

mov bx,kol

mov [si],bx;отправили кол-во слов, читаемых в обе стороны

lds si,[bp+8]

mov [si],dx;отправили кол-во символов массива OUT

;-----------------------------------

popa

pop bp

ret

slova endp

code ends

end


Дата добавления: 2015-08-02; просмотров: 170 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Определить средн. арифм. положительных чисел, лежащих после минимального значения в массиве B[1..N]. Числа до минимального рассортировать по возрастанию.| О понятии философии

mybiblioteka.su - 2015-2024 год. (0.019 сек.)