0 / 0 / 0
Регистрация: 07.12.2009
Сообщений: 7

Распечатать N первых букв латинского алфавита

08.12.2009, 15:56. Показов 1849. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
как ето сделать??

Ввести целое число N (N<27). Распечатать в 1-ой строчке N первих больших букв лат. алфавита, в второй строчке N маленьких букв лат. алфавита
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.12.2009, 15:56
Ответы с готовыми решениями:

Номера букв, не являющихся буквами латинского алфавита
Для заданной строки с нулевым завершителем определить номера букв не являющихся буквами латинского алфавита. Только начинаю знакомится с...

Определить номер столбца, в котором больше всего букв латинского алфавита
Нужна помощь, задача такова: Определить номер столбца, в котором больше всего букв латинского алфавита. Если поможете буду очень...

Вывод латинского алфавита реверсно
Привет всем. Нужна помощь по написанию программы для вывода латинского алфавита реверсно(т.е. от последней буквы к первой). Причем сначала...

15
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
08.12.2009, 21:00
А что трудного напечатать N символов начиная с 'A' и 'a' ?
0
0 / 0 / 0
Регистрация: 07.12.2009
Сообщений: 7
08.12.2009, 21:30  [ТС]
Цитата Сообщение от Goodwin98 Посмотреть сообщение
А что трудного напечатать N символов начиная с 'A' и 'a' ?
оно компилирует и много ошибок. Немогу понять где. А если все ОК то печатает всякую ерунду(((
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
08.12.2009, 21:46
И где же это "оно" ? Покажите его.
0
0 / 0 / 0
Регистрация: 07.12.2009
Сообщений: 7
08.12.2009, 21:56  [ТС]
Цитата Сообщение от Andriy_08 Посмотреть сообщение
оно компилирует и много ошибок. Немогу понять где. А если все ОК то печатает всякую ерунду(((
заработало!!!)) я перепутал параметри))
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
08.12.2009, 21:57
Ну выложите для потомков
0
0 / 0 / 0
Регистрация: 07.12.2009
Сообщений: 7
08.12.2009, 22:14  [ТС]
Цитата Сообщение от Goodwin98 Посмотреть сообщение
Ну выложите для потомков
ok)))
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
16.07.2014, 19:18
ну, я тебя опереДЮ. единственное, что можно доработать код для цифр меньших 10, чтобы для них можно было вводить только одну цифру. а так всегда нужно будет набирать две цифры (т.е. для 0 - 00, для 1 - 01, для 2 - 02 и т.д.)

Assembler
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
.model small
.386
 
.data
     db 'Bebin Of Data$'        
mes1 db  'Enter Digit N (N<27):  $'
mes2 db  'Digit Greater Than 27  $'
     db 'End Of Data$'
    
.stack
    db  0FFh
    
.code
start:
    mov ax,@data
    mov ds,ax
    
    mov ah,09h
    lea dx,mes1
    int 21h
    
    mov ah,01h
    int 21h
    xor al,30h
    
    xor ch,ch
    mov cl,0Ah
    mul cl
    mov cl,al
    
    mov ah,01h
    int 21h
    xor al,30h
    
    add cl,al
    
    cmp cl,1Bh
    jge big
    
    test cl,cl
    je exit
    
    mov ah,02h
    mov dl,0Ah
    int 21h
    
    mov dl,0Dh
    int 21h
    
    push cx
    mov dl,40h
    mini:
        mov ah,02h
        inc dl
        int 21h
    loop mini
    
    mov ah,02h
    mov dl,0Ah
    int 21h
    
    mov dl,0Dh
    int 21h
    
    pop cx
    mov dl,60h
    mana:
        mov ah,02h
        inc dl
        int 21h
    loop mana
    jmp exit
    
    big:
    mov ah,09h
    lea dx,mes2
    int 21h 
    
    exit:
    mov ah,4Ch
    int 21h
end start
0
4178 / 1827 / 219
Регистрация: 06.10.2010
Сообщений: 4,113
17.07.2014, 13:35
Через int 29 будет короче.
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
17.07.2014, 18:18
Дык, как-то так:
Assembler
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
;FASM
    org 100h
start:  mov dx, msg
    mov ah,9
    int 21h
    mov bx,[zero]
    call    getc
    jz  start
    mov bl,al
    call    getc
    jz  @F
    xchg    bh,bl
    mov bl,al
@@: mov ax,bx
    sub ax,[zero]
    aad
    mov cx,ax
    jcxz    start
    cmp al, 27
    jae start
    push    cx
    mov bl,41h
    call    chrs
    mov bl,61h
    pop cx
    call    chrs
    ret
