[Logo] Форум DL
  [DL]  На главную страницу 
Индекс форума ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2, 3, ... 19, 20, 21, 22, 23, ... 26, 27, 28
Автор Сообщение
Яна Ясиновская

Темы: 0
Сообщений: 26

Мой профиль


Яна Ясиновская:

Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2021
Командные олимпиады\Микропрограммирование на С-МПА\Контрольный срез (Пример 1)\Проектирование\ПА - "Memory" (53757)
http://dl.gsu.by/task.jsp?nid=2027974&cid=1230

01.unsigned __in __bits(1) A;
02.unsigned __in __bits(1) B;
03.unsigned __in __bits(1) C;
04.unsigned __in __bits(1) D;
05.unsigned __in __bits(1) E;
06.unsigned __in __bits(1) F;
07. 
08.unsigned __out __bits(1) Q;
09. 
10.unsigned __bits(1) pamat;
11. 
12. 
13.void main()
14.{
15.    if((A + B + C + D + E + F) % 2 == 0) pamat = 0;
16.    else if(((A + B + C + D + E + F) % 2 != 0) && ((A + B + C + D + E + F) > 3)) pamat = D;
17.    Q = pamat;
18.}

Ошибка: Несовпадение Q:0=1 [10 ns]
01.unsigned __in __bits(1) A;
02.unsigned __in __bits(1) B;
03.unsigned __in __bits(1) C;
04.unsigned __in __bits(1) D;
05.unsigned __in __bits(1) E;
06.unsigned __in __bits(1) F;
07. 
08.unsigned __out __bits(1) Q;
09. 
10.unsigned __bits(1) pamat;
11. 
12. 
13.void main()
14.{
15.    if((A + B + C + D + E + F) % 2 == 0) pamat = 0;
16.    else if(((A + B + C + D + E + F) % 2 != 0) || ((A + B + C + D + E + F) > 3)) pamat = D;
17.    Q = pamat;
18.}

Ошибка: Несовпадение Q:0=1 [20 ns]


01.unsigned __in __bits(1) A;
02.unsigned __in __bits(1) B;
03.unsigned __in __bits(1) C;
04.unsigned __in __bits(1) D;
05.unsigned __in __bits(1) E;
06.unsigned __in __bits(1) F;
07. 
08.unsigned __out __bits(1) Q;
09. 
10.unsigned __bits(1) pamat;
11. 
12. 
13.void main()
14.{
15.    int sum = A + B + C + D + E + F;
16.    if((sum % 2) == 0) pamat = 0;
17.    else if(sum > 3) pamat = D;
18.    Q = pamat;
19.}

Ошибка: Несовпадение Q:0=1 [10 ns]

01.unsigned __in __bits(1) A;
02.unsigned __in __bits(1) B;
03.unsigned __in __bits(1) C;
04.unsigned __in __bits(1) D;
05.unsigned __in __bits(1) E;
06.unsigned __in __bits(1) F;
07. 
08.unsigned __out __bits(1) Q;
09. 
10.unsigned __bits(1) pamat;
11. 
12. 
13.void main()
14.{
15.    unsigned __bits(1) TA;
16.    unsigned __bits(1) TB;
17.    unsigned __bits(1) TC;
18.    unsigned __bits(1) TD;
19.    unsigned __bits(1) TE;
20.    unsigned __bits(1) TF;
21.    unsigned __bits(3) sum = TA + TB + TC + TD + TE + TF;
22.    if((sum % 2) == 0) pamat = 0;
23.    else if(sum > 3) pamat = TD;
24.    Q = pamat;
25.}

Для значений TA=1 , TB = 1, TC = 1, TD = 1, TE = 1, TF = 1 sum = 2


01.unsigned __in __bits(1) A;
02.unsigned __in __bits(1) B;
03.unsigned __in __bits(1) C;
04.unsigned __in __bits(1) D;
05.unsigned __in __bits(1) E;
06.unsigned __in __bits(1) F;
07. 
08.unsigned __out __bits(1) Q;
09. 
10.unsigned __bits(1) pamat;
11. 
12. 
13.void main()
14.{
15.    unsigned __bits(1) TA;
16.    unsigned __bits(1) TB;
17.    unsigned __bits(1) TC;
18.    unsigned __bits(1) TD;
19.    unsigned __bits(1) TE;
20.    unsigned __bits(1) TF;
21.    unsigned __bits(3) sum;
22.    sum = TA ;
23.    sum += TB;
24.    sum += TC;
25.    sum += TD;
26.    sum += TE;
27.    sum += TF;
28.    if((sum % 2) == 0) pamat = 0;
29.    else if(sum > 3) pamat = TD;
30.    Q = pamat;
31.}

  
   A B C D E F   Q 
 1 0 0 0 0 0 0   0
 2 1 1 1 1 1 1   0
 3 1 1 1 1 0 0   0
 4 1 0 1 0 1 1   0
 5 1 0 1 0 0 0   0
 6 1 1 1 0 1 1   0
 7 1 1 1 1 0 1   1
 8 0 1 1 1 1 1   1
 9 0 0 1 0 1 1   1

01.unsigned __in __bits(1) A;
02.unsigned __in __bits(1) B;
03.unsigned __in __bits(1) C;
04.unsigned __in __bits(1) D;
05.unsigned __in __bits(1) E;
06.unsigned __in __bits(1) F;
07. 
08.unsigned __out __bits(1) Q;
09. 
10.unsigned __bits(1) pamat;
11. 
12. 
13.void main()
14.{
15.    unsigned __bits(1) TA;
16.    unsigned __bits(1) TB;
17.    unsigned __bits(1) TC;
18.    unsigned __bits(1) TD;
19.    unsigned __bits(1) TE;
20.    unsigned __bits(1) TF;
21.    unsigned __bits(3) sum;
22.    sum = TA ;
23.    sum += TB;
24.    sum += TC;
25.    sum += TD;
26.    sum += TE;
27.    sum += TF;
28.    if((sum % 2) == 0) pamat = 0;
29.    else if(sum > 3) pamat = TD;
30.    Q = pamat;
31.}

РЕШЕНИЕ ПРОШЛО!!!
В winter правильный ответ, добавила в окно переменные ,сделала новую папку, туда отправила свой проект, сгенерировала 



01.unsigned __in __bits(1) A;
02.unsigned __in __bits(1) B;
03.unsigned __in __bits(1) C;
04.unsigned __in __bits(1) D;
05.unsigned __in __bits(1) E;
06.unsigned __in __bits(1) F;
07. 
08.unsigned __out __bits(1) Q;
09. 
10.unsigned __bits(1) pamat;
11. 
12. 
13.void main()
14.{
15.    unsigned __bits(3) sum;
16.    sum = A ;
17.    sum += B;
18.    sum += C;
19.    sum += D;
20.    sum += E;
21.    sum += F;
22.    if((sum % 2) == 0) pamat = 0;
23.    else if(sum > 3) pamat = D;
24.    Q = pamat;
25.}

Убрала временные переменные - решение не прошло


01.unsigned __in __bits(1) A;
02.unsigned __in __bits(1) B;
03.unsigned __in __bits(1) C;
04.unsigned __in __bits(1) D;
05.unsigned __in __bits(1) E;
06.unsigned __in __bits(1) F;
07. 
08.unsigned __out __bits(1) Q;
09. 
10.unsigned __bits(1) pamat;
11. 
12. 
13.void main()
14.{
15. 
16.    unsigned __bits(1) TA;
17.    unsigned __bits(1) TB;
18.    unsigned __bits(1) TC;
19.    unsigned __bits(1) TD;
20.    unsigned __bits(1) TE;
21.    unsigned __bits(1) TF;
22.    TA = A; TB = B; TC = C; TD = D; TE = E; TF = F;
23.    unsigned __bits(3) sum;
24.    sum = TA;
25.    sum += TB;
26.    sum += TC;
27.    sum += TD;
28.    sum += TE;
29.    sum += TF;
30.    if((sum % 2) == 0) pamat = 0;
31.    else if(sum > 3) pamat = TD;
32.    Q = pamat;
33.}

