Поиск:

Ответ в темуСоздание новой темы Создание опроса
> реализовать поиск, вывести человека продавшего больше всех  
:(
    Опции темы
Xdron
  Дата 12.3.2010, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 11.3.2010

Репутация: нет
Всего: 1



ребята, вот изночальный код который нужно как-то поменять...
условие: ФИО, количество отработанных дней, количество проданного товара.
реализовать поиск: вывести человека продавшего больше всех товара.
Код

prg segment para public 'code'
assume cs: prg,ss: prg,es: prg,ds: prg
org 100h
start: jmp go
worker struc
n db 30 dup(' ')
sex db ' '
a db ?
worker ends
mas worker <'Gurko Ivan $','м',3>,<'Solovei Ivan &','м',2>,<'Muha Vasilii $','м',4>,<'Petrova Elena $','ж',6>,<'Ivanova Marina ?','Ж',6>
go:
lea di,mas
mov cx,5
mov bl,'м'
m:
cmp [di].sex,bl
jne ml
lea dx,[di].n
mov ah,09h
int 21h
ml:add di, type worker
loop m
ret
prg ends 
end start

PM MAIL   Вверх
iff
Дата 13.3.2010, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 4
Всего: 16



Код

prg segment para public 'code'
assume cs: prg,ss: prg,es: prg,ds: prg
org 100h
start: jmp go
worker struc
n db 30 dup(' ')
sex db ' '
a db ?
worker ends
mas worker <'Gurko Ivan $','м',3>,<'Solovei Ivan $','м',2>,<'Muha Vasilii $','м',4>,<'Petrova Elena $','ж',6>,<'Ivanova Marina $','Ж',6>
go:
lea di,mas ;Поиск максимума
mov cx,5
m:
cmp [di].a,bl
jna ml
mov bl, [di].a
ml:add di, type worker
loop m
lea di,mas ;Вывод имен, с максимумом продаж
mov cx,5
mov ah,09h
print:
cmp [di].a,bl
jne next
lea dx,[di].n
int 21h
next: add di, type worker
loop print
ret
prg ends 
end start

Т.к. возможна ситуация такая, что сразу несколько человек могут иметь максимум продаж, то приходится находить максимальный элемент и осуществлять вывод раздельно (не в одном цикле, а в двух).
Замечание: для функции 09h прерывания 21h, нужно что-бы строка заканчивалась символом "$". У вас это не происходит:
mas worker <'Gurko Ivan $','м',3>,<'Solovei Ivan &','м',2>,<'Muha Vasilii $','м',4>,<'Petrova Elena $','ж',6>,<'Ivanova Marina ?','Ж',6>


Это сообщение отредактировал(а) iff - 13.3.2010, 13:06


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Mikl_
Дата 15.3.2010, 05:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 8
Всего: 14



iff, 
знаки $, & и ? означают что угодно (вероятно индекс продавца хотя хз), но не конец поля с фамилией, да и искать конец поля по знаку $ необязательно, так как длина строки указана явно при описании структуры и не может быть длиннее  30 символов 
worker struc
n db 30 dup(' ') <-- вот здесь
sex db ' '
a db ?
worker ends

PM MAIL   Вверх
iff
Дата 17.3.2010, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 4
Всего: 16



Вообще то я не ищу по символу доллара.
Просто обрати внемание на строки 18-20 кода из первого поста. Видешь, для вывода использована функция 9 прерывания 21.


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Mikl_
Дата 18.3.2010, 04:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 8
Всего: 14



iff, 
а это как ему показали так он и выводит -- 98% студентов самостоятельно не разбираются ни в чем smile 
PM MAIL   Вверх
iff
Дата 18.3.2010, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 4
Всего: 16



Не понял.

Добавлено через 43 секунды
Т.е. ты согласен, что нужно закончивать строки в данном примере символом $.


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Mikl_
Дата 19.3.2010, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 8
Всего: 14



iff, 
на int 21h свет клином не сошелся  smile -- можно строку вывести например так 
Код
; masm dos com #
.286
.model tiny
.code
org 100h
start:    mov ax,3;очистка экрана
    int 10h
    mov si,offset string; начало массива
    mov cx,len;количество элементов массива string
a0:    lodsb
    int 29h
    loop a0
    mov ah,0; жду нажатия на любую клавишу
    int 16h    
    retn; выхожу из программы
string db 'Hello, world!'
len = $-string
end start
 и символ '$' не нужен  smile 
PM MAIL   Вверх
iff
Дата 20.3.2010, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 4
Всего: 16



Ещё раз: я сделал замечание Xdron по его коду и отметил ему, что нужно либо ставить вконце знак доллора либо использовать другую функцию, другое прерывание, а то, что есть в первом посту будет работать некорректно. Вот и всё.


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.