Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 11.01.2016
Сообщений: 87

Не считает сумму столбцов

29.03.2018, 11:25. Показов 1151. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь решить задачу , задаю произвольный массив двумерный (матрицу) , нужно подсчитать сумму столбцов по отдельности , не выходит . С вводом выводом разобрался.
Подкорректируйте в коде , считает только первый столбец , ?



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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
; Template for console application
 
         .586
 
         .MODEL  flat, stdcall
 
         OPTION CASEMAP:NONE
 
 
 
Include kernel32.inc
 
Include masm32.inc
 
 
 
IncludeLib kernel32.lib
 
IncludeLib masm32.lib
 
 
 
         .CONST
 
MsgExit  DB    "Press Enter to Exit",0AH,0DH,0
 
Msg1 DB "Vvedite A (stroki):",0AH,0DH,0
 
Msg2 DB "Vvedite B (stolbci):",0AH,0DH,0 
 
Msg3 DB "znachenie:",0AH,0DH,0     
 
Msg4 DB "Summa stolbcov "
 
         .DATA
 
 
 
               
 
resstr DB 16 DUP (' '),13,10,0
resstr2 DB 13,10,0
 
InpBuff DB 10 DUP ('0')
 
result SDWORD 0
 
 
 
         .DATA?
 
inbuf    DB    100 DUP (?)
 
A SDWORD   ?
 
B SDWORD   ?
 
D SDWORD ?
 
 
         .CODE
 
Start:
 
;    
 
;    Add you statements
 
;
 
 
;zanosim v A kol-vo strok
 
 
         Invoke StdOut,ADDR Msg1
 
         Invoke StdIn, ADDR InpBuff, lengthof InpBuff
 
         Invoke StripLF, ADDR InpBuff
 
         Invoke atol, ADDR InpBuff
 
         mov A, EAX
 
              
;zanosim v B kol-vo stolbcov
         Invoke StdOut,ADDR Msg2
 
         Invoke StdIn, ADDR InpBuff, lengthof InpBuff
 
         Invoke StripLF, ADDR InpBuff
 
         Invoke atol, ADDR InpBuff
 
         mov B, EAX
 
             
 
         mov ECX,A ;schetchik strok
         
         mov EBX, 0 ;obnulyaem EBX (index)
               
 
;cycle1 = perehod na sled.stroku
 
cycle1:  push ECX    ;zanosim v stek na hranenie kol-vo strok
 
         mov ECX, B  ;zanosim kol-vo stolbcov v schetchik
         
 
;cycle2 = vvod znacheniy yacheek dlya kazdoy stroki
 
cycle2:  push ECX ;zanosim v stek schetchik stolbcov tk pri vvode znacheniya yacheyki ECX portitsya
 
         
         ;v dannom bloke v EAX zapisivaem znachenie yacheyki
         Invoke StdOut,ADDR Msg3
 
         Invoke StdIn, ADDR InpBuff, lengthof InpBuff
 
         Invoke StripLF, ADDR InpBuff
 
         Invoke atol, ADDR InpBuff 
         
         
         mov D[EBX*4],EAX ;zapisivaem v massiv znachenie yacheyki, EBX*4 tk SDWORD
 
         
         inc EBX ;uvelichivaem index na 1
               
         pop ECX ;vitaskivaem iz steka schetchik stolbcov
                
 
         loop cycle2 ;kazdiy prohod cycla umenshaet ECX na 1
 
         pop ECX ;vitaskivaem schetchik dlya strok dlya cycle1
 
         loop cycle1 ;v cycle1 srazu umenshaem schetchik strok ECX na 1 
         
         Invoke StdOut,ADDR resstr2 ;resstr2 = vivod v konsol' s novoy stroki
 
 
;cycle3 = perehod na novuyu stroku v matrice
 
         mov ECX, A ;schetchik strok
        
         mov EBX, 0 ;obnulyaem EBX (index)
 
cycle3:  push ECX    ;zanosim v stek na hranenie kol-vo strok
 
         mov ECX, B  ;zanosim kol-vo stolbcov v schetchik
 
         Invoke StdOut,ADDR resstr2 ;resstr2 = vivod v konsol' s novoy stroki
 
         
;cycle4 = vivod yacheek stroki matrici na ekran
 
         mov ECX, B ;zapisivaem v schetchik ECX kol-vo stolbcov B
                
         
cycle4:  push ECX ;opyat' pryachem ECX chtobi ne povredit' v vivode StdOut
        
         Invoke dwtoa, D[EBX*4], ADDR result ;preobrazuem sdword v ascii u elementa D[i] i pishem v adres naprimer result
         
         Invoke StdOut, ADDR result ;vivodim result
         
         inc EBX ;uvelichivaem index
         
         pop ECX ;vitaskivaem schetchik chtobi umenshit na 1 v nachale sleduyushey iteracii
         
         loop cycle4 ;povtoryaem dlya vseh yacheek stroki
         
         
         pop ECX ;vitaskivaem schetchik dlya strok dlya cycle3
 
         
         loop cycle3 ;v cycle3 srazu umenshaem schetchik strok ECX na 1 
         
         Invoke StdOut,ADDR resstr2 ;resstr2 = vivod v konsol' s novoy stroki
         
         