ЭТО ПРОШЛО
Игорь Коршунов

Темы: 7
Сообщений: 2198

Мой профиль


Яна Ясиновская:

Убрала временные переменные - решение не прошло


01.unsigned __in __bits(1) A;
02.unsigned __in __bits(1) B;
03.unsigned __in __bits(1) C;
04.unsigned __in __bits(1) D;
05.unsigned __in __bits(1) E;
06.unsigned __in __bits(1) F;
07. 
08.unsigned __out __bits(1) Q;
09. 
10.unsigned __bits(1) pamat;
11. 
12. 
13.void main()
14.{
15. 
16.    unsigned __bits(1) TA;
17.    unsigned __bits(1) TB;
18.    unsigned __bits(1) TC;
19.    unsigned __bits(1) TD;
20.    unsigned __bits(1) TE;
21.    unsigned __bits(1) TF;
22.    TA = A; TB = B; TC = C; TD = D; TE = E; TF = F;
23.    unsigned __bits(3) sum;
24.    sum = TA;
25.    sum += TB;
26.    sum += TC;
27.    sum += TD;
28.    sum += TE;
29.    sum += TF;
30.    if((sum % 2) == 0) pamat = 0;
31.    else if(sum > 3) pamat = TD;
32.    Q = pamat;
33.}

ЭТО ПРОШЛО 


Для задач с памятью нужно сохранять входные данные во временные переменные в самом начале программы. Без этого память может быть испорчена.
Например, мы просуммировали A+B+C и в это время изменились входные данные. Далее мы добавляем D+E+F из нового теста к числу A+B+C из старого теста. Получаем случайное число, из-за которого можем записать в память неверное значение.

Ссылка из первого сообщения темы:

http://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=57446#57446
Дарья Самусева

Темы: 0
Сообщений: 4

Мой профиль
http://dl.gsu.by/task.jsp?nid=2027979&cid=1230

Командные олимпиады\Микропрограммирование на С-МПА\Контрольный срез (Пример 1)\Программирование\ЦЧ - "Работа с числом"

В этой задаче в условии указана переменная А, компилятор требует переменную а: "[1]: Не объявлена переменная a. "
Игорь Коршунов

Темы: 7
Сообщений: 2198

Мой профиль


Дарья Самусева:

http://dl.gsu.by/task.jsp?nid=2027979&cid=1230

Командные олимпиады\Микропрограммирование на С-МПА\Контрольный срез (Пример 1)\Программирование\ЦЧ - "Работа с числом"

В этой задаче в условии указана переменная А, компилятор требует переменную а: "[1]: Не объявлена переменная a. " 


Вот отправленная на тестирование программа:
unsigned __bits(8) b[20];
unsigned __out __bits(8) kol;

void main(){
  unsigned __bits(8) i;
  unsigned __bits(8) s=0;
  for (i=0;	i<20; i++)
    if (b[i]<4)
	  s++;
  kol=s;

}

Это явно решение какой-то другой задачи. В этой программе просто нет переменной А.
Даниил Коханов

Темы: 1
Сообщений: 17

Мой профиль
Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2022
Экзамен\Контроль практики\Проектирование\3\HLCCAD-Plus\1 - "4-битный знаковый компаратор на ЛЭ" (129590)
http://dl.gsu.by/task.jsp?nid=2248846&cid=1282

