[Logo] Форум DL
  [DL]  Back to home page 
Forum Index ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2
Author Message
Dmitriy Logoyda

Topics: 0
Messages: 19

My Profile


Михаил Долинский:


Дмитрий Логойда:

Организация и функционирование ЭВМ (ПО2/ИТ2) - 2019
Оценка\Индивидуальные задания\Обязательные\Программирование на ассемблере (WInter)\Арифметические выражения\2 - "Задача №2" (5594)
http://dl.gsu.by/task.jsp?nid=1823701&cid=1120

Не получается сдать задачу. Думаю из-за того что в тесте опечатка. 


Конкретнее поясни свою мысль - докажи.

Решили: 323  
Думаю, вероятнее, что ошибка у тебя.
Но если будет твоё доказательство, проще будет понять, в чём именно ты ошибаешься
 


При прохождении этого теста в Winter он выдаёт:
[тест 4]: не объявлена переменная b.
С такой ошибкой ещё не сталкивался и поэтому думаю что опечатка в тесте (по ссылке выше скриншоты теста)
Mihail Dolinskiy

Topics: 1643
Messages: 39566

My Profile
В протоколе я вижу такую ошибку

17.04.2019 15:29:04 17.04.2019 15:29:09 Логойда Дмитрий Организация и функционирование ЭВМ (ПО2/ИТ2) - 2019 2. Задача №2 0 [test 4]: Тест не прошел: res sgn[2]: -2482. 2.i86 DelTA3 at NIT8
17.04.2019 15:22:27 17.04.2019 15:22:34 Логойда Дмитрий Организация и функционирование ЭВМ (ПО2/ИТ2) - 2019 2. Задача №2 0 [test 4]: Тест не прошел: res sgn[2]: -2482. 2.i86 DelTA3 at NIT5


Если у тебя такая ошибка,
[тест 4]: не объявлена переменная b.  

наверно ты не тот тест подключаешь или не к той программе.

Это твой исходник

	jmp	begin
a	dw	-1
b	dw	-1
c	db	-1
d	db	-1
RES	dw	9
begin:
	mov	ax,b
	cmp	ax,0
	jg	met1
	mov	al,c
	cbw
	cmp	ax,0
	jg	met1
	mov	ax,a
	imul	b
	mov	bx,ax
	mov	al,c
	cbw
	add	bx,ax
	mov	al,d
	cbw
	imul	bx
	mov	si,ax
	mov	al,d
	cbw
	imul	a
	mov	bx,ax
	mov	al,d
	cbw
	add	bx,ax
	mov	al,c
	cbw
	imul	bx
	sub	si,ax
	mov	ax,si
	cwd
	idiv	b
	mov	RES,ax
	jmp	halt
met1:
	mov	al,c
	cbw
	mov	bx,ax
	mov	ax,a
	cwd
	idiv	b
	cwd
	idiv	bx
	mov	si,ax
	mov	al,d
	imul	c
	mov	di,ax
	mov	al,d
	cbw
	cwd
	idiv	b
	sub	di,ax
	mov	ax,di
	imul	a
	add	si,ax
	mov	RES,si
	jmp	halt
halt:
	jmp	halt;$E


А это тест который ты должен подключить

Report = report.txt
StopOnError = true
Statistics = false
WatchReport = false
ShowReport = true

[test 1]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0


a dec[2]: 600
b dec[2]: 1
c sgn: -2
d sgn: -10

res dec[2]: 17700

[test 2]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0


a dec[2]: 3
b sgn[2]: -2
c dec: 3
d dec: 100

res dec[2]: 1050

[test 3]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0


a dec[2]: 100
b sgn[2]: -100
c dec: 0
d dec: 3

res sgn[2]: 300

[test 4]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0


a dec[2]: 500
b sgn[2]: -2
c sgn: -3
d dec: 10

res sgn[2]: -2482

[test 5]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0


a sgn[2]: 1000
b sgn[2]: 2
c sgn: 4
d sgn: 5

res sgn[2]: 18125

[test 6]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0


a sgn[2]: 100
b sgn[2]: 15
c sgn: -5
d sgn: 45

res sgn[2]: -22801

Mihail Dolinskiy

Topics: 1643
Messages: 39566

My Profile
А возможно ошибка появилась в результате выполнения первых трёх тестов.
Попробуй только 4-ый выполнить вручную.
Dmitriy Logoyda

Topics: 0
Messages: 19

My Profile


Михаил Долинский:

А возможно ошибка появилась в результате выполнения первых трёх тестов.
Попробуй только 4-ый выполнить вручную. 