;cycle5 = schitaem summu stolbcov
         
         mov ECX,A ; vnesni cikl proitis skolko strok 
cycle5:  push ECX                    
   
         mov ECX,B ;vnutrenii cikl skolko stolbcov 
         mov EBX, 0 ;obnulyaem index
         mov EAX, 0 ;obnulyaem vvod
         mov result, 0 ;obnulyaem resultat
         
cycle6:   push ECX
          mov EAX, D[EBX*4] ;zanosim v registr EAX element matrici D[i]*razmer_elementa
         
         add result, EAX ;summiruem resultat s registrom EAX
         
         add EBX, B ;pribavlyaem kol-vo stolbcov k indexu
         
         
         pop ECX 
         loop cycle6 ;povtoryaem vse prediduschie deystviya v cycle5
         pop ECX 
         loop cycle5
             
         Invoke StdOut,ADDR Msg4         
         Invoke dwtoa, result, ADDR result  ;preobrazuem result iz Sdword v ascii dlya vivoda v konsol'
         Invoke StdOut, ADDR result  ;vivodim result v konsol'
 
         Invoke StdOut,ADDR resstr2 ;resstr2 = vivod v konsol' s novoy stroki
 
         ;The End
         XOR    EAX,EAX
 
         Invoke StdOut,ADDR MsgExit
         Invoke StdIn,ADDR inbuf,LengthOf inbuf     
 
         Invoke ExitProcess,0
 
         End    Start
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.03.2018, 11:25
Ответы с готовыми решениями:

Не считает сумму столбцов в двухмерном массиве найдите ошибку
Вычислить разницу сумм элементов первой строки и последнего столбца матрицы действительных чисел размером 4x6 #include <stdio.h> ...

Запрос считает итоговую сумму по договору выполненных разных услуг, но повторяющиеся не считает
Есть запрос procedure TForm7.Button2Click(Sender: TObject); var i:integer; begin ...

В заданной матрице найти сумму первых N/2 столбцов и сумму последних N/2 столбцов (N - четное)
Дан двумерный массив a(n*n). Найти сумму первых N/2 столбцов и сумму последних N/2 столбцов (N - четное). Преобразовать в одномерный массив...

2
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
29.03.2018, 12:42
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

vinni81, примерно так:
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
;cycle5 = schitaem summu stolbcov
         mov ECX,B ; vnesni cikl proitis skolko stolbcov 
         mov EBX, 0 ;obnulyaem index
cycle5:   push ECX                    
      push EBX
      
         mov ECX,A ;vnutrenii cikl skolko strok
         mov result, 0 ;obnulyaem resultat
         
cycle6:   push ECX
         mov EAX, D[EBX*4] ;zanosim v registr EAX element matrici D[i]*razmer_elementa
         
         add result, EAX ;summiruem resultat s registrom EAX
         
         add EBX, B ;pribavlyaem kol-vo stolbcov k indexu
         pop ECX 
         loop cycle6 ;povtoryaem vse prediduschie deystviya v cycle5
 
         Invoke StdOut,ADDR Msg4         
         Invoke dwtoa, result, ADDR result  ;preobrazuem result iz Sdword v ascii dlya vivoda v konsol'
         Invoke StdOut, ADDR result  ;vivodim result v konsol'
         Invoke StdOut,ADDR resstr2 ;resstr2 = vivod v konsol' s novoy stroki
 
         pop EBX
       inc EBX
       pop ECX 
         loop cycle5
     
         ;The End
1
0 / 0 / 1
Регистрация: 11.01.2016
Сообщений: 87
29.03.2018, 13:14  [ТС]
Работает Сппасибо большое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.03.2018, 13:14
Помогаю со студенческими работами здесь

Нуэно посчитать сумму всех строк матрицы, у меня считает только сумму одной строки
void task_1(int **A, int M, int N) { int i, j,sum=0,m=0,n=0; //1.) 1.) сумму элементов в тех строках, которые содержат хотя бы...

не считает сумму
Добрый вечер. #include <iostream> #include <iomanip> #include <cmath> using namespace std; void min (int *m,int n) { int j;...

С null не считает сумму
Предположим есть таблица со столбцами: дата, знач1, знач2, знач3. Так получается, что иногда в знач3 записывается null. В таком...

Почему не считает сумму ?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //Для массива...

криво считает сумму
всё, кроме подсчёта суммы, работает правильно. need help! #include <stdio.h> #include <stdlib.h> #include <conio.h> ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru