Автор |
Сообщение |
01.11.2024 21:06:26
Тема: Re:Вопросы и ответы по C-MPA
|
Михаил Долинский
Темы: 2072
Сообщений: 49883
Мой профиль
|
Иван Морозов:
https://dl.gsu.by/task.jsp?nid=2411200&cid=1371
unsigned __in __bits(2) IN_0;
unsigned __in __bits(2) IN_1;
unsigned __out __bits(5) OUT_0=1;
void main(){
unsigned i;
for(i=0;i<IN_1;i++){
OUT_0*=IN_0;
}
}
Ошибка: Несовпадение OUT_0:00100=01000 [9 ns]
В Winter же результат равен 8, что является правильным ответом
Я же тебе сказал где смотреть!
4. Неоднократное занесение значений на выходные контакты.
http://dl/NForum/posts/topicshow/46.dl?postid=224#224
http://dl/NForum/posts/topicshow/46.dl?postid=1937#1937
http://dl/NForum/posts/topicshow/46.dl?postid=3550#3550
http://dl/NForum/posts/topicshow/46.dl?postid=34228#34228
http://dl/NForum/posts/topicshow/46.dl?postid=44944#44944
http://dl/NForum/posts/topicshow/46.dl?postid=77048#77048
http://dl/NForum/posts/topicshow/46.dl?postid=92167#92167
http://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=93833#93833
http://dl/NForum/posts/topicshow/46.dl?postid=100583#100583
http://dl/NForum/posts/topicshow/46.dl?postid=100585#100585
|
05.11.2024 11:38:40
Тема: Re:Вопросы и ответы по C-MPA
|
Екатерина Киптик
Темы: 0
Сообщений: 25
Мой профиль
|
https://dl.gsu.by/task.jsp?nid=2416209&cid=1371
(правильное решение задачи на память ПА."Простые вычисления" 54164)
int __in __bits(16) a=1;
int __in __bits(16) b=1;
int __in __bits(16) c=2;
int __in __bits(16) d=2;
unsigned __in __bits(1) e=1;
int __out __bits(16) out;
int ch;
int main() {
int a1 = a;
int b1 = b;
int c1 = c;
int d1 = d;
unsigned int e1 = e;
if (e1 == 1) {
ch = c1 + d1;
}
if (ch * 2 > (a1 + b1) * 4) {
out = ch;
}
else if (ch * 2 < (a1 + b1) * 4) {
out = (ch / c1) + d1;
}
else {
if (c1 % 2 == 0) {
out = a1;
} else {
out = 0;
}
}
}
|
05.11.2024 16:11:28
Тема: Re:Вопросы и ответы по C-MPA
|
Даниил Маринович
Темы: 0
Сообщений: 18
Мой профиль
|
https://dl.gsu.by/task.jsp?nid=2428617&cid=1370
unsigned __in __bits(4) Hello;
unsigned __in __bits(4) k0;
unsigned __in __bits(4) k1;
unsigned __in __bits(4) k2;
unsigned __in __bits(4) k3;
unsigned __in __bits(4) k4;
unsigned __in __bits(4) k5;
unsigned __in __bits(4) k6;
unsigned __in __bits(4) k7;
unsigned __out __bits(1) Valid;
int isSingleBitSet(unsigned value) {
return value == 1 || value == 2 || value == 4 || value == 8;
}
void main() {
if (Hello != 14) {
Valid = 0;
return;
}
Valid = isSingleBitSet(k0) && isSingleBitSet(k1) &&
isSingleBitSet(k2) && isSingleBitSet(k3) &&
isSingleBitSet(k4) && isSingleBitSet(k5) &&
isSingleBitSet(k6) && isSingleBitSet(k7);
}
Проходит в Winter, но не проходит тестирование HLCCAD
|
12.11.2024 15:33:02
Тема: Re:Вопросы и ответы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Даниил Маринович:
https://dl.gsu.by/task.jsp?nid=2428617&cid=1370
unsigned __in __bits(4) Hello;
unsigned __in __bits(4) k0;
unsigned __in __bits(4) k1;
unsigned __in __bits(4) k2;
unsigned __in __bits(4) k3;
unsigned __in __bits(4) k4;
unsigned __in __bits(4) k5;
unsigned __in __bits(4) k6;
unsigned __in __bits(4) k7;
unsigned __out __bits(1) Valid;
int isSingleBitSet(unsigned value) {
return value == 1 || value == 2 || value == 4 || value == 8;
}
void main() {
if (Hello != 14) {
Valid = 0;
return;
}
Valid = isSingleBitSet(k0) && isSingleBitSet(k1) &&
isSingleBitSet(k2) && isSingleBitSet(k3) &&
isSingleBitSet(k4) && isSingleBitSet(k5) &&
isSingleBitSet(k6) && isSingleBitSet(k7);
}
Проходит в Winter, но не проходит тестирование HLCCAD
Многократный вызов одной и той же функции в одном выражении не поддерживается.
https://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=70473#70473
https://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=98452#98452
В справочнике по языку написано:
Также нельзя вызывать функцию дважды в одном выражении. Вместо этого можно написать так:
int t1 = func(x);
int t2 = func(y);
int res = t1 - t2;
https://dl.gsu.by/theory.jsp?id=2614&cid=672
|
12.11.2024 17:39:31
Тема: Re:Вопросы и ответы по C-MPA
|
Дарья Чернокал
Темы: 0
Сообщений: 24
Мой профиль
|
Организация и функционирование ЭВМ (ПО2) - 2024
Командные олимпиады\Архитектура вычислительных систем\Особенности архитектуры МП Intel 80486/Pentium\Контрольный срез (Пример 5)\Проектирование\ПА - "Вычисление функции" (54243)
http://dl.gsu.by/task.jsp?nid=2416280&cid=1371
При генерации и отправке программа проходит тест, но при проверке вручную в C-MPA ответ отличается от того ,который указан в тесте.
TECT
(Set 0,10 on a at 1001
Set 4,10 on b at 1001
Set 2,10 on c at 1001
Set 5,10 on d at 1001
Diff 13,10 on Q at 2000) при подсчете вручную Q=5.
Код программы:
int __in __bits(8)a;
int __in __bits(8)b;
int __in __bits(8)c;
int __in __bits(8)d;
int __out __bits(8)Q;
void main()
{
int res;
int p;
p=a*b;
if (p==6) {
Q=a+b+c+d;
res=a+b+c+d;
}
if (p>6) Q=a+b;
if (p<6) Q=res+d;
}
|
19.11.2024 14:16:00
Тема: Re:Вопросы и ответы по C-MPA
|
Максим Бельский
Темы: 0
Сообщений: 12
Мой профиль
|
https://dl.gsu.by/task.jsp?nid=2409622&cid=1371
Проверка на условие чётности вроде бы правильная, но почему то всё равно не инвертирует
unsigned __in __bits(3) in;
unsigned __out __bits(3) out;
void main()
{
if (in&1==0) out=~in;
else out=in;
}
|
19.11.2024 16:08:40
Тема: Re:Вопросы и ответы по C-MPA
|
Егор Землянский
Темы: 0
Сообщений: 14
Мой профиль
|
https://dl.gsu.by/task.jsp?nid=2428698&cid=1370
19.11.2024 16:01:44 19.11.2024 16:01:48 Землянский Егор Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2024 1М. Сумма 0 [test1]: Тест не прошел: summ dec: 8. 2.mpc DelTA4 at NIT1 Win10
Не проходит первый тест, хоть ответ верный
int __in __bits(8) in1;
int __in __bits(8) in2;
int __in __bits(8) in3;
int __in __bits(8) in4;
int __in __bits(8) in5;
int __in __bits(8) in6;
int __in __bits(8) in7;
int __in __bits(8) in8;
int __in __bits(8) in9;
int __in __bits(8) in10;
int __out __bits(8) summ;
void main(){
int __bits(8) a[10] = {in1, in2, in3, in4, in5, in6, in7, in8, in9, in10};
int min = a[0];
int max = a[0];
for(int i=0;i<10;i++){
if (a[i]<min){
min = a[i];
}
if (a[i]>max){
max = a[i];
}
}
summ = min + max;
}
|
20.11.2024 11:03:21
Тема: Re:Вопросы и ответы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Максим Бельский:
https://dl.gsu.by/task.jsp?nid=2409622&cid=1371
Проверка на условие чётности вроде бы правильная, но почему то всё равно не инвертирует
unsigned __in __bits(3) in;
unsigned __out __bits(3) out;
void main()
{
if (in&1==0) out=~in;
else out=in;
}
Сперва выполняется оператор сравнения ==, а потом побитовое И &.
Чтобы было правильно, нужны скобки:
if ((in&1)==0)
https://learn.microsoft.com/ru-ru/cpp/cpp/cpp-built-in-operators-precedence-and-associativity?view=msvc-170
|
20.11.2024 11:15:30
Тема: Re:Вопросы и ответы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Егор Землянский:
https://dl.gsu.by/task.jsp?nid=2428698&cid=1370
19.11.2024 16:01:44 19.11.2024 16:01:48 Землянский Егор Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2024 1М. Сумма 0 [test1]: Тест не прошел: summ dec: 8. 2.mpc DelTA4 at NIT1 Win10
Не проходит первый тест, хоть ответ верный
int __in __bits(8) in1;
int __in __bits(8) in2;
int __in __bits(8) in3;
int __in __bits(8) in4;
int __in __bits(8) in5;
int __in __bits(8) in6;
int __in __bits(8) in7;
int __in __bits(8) in8;
int __in __bits(8) in9;
int __in __bits(8) in10;
int __out __bits(8) summ;
void main(){
int __bits(8) a[10] = {in1, in2, in3, in4, in5, in6, in7, in8, in9, in10};
int min = a[0];
int max = a[0];
for(int i=0;i<10;i++){
if (a[i]<min){
min = a[i];
}
if (a[i]>max){
max = a[i];
}
}
summ = min + max;
}
int __bits(8) a[10] = {in1, in2, in3, in4, in5, in6, in7, in8, in9, in10};
По условию входной переменной является массив a. И нет входов in1 ... in10.
Правильно убрать входы in и убрать инициализацию массива.
unsigned __bits(8) a[10];
Также в задаче подразумевались неотрицательные числа. Нужно поменять тип int на unsigned.
Поправил условие, чтобы это было понятно.
|
20.11.2024 14:12:32
Тема: Re:Вопросы и ответы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Дарья Чернокал:
Организация и функционирование ЭВМ (ПО2) - 2024
Командные олимпиады\Архитектура вычислительных систем\Особенности архитектуры МП Intel 80486/Pentium\Контрольный срез (Пример 5)\Проектирование\ПА - "Вычисление функции" (54243)
http://dl.gsu.by/task.jsp?nid=2416280&cid=1371
При генерации и отправке программа проходит тест, но при проверке вручную в C-MPA ответ отличается от того ,который указан в тесте.
TECT
(Set 0,10 on a at 1001
Set 4,10 on b at 1001
Set 2,10 on c at 1001
Set 5,10 on d at 1001
Diff 13,10 on Q at 2000) при подсчете вручную Q=5.
Код программы:
int __in __bits(8)a;
int __in __bits(8)b;
int __in __bits(8)c;
int __in __bits(8)d;
int __out __bits(8)Q;
void main()
{
int res;
int p;
p=a*b;
if (p==6) {
Q=a+b+c+d;
res=a+b+c+d;
}
if (p>6) Q=a+b;
if (p<6) Q=res+d;
}
Решать задачи с памятью нужно так:
https://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=57446#57446
https://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=94759#94759
https://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=113831#113831
|
03.12.2024 13:33:45
Тема: Re:Вопросы и ответы по C-MPA
|
Дима Гусаков
Темы: 0
Сообщений: 20
Мой профиль
|
3.12.2024 13:36:33 03.12.2024 13:36:37 Гусаков Дима Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2024 Сам-с7. Задача №7 0 [test 2]: Тест не прошел: res sgn[2]: 0. 7.mpc DelTA4 at NIT1 Win10
03.12.2024 13:30:30 03.12.2024 13:30:34 Гусаков Дима Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2024 Сам-с7. Задача №7 100 Все тесты пройдены (основной + секретный). 7.mpc DelTA4 at NIT0 Win10
У меня возникли проблемы с решением Задачи №7
https://dl.gsu.by/task.jsp?nid=2433682&cid=1370
Я написал почти два одинаковых кода
1:
int __in __bits(16) a;
int __in __bits(16) b;
int __in __bits(8) c;
int __in __bits(8) d;
int __out __bits(16) RES;
int sign(int x) {
if (x > 0) {
return 1;
} else if (x == 0) {
return 0;
} else {
return -1;
}
}
void main() {
int sign_cd = sign(c * d);
if (a == 4) {
RES = c / a + b / d - a * c;
} else {
RES = (a + b - sign_cd) / a;
}
}
2:
int __in __bits(16) a;
int __in __bits(16) b;
int __in __bits(8) c;
int __in __bits(8) d;
int __out __bits(16) RES;
int sign(int x) {
if (x > 0) {
return 1;
} else if (x == 0) {
return 0;
} else {
return -1;
}
}
void main() {
if (a == 4) {
RES = c / a + b / d - a * c;
} else {
RES = (a + b - sign(c*d)) / a;
}
}
1 код не прошел по ошибке:
3.12 13:28 Сам-с7. Задача №7 0 / 100 [test 2]: Тест не прошел: res sgn[2]: 0. 7.mpc DelTA4 at NIT1 Win10
В 1 коде я использовал временную переменную sign_cd, а 2 коде сразу применил функцию.
Хотя в winter, этот тест, при этих же значениях, выдаёт ответ, как в тесте.
|
03.12.2024 16:23:18
Тема: Re:Вопросы и ответы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Дима Гусаков:
У меня возникли проблемы с решением Задачи №7
https://dl.gsu.by/task.jsp?nid=2433682&cid=1370
Оба варианта правильные.
Не работает из-за ошибки в WInter. Будем пытаться устранить ее.
|
05.12.2024 15:53:01
Тема: Re:Вопросы и ответы по C-MPA
|
Андрей Здункевич
Темы: 0
Сообщений: 19
Мой профиль
|
unsigned __bits(3) in; unsigned __bits(3) out;
void main(){ if(in % 2 == 0){ out = ~in & 7; } else { out = in; } }
не генерируется проект по этой программе, не появляются контакты in и out
|
05.12.2024 16:03:11
Тема: Re:Вопросы и ответы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Андрей Здункевич:
unsigned __bits(3) in; unsigned __bits(3) out;
void main(){ if(in % 2 == 0){ out = ~in & 7; } else { out = in; } }
не генерируется проект по этой программе, не появляются контакты in и out
Нужно добавить модификаторы для обозначения контактов:
unsigned __in __bits(3) in; unsigned __out __bits(3) out;
void main(){ if(in % 2 == 0){ out = ~in & 7; } else { out = in; } }
|
12.12.2024 12:06:22
Тема: Re:Вопросы и ответы по C-MPA
|
Михаил Долинский
Темы: 2072
Сообщений: 49883
Мой профиль
|
2.12.2024 12:01:15 12.12.2024 12:01:21 Балабан Владислав Организация и функционирование ЭВМ (ПО2) - 2024 9. Сумма четных членов последовательности 0 Не пройден секретный тест: Ошибка: Несовпадение SUMMA:650=702 [52,051 ps] sum.prd DelTA4 at NIT0 Win10
; [test 1]
N = 1, 10
wait for 1000
assert SUMMA = 0, 10
wait for 1
; [test 2]
N = 2, 10
wait for 1000
assert SUMMA = 2, 10
wait for 1
; [test 3]
N = 3, 10
wait for 1000
assert SUMMA = 2, 10
wait for 1
; [test 4]
N = 4, 10
wait for 1000
assert SUMMA = 6, 10
wait for 1
; [test 5]
N = 5, 10
wait for 1000
assert SUMMA = 6, 10
wait for 1
; [test 6]
N = 6, 10
wait for 1000
assert SUMMA = 12, 10
wait for 1
; [test 7]
N = 7, 10
wait for 1000
assert SUMMA = 12, 10
wait for 1
; [test 8]
N = 8, 10
wait for 1000
assert SUMMA = 20, 10
wait for 1
; [test 9]
N = 9, 10
wait for 1000
assert SUMMA = 20, 10
wait for 1
; [test 10]
N = 10, 10
wait for 1000
assert SUMMA = 30, 10
wait for 1
; [test 11]
N = 11, 10
wait for 1000
assert SUMMA = 30, 10
wait for 1
; [test 12]
N = 12, 10
wait for 1000
assert SUMMA = 42, 10
wait for 1
; [test 13]
N = 13, 10
wait for 1000
assert SUMMA = 42, 10
wait for 1
; [test 14]
N = 14, 10
wait for 1000
assert SUMMA = 56, 10
wait for 1
; [test 15]
N = 15, 10
wait for 1000
assert SUMMA = 56, 10
wait for 1
; [test 16]
N = 16, 10
wait for 1000
assert SUMMA = 72, 10
wait for 1
; [test 17]
N = 17, 10
wait for 1000
assert SUMMA = 72, 10
wait for 1
; [test 18]
N = 18, 10
wait for 1000
assert SUMMA = 90, 10
wait for 1
; [test 19]
N = 19, 10
wait for 1000
assert SUMMA = 90, 10
wait for 1
; [test 20]
N = 20, 10
wait for 1000
assert SUMMA = 110, 10
wait for 1
; [test 21]
N = 21, 10
wait for 1000
assert SUMMA = 110, 10
wait for 1
; [test 22]
N = 22, 10
wait for 1000
assert SUMMA = 132, 10
wait for 1
; [test 23]
N = 23, 10
wait for 1000
assert SUMMA = 132, 10
wait for 1
; [test 24]
N = 24, 10
wait for 1000
assert SUMMA = 156, 10
wait for 1
; [test 25]
N = 25, 10
wait for 1000
assert SUMMA = 156, 10
wait for 1
; [test 26]
N = 26, 10
wait for 1000
assert SUMMA = 182, 10
wait for 1
; [test 27]
N = 27, 10
wait for 1000
assert SUMMA = 182, 10
wait for 1
; [test 28]
N = 28, 10
wait for 1000
assert SUMMA = 210, 10
wait for 1
; [test 29]
N = 29, 10
wait for 1000
assert SUMMA = 210, 10
wait for 1
; [test 30]
N = 30, 10
wait for 1000
assert SUMMA = 240, 10
wait for 1
; [test 31]
N = 31, 10
wait for 1000
assert SUMMA = 240, 10
wait for 1
; [test 32]
N = 32, 10
wait for 1000
assert SUMMA = 272, 10
wait for 1
; [test 33]
N = 33, 10
wait for 1000
assert SUMMA = 272, 10
wait for 1
; [test 34]
N = 34, 10
wait for 1000
assert SUMMA = 306, 10
wait for 1
; [test 35]
N = 35, 10
wait for 1000
assert SUMMA = 306, 10
wait for 1
; [test 36]
N = 36, 10
wait for 1000
assert SUMMA = 342, 10
wait for 1
; [test 37]
N = 37, 10
wait for 1000
assert SUMMA = 342, 10
wait for 1
; [test 38]
N = 38, 10
wait for 1000
assert SUMMA = 380, 10
wait for 1
; [test 39]
N = 39, 10
wait for 1000
assert SUMMA = 380, 10
wait for 1
; [test 40]
N = 40, 10
wait for 1000
assert SUMMA = 420, 10
wait for 1
; [test 41]
N = 41, 10
wait for 1000
assert SUMMA = 420, 10
wait for 1
; [test 42]
N = 42, 10
wait for 1000
assert SUMMA = 462, 10
wait for 1
; [test 43]
N = 43, 10
wait for 1000
assert SUMMA = 462, 10
wait for 1
; [test 44]
N = 44, 10
wait for 1000
assert SUMMA = 506, 10
wait for 1
; [test 45]
N = 45, 10
wait for 1000
assert SUMMA = 506, 10
wait for 1
; [test 46]
N = 46, 10
wait for 1000
assert SUMMA = 552, 10
wait for 1
; [test 47]
N = 47, 10
wait for 1000
assert SUMMA = 552, 10
wait for 1
; [test 48]
N = 48, 10
wait for 1000
assert SUMMA = 600, 10
wait for 1
; [test 49]
N = 49, 10
wait for 1000
assert SUMMA = 600, 10
wait for 1
; [test 50]
N = 50, 10
wait for 1000
assert SUMMA = 650, 10
wait for 1
; [test 51]
N = 51, 10
wait for 1000
assert SUMMA = 650, 10
wait for 1
; [test 52]
N = 52, 10
wait for 1000
assert SUMMA = 702, 10
wait for 1
; [test 53]
N = 53, 10
wait for 1000
assert SUMMA = 702, 10
wait for 1
; [test 54]
N = 54, 10
wait for 1000
assert SUMMA = 756, 10
wait for 1
; [test 55]
N = 55, 10
wait for 1000
assert SUMMA = 756, 10
wait for 1
; [test 56]
N = 56, 10
wait for 1000
assert SUMMA = 812, 10
wait for 1
; [test 57]
N = 57, 10
wait for 1000
assert SUMMA = 812, 10
wait for 1
; [test 58]
N = 58, 10
wait for 1000
assert SUMMA = 870, 10
wait for 1
; [test 59]
N = 59, 10
wait for 1000
assert SUMMA = 870, 10
wait for 1
; [test 60]
N = 60, 10
wait for 1000
assert SUMMA = 930, 10
wait for 1
; [test 61]
N = 61, 10
wait for 1000
assert SUMMA = 930, 10
wait for 1
; [test 62]
N = 62, 10
wait for 1000
assert SUMMA = 992, 10
wait for 1
; [test 63]
N = 63, 10
wait for 1000
assert SUMMA = 992, 10
wait for 1
|
|
|