chrs:   call    crlf
        mov al,bl
@@: int 29h
    inc al
    loop    @B
    ret
getc:   xor ax,ax
    int 16h
    cmp ah, 1Ch     ; <CR>?
    jz  @F
    cmp ah,0Bh
    ja  getc
    int 29h
@@: ret
crlf:   mov ax,[msg]
    int 29h
    xchg    ah,al
    int 29h
    ret
zero:   db  '00'
msg:    db  0Dh,0Ah,'Enter N (N<27):$'
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
18.07.2014, 02:30
Charles Kludge,
Практически работает (не считая двух чисел). только вот с числами 10 и 20 происходит облом. выводит по 1 и 2ум символам соответственно. думаю, что причина в команде jz @F (строка 11). в getc мы можем нажать enter или какую-нибудь цифру (если нажали не цифру нас возвратят снова на ввод цифры). ZF поднимается только когда мы нажимаем enter или вводим 0. если число состоит из двух разрядов и второй раз мы набрали ноль, то установится ZF. (и не произойдет обмена регистров bh с bl с добавлением в bl al) и тем самым помещения в регистр bx правильного значения, т.к. при возврате произойдет переход на следующую метку. так что корректным будет вариант сравнения только со скан кодом Enter (1Ch). если условие подтверждается, тогда вот и переходим на метку (ведь у нас будет однозначное число).

И еще один момент. по-моему строка 18 без толку jcxz start. для перехода на эту метку мы должны два раза вызывая getc набирать 0. но введя один раз 0 программа сразу перейдет уже на метку start и не даст больше ничего вводить (строка 8 говорит нам об этом).

переделал вот с исправлениями для tasm'a. может кому-нибудь удобнее этот диалект.

Assembler
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
.model small
.386
 
.data
zero   db  '00'
msg    db  0Dh,0Ah,'Enter N (N<27): $'
 
.stack 
       db 0FFh
 
.code
start: 
    mov ax,@data
    mov ds,ax
 
    mov ah,09h
    mov dx,offset msg
    int 21h
    
    mov bx,word ptr [zero]
    call getc
    jz  start
    
    mov bl,al
    call getc
    
    cmp ah,1Ch
    jz a
    
    xchg bh,bl
    mov bl,al
    
    a:
    mov ax,bx
    sub ax,word ptr[zero]
    aad
    
    mov cx,ax
    
    cmp al,27
    jae start
    
    push cx
    mov bl,41h
    call chrs
    mov bl,61h
    pop cx
    call chrs
    
    jmp start
    
    mov ah,4Ch
    mov al,00h
    int 21h
 
chrs proc   
    call crlf
    mov al,bl
    b: 
    int 29h
    inc al
    loop b
    ret
chrs endp
    
getc proc 
    xor ax,ax
    int 16h
    
    ;1Ch - скан-код Enter
    cmp ah,1Ch
    jz c
    
    ;0Bh - скан-код 0
    ;проверка введена ли цифра
    ;если да - вывесть ее на экран
    ;если нет - заново на ввод цифры
    cmp ah,0Bh
    ja getc
    int 29h
    
    c: 
    ret
getc endp
 
crlf proc   
    mov ax,word ptr[msg]
    int 29h
    
    xchg ah,al
    int 29h
    ret
crlf endp
 
end start
0
4178 / 1827 / 219
Регистрация: 06.10.2010
Сообщений: 4,113
18.07.2014, 07:07
FASM
Assembler
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
org 100h
    mov ax,3
    int 10h
    mov dx,text
    mov ah,10
    int 21h
 
    movzx ecx,[text+1]
    mov   [text+ecx+2],'0'
    shl   ecx,3
    ror   word[text+2],cl
    movzx eax,[text+2]
    movzx ecx,[text+3]
    lea   ecx,[ecx+eax*8]
    lea   ecx,[ecx+eax*2-'0'*11]
 
    les   di,[videomem]
    mov   ax,0700h+'A'
    mov   dx,0700h+'a'
    @@:mov   [es:di+160],dx
       stosw
       inc   al
       inc   dl
    loop @b
 
    ret
 
videomem dd $B80000A0
text     db 3
         rb 3
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
18.07.2014, 14:37
Цитата Сообщение от proc3nt Посмотреть сообщение
Практически работает (не считая двух чисел).
Ну, бывает. Жарко — голова плохо варит. А решение - 2 строчки:
Assembler
1
2
    cmp ah,0Ch
    jae getc