01.int __in __bits(4) X = 0;
02.int __in __bits(4) Y = -8;
03.unsigned __out __bits(1) B;
04.unsigned __out __bits(1) M;
05.unsigned __out __bits(1) R;
06. 
07. 
08. 
09.void main() {
10.  if(X == Y) {
11.    R = 1;
12.  } else{
13.      R = 0;
14.    }
15. 
16.  if(X > Y) {
17.    B = 1;
18.  } else{
19.      B = 0;
20.    }
21. 
22.  if(X < Y) {
23.    M = 1;
24.  } else{
25.      M = 0;
26.    }
27.   
28.}


В программе получили правильный ответ, но сгенерированный hlсcad проект не проходит

30.9 14:33 1. 4-битный знаковый компаратор на ЛЭ 0 / 100 Ошибка: Несовпадение B:0=1 [3 ns] DelTA3 at NIT0 HLCCAD project
Максим Кадетов

Темы: 0
Сообщений: 6

Мой профиль
Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2022
Экзамен\Контроль практики\Проектирование\3\HLCCAD\5 - "Сравнение двух сумм" (41751)
http://dl.gsu.by/task.jsp?nid=2248839&cid=1282

01.unsigned __in __bits(4) a_1;
02.unsigned __in __bits(4) a_2;
03.unsigned __in __bits(1) a_3;
04.unsigned __in __bits(4) b_1;
05.unsigned __in __bits(4) b_2;
06.unsigned __in __bits(1) b_3;
07. 
08.unsigned __out __bits(1) cmp1;
09.unsigned __out __bits(1) cmp2;
10.unsigned __out __bits(1) cmp3;
11. 
12.void main() {
13.    unsigned __in __bits(5) sum1 = a_1 + a_2 + a_3;
14.    unsigned __in __bits(5) sum2 = b_1 + b_2 + b_3;
15.    unsigned __bits(1) ccmp1;
16.    unsigned __bits(1) ccmp2;
17.    unsigned __bits(1) ccmp3;
18. 
19.    if (sum1 > sum2) {
20.        ccmp1 = 1;
21.        ccmp2 = 0;
22.        ccmp3 = 0;
23.    }
24.    else
25.        if (sum1 == sum2) {
26.            ccmp1 = 0;
27.            ccmp2 = 1;
28.            ccmp3 = 0;
29.        }
30.        else {
31.            ccmp1 = 0;
32.            ccmp2 = 0;
33.            ccmp3 = 1;
34.        }
35. 
36.    cmp1 = ccmp1;
37.    cmp2 = ccmp2;
38.    cmp3 = ccmp3;
39.}


Микропрограмма выдаёт правильный ответ, а сгенерированный HLCCAD-проект не принимается.

30.9 15:25 5. Сравнение двух сумм 0 / 100 Ошибка: Несовпадение cmp1:0=1 [5,004 ps] DelTA3 at NIT8 HLCCAD project
Игорь Коршунов

Темы: 7
Сообщений: 2198

Мой профиль


Максим Кадетов:

Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2022
Экзамен\Контроль практики\Проектирование\3\HLCCAD\5 - "Сравнение двух сумм" (41751)
http://dl.gsu.by/task.jsp?nid=2248839&cid=1282

unsigned __in __bits(4) a_1;
unsigned __in __bits(4) a_2;
unsigned __in __bits(1) a_3;
unsigned __in __bits(4) b_1;
unsigned __in __bits(4) b_2;
unsigned __in __bits(1) b_3;

unsigned __out __bits(1) cmp1;
unsigned __out __bits(1) cmp2;
unsigned __out __bits(1) cmp3;

void main() {
	unsigned __in __bits(5) sum1 = a_1 + a_2 + a_3;
	unsigned __in __bits(5) sum2 = b_1 + b_2 + b_3;
	unsigned __bits(1) ccmp1;
	unsigned __bits(1) ccmp2;
	unsigned __bits(1) ccmp3;

	if (sum1 > sum2) {
		ccmp1 = 1;
		ccmp2 = 0;
		ccmp3 = 0;
	}
	else
		if (sum1 == sum2) {
			ccmp1 = 0;
			ccmp2 = 1;
			ccmp3 = 0;
		}
		else {
			ccmp1 = 0;
			ccmp2 = 0;
			ccmp3 = 1;
		}

	cmp1 = ccmp1;
	cmp2 = ccmp2;
	cmp3 = ccmp3;
}


Микропрограмма выдаёт правильный ответ, а сгенерированный HLCCAD-проект не принимается.

30.9 15:25 5. Сравнение двух сумм 0 / 100 Ошибка: Несовпадение cmp1:0=1 [5,004 ps] DelTA3 at NIT8 HLCCAD project  

sum1 и sum2 объявлены как входные контакты, __in нужно убрать.
Игорь Коршунов

Темы: 7
Сообщений: 2198

Мой профиль


Даниил Коханов:

Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2022
Экзамен\Контроль практики\Проектирование\3\HLCCAD-Plus\1 - "4-битный знаковый компаратор на ЛЭ" (129590)
http://dl.gsu.by/task.jsp?nid=2248846&cid=1282

01.int __in __bits(4) X = 0;
02.int __in __bits(4) Y = -8;
03.unsigned __out __bits(1) B;
04.unsigned __out __bits(1) M;
05.unsigned __out __bits(1) R;
06. 
07. 
08. 
09.void main() {
10.  if(X == Y) {
11.    R = 1;
12.  } else{
13.      R = 0;
14.    }
15. 
16.  if(X > Y) {
17.    B = 1;
18.  } else{
19.      B = 0;
20.    }
21. 
22.  if(X < Y) {
23.    M = 1;
24.  } else{
25.      M = 0;
26.    }
27.   
28.}


В программе получили правильный ответ, но сгенерированный hlсcad проект не проходит

30.9 14:33 1. 4-битный знаковый компаратор на ЛЭ 0 / 100 Ошибка: Несовпадение B:0=1 [3 ns] DelTA3 at NIT0 HLCCAD project  

Эта программа правильная, сгенерированная схема прошла все тесты.
Возможно, ты сдавал схему сгенерированную не по этой программе.
Анна Гладкова

Темы: 0
Сообщений: 5

Мой профиль
Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2022
Экзамен\Контроль практики\Проектирование\4\Проектирование в HLCCAD\2 - "Дробь" (39297)
http://dl.gsu.by/task.jsp?nid=2248863&cid=1282

01.unsigned __in __bits(1) in_3;
02.unsigned __in __bits(1) in_2;
03.unsigned __in __bits(1) in_1;
04.unsigned __in __bits(1) in_0;
05. 
06.unsigned __out __bits(1) out_3;
07.unsigned __out __bits(1) out_2;
08.unsigned __out __bits(1) out_1;
09.unsigned __out __bits(1) out_0;
10. 
11.void main() {
12.  unsigned __bits(1) x1, x2, x3, x4, nx1, nx2, nx3, nx4;
13.  x1 = in_3;  nx1 = ~in_3;
14.  x2 = in_2;  nx2 = ~in_2;
15.  x3 = in_1;  nx3 = ~in_1;
16.  x4 = in_0;  nx4 = ~in_0;
17.  out_3 = x1 & x2;
18.  out_2 = x1 & nx2 | nx1 & x2 & x3;
19.  out_1 = nx1 & x2 & nx3 | x1 & nx2 & x4 | x1 & nx2 & x3 | x3 & x4 & x1 | x3 & x4 & nx2;
20.  out_0 = nx1 & nx3 & x4 | nx1 & nx2 & x3 & nx4 | x1 & x2 & x3 & nx4 | x1 & nx2 & nx3 & nx4 | x1 &nx2 & x3 & x4;
21.}

Роман Мицура

Темы: 0
Сообщений: 9