А может быть такое, что тесты сбоят, ибо решаю следующую задачу (http://dl.gsu.by/task.jsp?nid=1823702&cid=1120) и снова не проходит 4 тест (тестовый файлы разные), там в тесте смещается D dec:20 (как я понял это должно быть с новой строки). В прошлой и этой задаче я прогнал вручную и всё вычисляет как нужно. Что с этим делать ?
/*******************
[тест 4]
Циклы = 1000
CheckCycles = false
Сегмент-0
Смещение-0


a dec[2]: 200
B dec[2]: 2
c dec: 10D dec: 20

res dec[2]: 1000
********************/
Mihail Dolinskiy

Topics: 1643
Messages: 39566

My Profile
Решили: 459  

И снова, вероятнее всего, ошибка у тебя.

Напиши на бумажке вычисления последовательно.
А потом также последовательно найди все эти ответы в своей программе.
Если не получается самому - надо попросить помощи у кого-то из одногруппников.
Ну или в понедельник на моих занятиях будем разбираться.
Dmitriy Logoyda

Topics: 0
Messages: 19

My Profile
Организация и функционирование ЭВМ (ПО2/ИТ2) - 2019
Оценка\Индивидуальные задания\Обязательные\Программирование на ассемблере (WInter)\Арифметические выражения\3 - "Задача №3" (5595)
http://dl.gsu.by/task.jsp?nid=1823702&cid=1120
отправил на проверку 22.4 14:02 3. Задача №3 0 / 100 [test 4]: Тест не прошел: res dec[2]: 1000. DelTA3 at NIT5 Winter i86
выгрузил тест, и тест также не прошло в Winter. Когда подставил значения вручную - ответ правильный
подставлял значения a=200 b=2 c=10 d=20 res=1000


[MD] Его решение можно взять здесь
22.04.2019 14:02:28 22.04.2019 14:02:33 Логойда Дмитрий Организация и функционирование ЭВМ (ПО2/ИТ2) - 2019 3. Задача №3 0 [test 4]: Тест не прошел: res dec[2]: 1000. 3.i86 DelTA3 at NIT5
Igor Korshunov

Topics: 6
Messages: 1537

My Profile


Дмитрий Логойда:

Организация и функционирование ЭВМ (ПО2/ИТ2) - 2019
Оценка\Индивидуальные задания\Обязательные\Программирование на ассемблере (WInter)\Арифметические выражения\3 - "Задача №3" (5595)
http://dl.gsu.by/task.jsp?nid=1823702&cid=1120
отправил на проверку 22.4 14:02 3. Задача №3 0 / 100 [test 4]: Тест не прошел: res dec[2]: 1000. DelTA3 at NIT5 Winter i86
выгрузил тест, и тест также не прошло в Winter. Когда подставил значения вручную - ответ правильный
подставлял значения a=200 b=2 c=10 d=20 res=1000


[MD] Его решение можно взять здесь
22.04.2019 14:02:28 22.04.2019 14:02:33 Логойда Дмитрий Организация и функционирование ЭВМ (ПО2/ИТ2) - 2019 3. Задача №3 0 [test 4]: Тест не прошел: res dec[2]: 1000. 3.i86 DelTA3 at NIT5
 

В самом начале программы:
begin:
	mov	al,d
	cbw
	mov	ax,b
	cmp	ax,bx
	jge	met1

b загружается в ax, хотя должно в bx.
В результате при выполнении сравнения используется неинициализированный регистр bx. После чего оператор перехода работает случайным образом.

Можно было несколько раз запустить тестирование и увидеть, что ошибка проявляется рандомно в разных тестах. Из чего сразу понятно, что в программе используются неинициализированные переменные.
Aleksandr Gorodkov

Topics: 0
Messages: 15

My Profile
Архитектура вычислительных систем (ПО4/ИТ3) - 2019
Контрольные срезы\24 октября\Программирование\Одномерные числовые массивы\27 - "Статистика" (58584)
http://dl.gsu.by/task.jsp?nid=1852315&cid=1145
Неплохо бы добавить в условие, что такое "выборочная неисправленная дисперсия".
Igor Korshunov

Topics: 6
Messages: 1537

My Profile


Александр Городков:

Архитектура вычислительных систем (ПО4/ИТ3) - 2019
Контрольные срезы\24 октября\Программирование\Одномерные числовые массивы\27 - "Статистика" (58584)
http://dl.gsu.by/task.jsp?nid=1852315&cid=1145
Неплохо бы добавить в условие, что такое "выборочная неисправленная дисперсия". 

Добавил.
Dmitriy Logoyda

Topics: 0
Messages: 19

My Profile
Задача Экзамен\Индивидуальные задания\Программирование микроконтроллеров\Цифры числа\10 - "Сумма цифр числа" 26553 Бондаловский Д.А., ПОИТ-26, февраль 2005
http://dl.gsu.by/task.jsp?nid=1844562&cid=1145
unsigned __in __bits(16)x;
unsigned __out __bits(8)y;

void main(){
  unsigned b = 0;
  unsigned a = x;
  unsigned mas[15];
  unsigned i = 0;
  while(a > 0){
    unsigned k = a % 10;
	mas[i] = k;
	i++;
	b++;
	a = a/10;
  }
  unsigned min = mas[0];
  unsigned max = mas[0];
  for (i = 0; i < b; i++){
    if (min > mas[i])min = mas[i];
	if (max < mas[i])max = mas[i];
  }
  y = max+min;
}


Не проходит [test3]
[test3]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0


x dec[2]: 0

y dec: 0


В Winter ответ даёт верный. Проверил все тесты, и везде верный ответ. Помогите понять в чём ошибка.
Igor Korshunov

Topics: 6
Messages: 1537

My Profile


Дмитрий Логойда:

Задача Экзамен\Индивидуальные задания\Программирование микроконтроллеров\Цифры числа\10 - "Сумма цифр числа" 26553 Бондаловский Д.А., ПОИТ-26, февраль 2005
http://dl.gsu.by/task.jsp?nid=1844562&cid=1145
unsigned __in __bits(16)x;
unsigned __out __bits(8)y;

void main(){
  unsigned b = 0;
  unsigned a = x;
  unsigned mas[15];
  unsigned i = 0;
  while(a > 0){
    unsigned k = a % 10;
	mas[i] = k;
	i++;
	b++;
	a = a/10;
  }
  unsigned min = mas[0];
  unsigned max = mas[0];
  for (i = 0; i < b; i++){
    if (min > mas[i])min = mas[i];
	if (max < mas[i])max = mas[i];
  }
  y = max+min;
}


Не проходит [test3]
[test3]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0


x dec[2]: 0

y dec: 0


В Winter ответ даёт верный. Проверил все тесты, и везде верный ответ. Помогите понять в чём ошибка. 


В случае x = 0 не происходит инициализации mas[0], соответственно минимальное и максимальное значение получаются случайными.
 
Forum Index ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2
Time:0,125