Вопрос № 130252: Здраствуйте уважаемые эксперты помогите плиз написать программу , а то у меня ни как не получается
Написть программу которая во введенной строке с клавиатуры заменяет все цифры на пробелы. Длина строки 100 символов, в строке могут быть как цифры ...Вопрос № 130272: Доброго времени суток, Уважаемые!!!
У меня к Вам просьба, объясните мне, ПОЖАЛУЙСТА, (КАК МОЖНО ДОХОДЧИВЕЕ) как работает эта программа, которая производит чтение и сравнение системного времени по прерываниям от таймера, что это за цифры мы загруж...Вопрос № 130281: Последний заход по расстояние Левенштейна...
Задача след. сделать данный алг. на ассембере, или переделать, то я я написал на Паскале на ассемблер, вернее сделать просто вставки.
вот сам алг.
int LevenshteinDistance(char s[1..n], char t[1...Вопрос № 130304: Здравствуйте, уважаемые эксперты. При выполнении лабораторной работы столкнулся со следующей проблемой: не получается сделать переключение бита яркость фона/мерцание. Выкладываю код лабораторной полностью.
Заранее спасибо....
Вопрос № 130.252
Здраствуйте уважаемые эксперты помогите плиз написать программу , а то у меня ни как не получается
Написть программу которая во введенной строке с клавиатуры заменяет все цифры на пробелы. Длина строки 100 символов, в строке могут быть как цифры так и буквы. Заранее спс
Отправлен: 02.04.2008, 18:33
Вопрос задал: LNEOl (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, LNEOl!
Программа в приложении.
Команды компилятора:
TASM PROGR
TLINK PROGR / t
Удачи!
Приложение:
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Профессионал) Украина, Киев Тел.: +380958380164 Адрес: Украина г.Киев ---- Ответ отправлен: 02.04.2008, 20:05 Оценка за ответ: 4
Вопрос № 130.272
Доброго времени суток, Уважаемые!!!
У меня к Вам просьба, объясните мне, ПОЖАЛУЙСТА, (КАК МОЖНО ДОХОДЧИВЕЕ) как работает эта программа, которая производит чтение и сравнение системного времени по прерываниям от таймера, что это за цифры мы загружаем в регистры… . И напишите, ПОЖАЛУЙСТА, комментарии.
СПАСИБО!!!:-)
Отвечает: Airyashov
Здравствуйте, Alena De Lon!
Программа работает так получает адрес старого обработчика 08h
Перехватывает прерывание 08h своей подпрограммой new_08
Читает время из прараметров системы 40h:6Ch -лежит dword это счетчик таймера,
прибавляет к нему значение 18*2, 1 сек в тактах прерывания часов 08h, сохраняет это значение в переменной окончания времени time_end
затем устанавливает переменную flag в значение FFh
и выводит точку пока flag не 0
когда flag=0, выводит сообщение, востанавливает перехваченное прерывание и завершается
в обработчике прерывания 80h каждые 55мс усменьшается значение переменной flag
Ответ отправил: Airyashov (статус: 1-ый класс)
Ответ отправлен: 02.04.2008, 21:51
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Alena De Lon! В приложении программа с подро-о-обными комментариями :) Если останется что-то непонятное, милости просим в мини-форум. Да, если запустить программу под Windows, то увидим слишком много точек. Явно больше 18*2... Этого не стоит пугаться. Дело в том, что если программу запустить под чистым ДОС-ом, то увидим ожидаемый результат. Там программа полностью владеет всеми ресурсами и работает практически одна. Но под Windows программа работает, можно сказать, под эмулятором
ДОС-а, а он работает только тогда, когда ему выделится время! Отсюда значительные задержки... Удачи в освоении ассемблера...
Приложение:
--------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 03.04.2008, 10:28 Оценка за ответ: 5 Комментарий оценки: Игорь Витальевич, ОГРОМНОЕ СПАСИБО!!!:-) Буду теперь разбираться... . И Вам УДАЧИ!!!
Вопрос № 130.281
Последний заход по расстояние Левенштейна...
Задача след. сделать данный алг. на ассембере, или переделать, то я я написал на Паскале на ассемблер, вернее сделать просто вставки.
вот сам алг.
int LevenshteinDistance(char s[1..n], char t[1..m])
declare int d[0..n,0..m]
declare int i, j, cost
for i := 0 to n
d[i,0] := i
for j := 0 to m
d[0,j] := j
for i := 1 to n
for j := 1 to m
if s[i] = t[j] then cost := 0
else cost := 1
d[i,j] := minimum(d[i-1,j ] + 1, // insertion
d[i, j-1] + 1, // deletion
d[i-1,j-1] + cost) // substitution
return d[n,m]
Код на Паскале
const
cuthalf = 100; // константа, ограничивающая макс. длину
// обрабатываемых строк
var
buf: array[0..cuthalf * 2) - 1)] of integer; // рабочий буффер, заменяет
// матрицу, представленную
// в описании
function min3(a, b, c: integer): integer; // вспомогательная функция
begin
Result := a;
if b < Result then
Result := b;
if c < Result then
Result := c;
end;
// реализация функции в принципе соответствует описанию с одной оговоркой:
// матрица из описания заменена статическим буффером, длина которого
// равна удвоенной максимальной длине строк
// это сделано для 1) экономии памяти и во избежание её перераспределений
// 2) повышения быстродействия (у меня функция работает
// в обработчике onfilterRecord)
// таким образом, в реализации половинами буффера представлены только
// две последние строки матрицы, которые меняются местами каждую
// итерацию внешнего цикла (по i)... для определения того, какая из половин
// буффера является "нижней строкой", служит переменная flip
// т. е. при flip = false первая половина буффера является предпоследней
// строкой, а вторая - последней; при flip = true наоборот,
// первая половина - последняя строка, вторая половина - предпоследняя
function LeveDist(s, t: string): integer;
var
i, j, m, n: integer;
cost: integer;
flip: boolean;
begin
s := copy(s, 1, cuthalf - 1);
t := copy(t, 1, cuthalf - 1);
m := length(s);
n := length(t);
if m = 0 then
Result := n
else if n = 0 then
Result := m
else
begin
flip := false;
for i := 0 to n do
buf[i] := i;
for i := 1 to m do
begin
if flip then
buf[0] := i
else
buf[cuthalf] := i;
for j := 1 to n do
begin
if s[i] = t[j] then
cost := 0
else
cost := 1;
if flip then
buf[j] := min3buf[cuthalf + j] + 1),
(buf[j - 1] + 1),
(buf[cuthalf + j - 1] + cost
else
buf[cuthalf + j] := min3buf[j] + 1),
(buf[cuthalf + j - 1] + 1),
(buf[j - 1] + cost;
end;
flip := not flip;
end;
if flip then
Result := buf[cuthalf + n]
else
Result := buf[n];
end;
end;
П.С. Я переделал, но оно выдает неправильный результат вообще. Переделанный мною код в приложении
Ответ отправил: Trulala (статус: 1-ый класс)
Ответ отправлен: 04.04.2008, 20:53 Оценка за ответ: 5 Комментарий оценки: Большое спасибо за помощь
Вопрос № 130.304
Здравствуйте, уважаемые эксперты. При выполнении лабораторной работы столкнулся со следующей проблемой: не получается сделать переключение бита яркость фона/мерцание. Выкладываю код лабораторной полностью.
Заранее спасибо.
Приложение:
Отправлен: 03.04.2008, 00:29
Вопрос задал: Saidman (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)