Мой профиль
01.unsigned __in __bits(8) A = 255;
02.unsigned __in __bits(8) B = 157;
03.unsigned __in __bits(8) C = 0;
04.unsigned __in __bits(8) D = 148;
05. 
06.unsigned __out __bits(8) E;
07. 
08.void main(){
09.    int k1,k2,k3,k4;
10.    int sred,sred1;
11.    sred = A;
12.    sred = sred + B;
13.    sred = sred + C;
14.    sred = sred + D;
15.    sred = sred/4;
16.    sred1 = (A+B+C+D)/4;
17.    k1 = A - sred;
18.    k2 = B - sred;
19.    k3 = C - sred;
20.    k4 = D - sred;
21.    if(k1<0)
22.      k1 = k1*(-1);
23.    if(k2<0)
24.      k2 = k2*(-1);
25.    if(k3<0)
26.      k3 = k3*(-1);
27.    if(k4<0)
28.      k4 = k4*(-1);
29.    if((k1>=k2)&&(k1>=k3)&&(k1>=k4))
30.      E = k1;
31.    if((k2>=k1)&&(k2>=k3)&&(k2>=k4))
32.      E = k2;
33.    if((k3>=k2)&&(k3>=k1)&&(k3>=k4))
34.      E = k3;
35.    if((k4>=k2)&&(k4>=k3)&&(k4>=k1))
36.      E = k4;
37.}

sred считается правильно, sred1 не правильно
Игорь Коржов

Темы: 0
Сообщений: 7

Мой профиль
01.unsigned __in __bits(1) x1 = 1;
02.unsigned __in __bits(1) x2 = 1;
03.unsigned __in __bits(1) x3 = 0;
04.unsigned __in __bits(1) x4 = 1;
05.unsigned __out __bits(1) y1;
06.unsigned __out __bits(1) y2;
07.unsigned __out __bits(1) y3;
08.unsigned __out __bits(1) y4;
09. 
10.void main(){
11.   if (~x1 && ~x2 && ~x3 && ~x4) {
12.    y1 = 0;
13.    y2 = 1;
14.    y3 = 0;
15.    y4 = 0;
16.   }
17.}

Если просто отрицать значения через ~ то условие работает неправильно
Если создать дополнительные переменные то все будет работать
Если работать просто с & то тоже работает неправильно
01.unsigned __in __bits(1) x1 = 1;
02.unsigned __in __bits(1) x2 = 1;
03.unsigned __in __bits(1) x3 = 0;
04.unsigned __in __bits(1) x4 = 1;
05.unsigned __out __bits(1) y1;
06.unsigned __out __bits(1) y2;
07.unsigned __out __bits(1) y3;
08.unsigned __out __bits(1) y4;
09. 
10.void main(){
11.   unsigned __in __bits(1) x11 = ~x1;
12.   unsigned __in __bits(1) x22 = ~x2;
13.   unsigned __in __bits(1) x33 = ~x3;
14.   unsigned __in __bits(1) x44 = ~x4;
15.   if (x11 && x22 && x33 && x44) {
16.    y1 = 0;
17.    y2 = 1;
18.    y3 = 0;
19.    y4 = 0;
20.   }
21.}

Арман Сорокин

Темы: 0
Сообщений: 11

Мой профиль
Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2022
Контрольные срезы\26 сентября\Проектирование\Простые устройства с памятью\2 - "Арифметика" (53810)
http://dl.gsu.by/task.jsp?nid=2240401&cid=1282

14.10 16:52 2. Арифметика 0 / 1 Ошибка: Несовпадение RES:00000001=10 [9 ns] DelTA3 at NIT8 HLCCAD project

01.unsigned __in __bits(2) A = 1;
02.unsigned __in __bits(2) B = 2;
03.unsigned __in __bits(2) C = 1;
04. 
05.unsigned __out __bits(8) RES;
06. 
07.unsigned __bits(8) mem;
08. 
09.void main()
10.{
11.  if ((A * B) < (C + 1))
12.  {
13.    mem = 0;
14.    RES = 0;
15.  }
16.  else if ((A * B) > (C + 1))
17.  {
18.    mem = A * B - C;
19.    RES = mem;
20.  }
21.  else
22.  {
23.    RES = mem;
24.  }
25.}

