Автор |
Сообщение |
23.01.2023 11:39:36
Тема: Re:Вопросы и ответы по C-MPA
|
Михаил Долинский
Темы: 2072
Сообщений: 49883
Мой профиль
|
Может надо адекватную ошибку компиляции выдавать?
03.11.2022 11:40:42 03.11.2022 11:40:46 Поддубный Пётр
Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2022
10. Совершенные числа
0
[1]: Размерность переменной n должна быть 2 байта. src.mpc
DelTA3 at NIT7
Он объявил внутри переменную с таким же именем n, как и входная перменная
int n=0;
int __in __bits(16) n;
int __out __bits(16) res;
void main(){
int __bits(16) res2=n;
int __bits(16) sup[20];
int i=0;
int n=0;
int c=1;
int __bits(16) sum=0;
while(c!=res2){
if((res2%c) == 0){
sup[i]=c;
i++;
}
c++;
}
n=i;
for(i=0; i<n; i++){
sum+=sup[i];
}
if(sum==res2){
res=1;
}
else{
res=0;
}
}
|
09.09.2023 16:26:37
Тема: Re:Вопросы и ответы по C-MPA
|
Михаил Долинский
Темы: 2072
Сообщений: 49883
Мой профиль
|
09.09.2023 16:20:38 09.09.2023 16:20:42 Долинский Михаил Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2023 ЦЧ. Работа с числом 1 Все тесты пройдены (основной + секретный). src_b.mpc DelTA4 at NIT0 Win10 x64
09.09.2023 15:55:41 09.09.2023 15:55:47 Долинский Михаил Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2023 ЦЧ. Работа с числом 0 [1]: Тест не прошел: res dec[2]: 8. src.mpc DelTA4 at NIT1 Win10
Такое решение не проходит – Лукъянов Артур (ПО-41) написал
unsigned __in __bits(16) A;
unsigned __out __bits(16) RES;
void main()
{
unsigned __bits(16) a = A;
int x;
int k = 0;
while (a != 0)
{
x = a % 10;
a /= 10;
k++;
}
RES = x * k;
}
Такое решение проходит (вместо переменной a поставлена b)
unsigned __in __bits(16) A;
unsigned __out __bits(16) RES;
void main()
{
unsigned __bits(16) b = A;
int x;
int k = 0;
while (b != 0)
{
x = b % 10;
b /= 10;
k++;
}
RES = x * k;
}
|
19.09.2023 11:35:00
Тема: Re:Вопросы и ответы по C-MPA
|
Вячеслав Калиниченко
Темы: 0
Сообщений: 15
Мой профиль
|
Командные олимпиады\Архитектура вычислительных систем - основные понятия\Контрольный срез (Пример 2)\Проектирование\ЛФ - "Логические функции"
https://dl.gsu.by/task.jsp?nid=2285197&cid=1335
int __in __bits(1) IN_0;
int __in __bits(1) IN_1;
int __in __bits(1) IN_2;
int __in __bits(1) IN_3;
int __in __bits(1) IN_4;
int __out __bits(1) OUT_0;
int __out __bits(1) OUT_1;
void main()
{
OUT_0 = ~IN_0 | (IN_1 ^ IN_2);
OUT_1 = IN_3 & (~IN_4);
}
|
25.09.2023 17:53:09
Тема: Re:Вопросы и ответы по C-MPA
|
Никита Путинцев
Темы: 0
Сообщений: 2
Мой профиль
|
Командные олимпиады\Архитектура учебного процессора TCPU \Проектирование TCPU\4 - "Команда ADD для TCPU" 57949 Хруцкий Д. и др., ПОИТ-37, июнь 2007
https://dl.gsu.by/task.jsp?nid=2285211&cid=1335
unsigned __in __bits(8) d;
unsigned __in __bits(1) R;
unsigned __out __bits(8) A;
unsigned __bits(8) AA;
void main()
{
if (R == 1)
AA = 0;
else
AA = AA + d;
A = AA;
}
Не проходит решение
|
05.10.2023 15:19:15
Тема: Re:Вопросы и ответы по C-MPA
|
Полина Храпунова
Темы: 0
Сообщений: 13
Мой профиль
|
https://dl.gsu.by/task.jsp?nid=2285454&cid=1335
Командные олимпиады\Особенности архитектуры МП Intel 80286\Контрольный срез (Пример 3)\Базовый\Т - "Задача №3 (тестирование: 20)" 100807 TaskConverter Winter тестирование 2010 Октябрь 13
5.10 15:08 Т. Задача №3 (тестирование: 20) 0 / 100 Эталонная программа не смогла пройти тесты. [test 2]: WInter: программное исключение. 1.txt.txt DelTA4 at NIT0 Win10 Text files
Report = report.txt
StopOnError = false
Statistics = false
WatchReport = false
ShowReport = false
[test 1]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0
a dec[2]: 3
b dec[2]: 1
c hex: FE
d dec: 2
res dec[2]: 12
[test 2]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0
a sgn[2]: 4
b sgn[2]: 5
c sgn: 7
d sgn: 1
res sgn[2]:-6
|
06.10.2023 20:34:32
Тема: Re:Вопросы и ответы по C-MPA
|
Михаил Долинский
Темы: 2072
Сообщений: 49883
Мой профиль
|
После : должен быть пробел перед -6
|
03.11.2023 11:45:21
Тема: Re:Вопросы и ответы по C-MPA
|
Михаил Гребёнкин
Темы: 1
Сообщений: 33
Мой профиль
|
Командные олимпиады\Архитектура вычислительных систем\Микропрограммирование на С-МПА\1 (с решениями)\7 - "Количество" 41301
http://dl.gsu.by/task.jsp?nid=2347913&cid=1336
В винтере решение проходит, после компиляции в HLCCAD при проверке тестов выдаёт ошибки
unsigned __in __bits(8) in = 0xFF;
unsigned __out __bits(3) out;
main()
{
unsigned __bits(8) a =in;
unsigned __bits(1) temp1;
unsigned __bits(1) temp2;
unsigned __bits(1) temp3;
unsigned __bits(3) count =0;
temp1 = a & 1;
a = a >> 1;
temp2 = a &1;
a = a >> 1;
temp3 = a &1;
if((temp1+ temp2 + temp3) == 3) count +=1;
unsigned __bits(3) i = 5;
for(;i>0;i--)
{
a = a >> 1;
temp1 = temp2;
temp2 = temp3;
temp3 = a &1;
if((temp1+ temp2 + temp3) == 3) count +=1;
};
out = count;
}
|
03.11.2023 20:24:43
Тема: Re:Вопросы и ответы по C-MPA
|
Михаил Долинский
Темы: 2072
Сообщений: 49883
Мой профиль
|
Михаил Гребёнкин:
Командные олимпиады\Архитектура вычислительных систем\Микропрограммирование на С-МПА\1 (с решениями)\7 - "Количество" 41301
http://dl.gsu.by/task.jsp?nid=2347913&cid=1336
В винтере решение проходит, после компиляции в HLCCAD при проверке тестов выдаёт ошибки
unsigned __in __bits(8) in = 0xFF;
unsigned __out __bits(3) out;
main()
{
unsigned __bits(8) a =in;
unsigned __bits(1) temp1;
unsigned __bits(1) temp2;
unsigned __bits(1) temp3;
unsigned __bits(3) count =0;
temp1 = a & 1;
a = a >> 1;
temp2 = a &1;
a = a >> 1;
temp3 = a &1;
if((temp1+ temp2 + temp3) == 3) count +=1;
unsigned __bits(3) i = 5;
for(;i>0;i--)
{
a = a >> 1;
temp1 = temp2;
temp2 = temp3;
temp3 = a &1;
if((temp1+ temp2 + temp3) == 3) count +=1;
};
out = count;
}
Эта программа делает много лишних действий и поэтому не успевает посчитать ответ за отведённое на тест время.
Вот авторское решение, которое проходит все тесты
unsigned __in __bits(8) in;
unsigned __out __bits(3) out;
void main()
{
unsigned __bits(3) cnt = 0;
unsigned __bits(9) t = in;
while (t >= 7)
{
if ((t & 7) == 7) cnt++;
t >>= 1;
}
out = cnt;
}
|
16.11.2023 15:35:16
Тема: Re:Вопросы и ответы по C-MPA
|
Вячеслав Калиниченко
Темы: 0
Сообщений: 15
Мой профиль
|
int __bits(8) a[10];
int __out __bits(8) summ;
void main() {
int __bits(8) max = a[0];
int __bits(8) min = a[0];
int i = 0;
for (i; i < 10; i++) {
if (a[i] < min)
min = a[i];
if (a[i] > max)
max = a[i];
}
summ = min + max;
}
При попытке поставить a(массив) в окно просмотра через Переменная Winter слетает
Как просматривать массивы в C-MPA?
|
16.11.2023 19:40:12
Тема: Re:Вопросы и ответы по C-MPA
|
Михаил Долинский
Темы: 2072
Сообщений: 49883
Мой профиль
|
Вячеслав Калиниченко:
int __bits(8) a[10];
int __out __bits(8) summ;
void main() {
int __bits(8) max = a[0];
int __bits(8) min = a[0];
int i = 0;
for (i; i < 10; i++) {
if (a[i] < min)
min = a[i];
if (a[i] > max)
max = a[i];
}
summ = min + max;
}
При попытке поставить a(массив) в окно просмотра через Переменная Winter слетает
Как просматривать массивы в C-MPA?
Отладка С-МПА программ v1 (Алесенко Антонина, ПО-41, октябрь 2022)
|
21.11.2023 15:03:20
Тема: Re:Вопросы и ответы по C-MPA
|
Александр Санец
Темы: 0
Сообщений: 15
Мой профиль
|
http://dl.gsu.by/task.jsp?nid=2351616&cid=1336
Контрольные срезы\21 ноября\Проектирование\По логическим функциям\4 - "Device" 44111 Дюбкин Александр, ПМ-44, май 2006
unsigned __in __bits(1) IN_0=1 ;
unsigned __in __bits(1) IN_1 =0;
unsigned __in __bits(1) IN_2=1 ;
unsigned __in __bits(1) IN_3 =0;
unsigned __in __bits(1) IN_4=1 ;
unsigned __out __bits(1) OUT_0 ;
void main(){
unsigned __in __bits(1) a=IN_0 & IN_1 ;
unsigned __in __bits(1) b=a | IN_2;
unsigned __in __bits(1) c=IN_3 & IN_4;
unsigned __in __bits(1) d=b ^ c;
OUT_0 = ~d;
}
1 0 Ошибка: Несовпадение OUT_0:1=0 [2 ns]
;1
IN_0=1 at 1001 ps
IN_1=0 at 1001 ps
IN_2=1 at 1001 ps
IN_3=0 at 1001 ps
IN_4=1 at 1001 ps
Assert OUT_0=0 at 2000 ps
У меня в Winter в это программе OUT_0 = 0 как и должно быть а Hlccad выводит 1 при подлюченных тестах
unsigned __in __bits(1) IN_0 ;
unsigned __in __bits(1) IN_1 ;
unsigned __in __bits(1) IN_2 ;
unsigned __in __bits(1) IN_3 ;
unsigned __in __bits(1) IN_4 ;
unsigned __out __bits(1) OUT_0 ;
void main(){
OUT_0 = ~(((IN_0 & IN_1) | IN_2) ^ IN_3&IN_4);
}
А это прошло все тесты
|
01.12.2023 14:17:03
Тема: Re:Вопросы и ответы по C-MPA
|
Михаил Гребёнкин
Темы: 1
Сообщений: 33
Мой профиль
|
http://dl.gsu.by/task.jsp?nid=2350855&cid=1336
Контрольные срезы\5 декабря\Программирование\Обработка строк (простая)\22 - "По три" 56822 Грищенко Екатерина, ПМ-45, май 2007
в новом окне (Установлена: 27.05.2007)
char ins[120] = "#....................................#";
char outs[120]=".......................................";
main(){
int temp = 0,i=0;
while( ins[i]!='#'){
outs[i]=ins[i];
if (temp == 2){
temp= -1;
outs[i-2]=ins[i];
outs[i]=ins[i-2];
}
temp++;
i++;
}
outs[i]='#';
}
я подключаю первый тест не проходит второй тест, проверяю второй тест не проходит первый тест
|
01.12.2023 19:12:47
Тема: Re:Вопросы и ответы по C-MPA
|
Михаил Долинский
Темы: 2072
Сообщений: 49883
Мой профиль
|
Михаил Гребёнкин:
http://dl.gsu.by/task.jsp?nid=2350855&cid=1336
Контрольные срезы\5 декабря\Программирование\Обработка строк (простая)\22 - "По три" 56822 Грищенко Екатерина, ПМ-45, май 2007
в новом окне (Установлена: 27.05.2007)
char ins[120] = "#....................................#";
char outs[120]=".......................................";
main(){
int temp = 0,i=0;
while( ins[i]!='#'){
outs[i]=ins[i];
if (temp == 2){
temp= -1;
outs[i-2]=ins[i];
outs[i]=ins[i-2];
}
temp++;
i++;
}
outs[i]='#';
}
я подключаю первый тест не проходит второй тест, проверяю второй тест не проходит первый тест
Присваивать нельзя
- иначе тесты игнорируются, а работа происходит с присваиваемой строкой.
Такое решение проходит все тесты
char ins[120];
char outs[120];
main(){
int temp = 0,i=0;
while( ins[i]!='#'){
outs[i]=ins[i];
if (temp == 2){
temp= -1;
outs[i-2]=ins[i];
outs[i]=ins[i-2];
}
temp++;
i++;
}
outs[i]='#';
}
|
08.12.2023 12:04:05
Тема: Re:Вопросы и ответы по C-MPA
|
Александр Дудинский
Темы: 0
Сообщений: 17
Мой профиль
|
Здравствуйте, я занимался разработкой мультиплексора в C-MPA для обучения ИИ бота. Задача состоит в том, что на выход подаётся a+b+c+d, если a>b; в остальных случаях на выход подаётся a-b-c-d.
Код программы:
unsigned __in __bits(16) a=10;
unsigned __in __bits(16) b=1;
unsigned __in __bits(8) c=3;
unsigned __in __bits(8) d=4;
unsigned __out __bits(16) RES;
unsigned __bits(16) ms(unsigned __bits(1) A, unsigned __bits(16) X[2]){
unsigned __bits(16) otvet;
switch(A){
case 0: otvet=X[0]; break;
case 1: otvet=X[1]; break;
}
return otvet;
}
void main(){
unsigned __bits(1) A;
unsigned __bits(16) X[2];
X[0]=a+b+c+d;
X[1]=a-b-c-d;
if(a>b) A=1;
else A=0;
RES=ms(A,X[2]);
}
Выдаёт ошибку на 11-ой строке: This variable is not array: X.
По сути, проблема состоит в передаче массива в функцию.
|
08.12.2023 12:17:36
Тема: Re:Вопросы и ответы по C-MPA
|
Александр Дудинский
Темы: 0
Сообщений: 17
Мой профиль
|
Рабочий вариант программы(без массива):
unsigned __in __bits(16) a=10;
unsigned __in __bits(16) b=1;
unsigned __in __bits(8) c=3;
unsigned __in __bits(8) d=4;
unsigned __out __bits(16) RES;
unsigned __bits(16) ms(unsigned __bits(1) A, unsigned __bits(32) X){
unsigned __bits(16) otvet;
switch(A){
case 0: otvet=X; break;
case 1: X=X>>16; otvet=X; break;
}
return otvet;
}
void main(){
unsigned __bits(1) A;
unsigned __bits(32) X;
unsigned __bits(16) vetv1;
unsigned __bits(16) vetv2;
X=a+b+c+d;
X=X << 16;
X=X | a-b-c-d;
if(a>b) A=1;
else A=0;
RES=ms(A,X);
}
|
|