Автор |
Сообщение |
30.11.2021 10:21:26
Тема: Re:Вопросы по C-MPA
|
Яна Ясиновская
Темы: 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. }
ЭТО ПРОШЛО
|
03.12.2021 12:27:22
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 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
|
06.12.2021 11:55:55
Тема: Re:Вопросы по C-MPA
|
Дарья Самусева
Темы: 0
Сообщений: 4
Мой профиль
|
http://dl.gsu.by/task.jsp?nid=2027979&cid=1230
Командные олимпиады\Микропрограммирование на С-МПА\Контрольный срез (Пример 1)\Программирование\ЦЧ - "Работа с числом"
В этой задаче в условии указана переменная А, компилятор требует переменную а: "[1]: Не объявлена переменная a. "
|
16.12.2021 10:09:15
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 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;
}
Это явно решение какой-то другой задачи. В этой программе просто нет переменной А.
|
30.09.2022 14:45:27
Тема: Re:Вопросы и ответы по C-MPA
|
Даниил Коханов
Темы: 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
|
30.09.2022 15:31:22
Тема: Re:Вопросы и ответы по C-MPA
|
Максим Кадетов
Темы: 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
|
30.09.2022 15:56:57
Тема: Re:Вопросы и ответы по C-MPA
|
Игорь Коршунов
Темы: 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 нужно убрать.
|
30.09.2022 16:16:32
Тема: Re:Вопросы и ответы по C-MPA
|
Игорь Коршунов
Темы: 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
Эта программа правильная, сгенерированная схема прошла все тесты.
Возможно, ты сдавал схему сгенерированную не по этой программе.
|
06.10.2022 12:04:41
Тема: Re:Вопросы и ответы по C-MPA
|
Анна Гладкова
Темы: 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. }
|
13.10.2022 12:03:40
Тема: Re:Вопросы и ответы по C-MPA
|
Роман Мицура
Темы: 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 не правильно
|
14.10.2022 15:21:57
Тема: Re:Вопросы и ответы по C-MPA
|
Игорь Коржов
Темы: 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. }
|
14.10.2022 17:03:50
Тема: Re:Вопросы и ответы по C-MPA
|
Арман Сорокин
Темы: 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. }
|
18.10.2022 13:47:47
Тема: Re:Вопросы и ответы по C-MPA
|
Антон Ворона
Темы: 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.
|
18.10.2022 15:01:27
Тема: Re:Вопросы и ответы по C-MPA
|
Игорь Коршунов
Темы: 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);
всегда будет равен нулю.
|
21.10.2022 17:20:35
Тема: Re:Вопросы и ответы по C-MPA
|
Николай Афанасенко
Темы: 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 тесте, хотя при проверке всех тестов ответ сходиться
|
|