Антон Ворона

Темы: 0
Сообщений: 11

Мой профиль
01.int __in __bits(16) a = 10;
02.int __in __bits(16) b = 910;
03.int __in __bits(8) c = 10;
04.int __in __bits(8) d = -1;
05. 
06. 
07.int __out __bits(16) RES;
08. 
09. 
10.int Modul(int num){
11.    if (num < 0){
12.        return (num*(-1));
13.    }
14.    else {
15.        return num;
16.    }
17.}
18. 
19.int Sign(int num){
20.    if (num < 0){
21.        return -1;
22.    }
23.    else if(num > 0){
24.        return 1;
25.    }
26.    else {
27.        return 0;
28.    }
29.}
30. 
31.void main(){
32.    if (d > 0){
33.        RES = Modul((a - b) / c) + d * c;
34.    }
35.    else{
36.        int test = Modul(a) - Modul(b);
37.        int buff = Modul(a);
38.        int buff2 = Modul(b);
39.                int test2 = buff - buff2;
40.        RES = Modul(buff - buff2) * d / c + Sign(a*b*c*d);
41.    }
42.}


При отладке программы в методе Main в блоке else имеется ошибка при разнице. Переменная test имеет значение 0, но если вынести Modul(a) и Modul(b) в отдельные переменные, то тогда инструкции выполняются верно, что видно по переменной test2, которая будет иметь значение -900.
Игорь Коршунов

Темы: 7
Сообщений: 2198

Мой профиль


Антон Ворона:

01.int __in __bits(16) a = 10;
02.int __in __bits(16) b = 910;
03.int __in __bits(8) c = 10;
04.int __in __bits(8) d = -1;
05. 
06. 
07.int __out __bits(16) RES;
08. 
09. 
10.int Modul(int num){
11.    if (num < 0){
12.        return (num*(-1));
13.    }
14.    else {
15.        return num;
16.    }
17.}
18. 
19.int Sign(int num){
20.    if (num < 0){
21.        return -1;
22.    }
23.    else if(num > 0){
24.        return 1;
25.    }
26.    else {
27.        return 0;
28.    }
29.}
30. 
31.void main(){
32.    if (d > 0){
33.        RES = Modul((a - b) / c) + d * c;
34.    }
35.    else{
36.        int test = Modul(a) - Modul(b);
37.        int buff = Modul(a);
38.        int buff2 = Modul(b);
39.                int test2 = buff - buff2;
40.        RES = Modul(buff - buff2) * d / c + Sign(a*b*c*d);
41.    }
42.}


При отладке программы в методе Main в блоке else имеется ошибка при разнице. Переменная test имеет значение 0, но если вынести Modul(a) и Modul(b) в отдельные переменные, то тогда инструкции выполняются верно, что видно по переменной test2, которая будет иметь значение -900. 

Из-за отсутствия стека одну и ту же функцию нельзя вызывать в одном выражении. При повторном вызове затирается результат первого и
test = func(x) - func(y);
всегда будет равен нулю.
Николай Афанасенко

Темы: 0
Сообщений: 8

Мой профиль
Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2022
Контрольные срезы\12 сентября \Программирование\Цифры числа\3 - "Перевернутое число" (44766)
http://dl.gsu.by/task.jsp?nid=2239965&cid=1282

01.int __in __bits(16) x ;
02. 
03.int __out __bits(16) y;
04. 
05.void main(){
06.    int start = x;
07.    int fin = 0;
08.    while(start >= 1){
09.        int digit = start %10;
10.        fin += digit;
11.        fin *=10;
12.        start /=10;
13.    }
14.    fin /=10;
15.    y = fin;
16.}


Пишет ошибка в 1 тесте, хотя при проверке всех тестов ответ сходиться
 
Индекс форума ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2, 3, ... 19, 20, 21, 22, 23, ... 26, 27, 28
Time:0,051