Цитата Сообщение от proc3nt Посмотреть сообщение
И еще один момент. по-моему строка 18 без толку jcxz start.
Это защита от дурака/foolproof. После изменений 2 нуля вводить можно.
1
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
18.07.2014, 16:15
Цитата Сообщение от Charles Kludge Посмотреть сообщение
А решение - 2 строчки
в таком случае дополнительно еще нужно проводить сравнение с 0 при возвращении из getc. ведь получив ноль в
результате и перейдя в chrs один раз цикл все равно пройдет до команды loop. затем команда loop отнимет единицу от нуля и в cx окажется число 0FFh. Тем самым цикл пойдет еще 0FFh и будет что-то выводить (не только буквы). так что нужны две проверки - не равен ли нулю и небольше/равно ли 27.

Assembler
1
2
3
4
5
    test cx,cx
    je start
    
    cmp al,27
    jae start
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
18.07.2014, 16:20
Цитата Сообщение от proc3nt Посмотреть сообщение
test cx,cx
je start
Это и делает jcxz start.
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
18.07.2014, 16:34
виноват. просто я до этого стер уже jcxz start. и работал с кодом без этой инструкции.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.07.2014, 16:34
Помогаю со студенческими работами здесь

Выделить на экране зеленым цветом все буквы латинского алфавита
Нужна помощь, сам написать не в состоянии( Выделить на экране зеленым цветом все буквы латинского алфавита. Спасибо заранее

Вывести на экран прописные буквы латинского алфавита (цикл без LOOP)
Написать программу, которая выводит на экран прописные буквы латинского алфавита, для этого организовать цикл, не используя команду LOOP.

Заменить все буквенные символы латинского алфавита в исходной строке на символ, введенный с клавиатуры
Написать программу, заменяющую все буквенные символы латинского алфавита в исходной строке на символ, введенный с клавиатуры. Вывести на...

Преобразовать символьную строку заданной длины, изменив все прописные буквы латинского алфавита на знак %
Преобразовать символьную строку заданной длины, изменив все прописные буквы латинского алфавита на знак %.

Определить, каких букв русского алфавита нет в строке
Здравствуйте, помогите пожалуйста! Нужно определить каких букв русского алфавита нет в строке!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
Реализация конвейеров машинного обучения с Python и Scikit-learn
AI_Generated 23.04.2025
Мир данных вокруг нас растёт с каждым днём, и умение эффективно обрабатывать информацию стало необходимым навыком. Специалисты по машинному обучению ежедневно сталкиваются с задачами предобработки. . .
Контроллеры Kubernetes Ingress: Сравнительный анализ
Mr. Docker 23.04.2025
В Kubernetes управление входящим трафиком представляет собой одну из ключевых задач при построении масштабируемых и отказоустойчивых приложений. Ingress — это API-объект, который служит вратами. . .
Оптимизация кода Python с Cython и Numba
py-thonny 23.04.2025
Python прочно обосновался в топе языков программирования благодаря своей простоте и гибкости. Разработчики любят его за читабельность кода и богатую экосистему библиотек. Но у этой медали есть и. . .
Микросервис на Python с FastAPI и Docker
ArchitectMsa 23.04.2025
В эпоху облачных вычислений и растущей сложности программных продуктов классическая монолитная архитектура всё чаще уступает место новым подходам. Микросервисная архитектура становится фаворитом. . .
Создаем веб-приложение на Vue.js и Laravel
Reangularity 23.04.2025
Выбор правильного технологического стека определяет успех веб-проекта. Laravel и Vue. js формируют отличную комбинацию для создания современных приложений. Laravel — это PHP-фреймворк с элегантным. . .
Максимальная производительность C#: Span<T> и Memory<T>
stackOverflow 22.04.2025
Мир высоконагруженных приложений безжалостен к неэффективному коду. Каждая миллисекунда на счету, каждый выделенный байт памяти может стать причиной падения производительности. Разработчики на C#. . .
JWT аутентификация в Java
Javaican 21.04.2025
JWT (JSON Web Token) представляет собой открытый стандарт (RFC 7519), который определяет компактный и самодостаточный способ передачи информации между сторонами в виде JSON-объекта. Эта информация. . .
Спринты Agile: Планирование, выполнение, ревью и ретроспектива
EggHead 21.04.2025
Спринты — сердцевина Agile-методологии, позволяющая командам создавать работающий продукт итерационно, с постоянной проверкой гипотез и адаптацией к изменениям. В основе концепции спринтов лежит. . .
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров
Programma_Boinc 21.04.2025
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров. 3 марта 2025 года, в результате обобщенного поиска простых чисел Ферма в PrimeGrid был найден. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru