Автор |
Сообщение |
08.05.2015 15:25:05
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Татьяна Коновалова:
Здравствуйте! Я можно увидеть секретный тест по этой задаче?
Зачет\Индивидуальные задания\Сконвертированные задания на программирование\Условные вычисления\16 - "Простые операции" 80909 Хруцкий Дмитрий, ПОИТ-27, май 2006
http://dl.gsu.by/task.jsp?nid=1390305&cid=947
Основной тест дополнен.
|
16.05.2015 13:43:01
Тема: Re:Вопросы по C-MPA
|
Анна Пискунова
Темы: 0
Сообщений: 40
Мой профиль
|
Задача http://dl.gsu.by/task.jsp?nid=1390285&cid=947
Объясните пожалуйста, почему пишет, что не проходит тест:
[test 5]: Тест не прошел: res dec[1]: 40.
Вот текст самой программы:
unsigned __in __bits(4) a0;
unsigned __out __bits(8) res;
void main() {
res = (a0 + 5) * 2;
}
Казалось бы ничего сложного, но в чем проблема?
|
18.05.2015 11:32:48
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Анна Пискунова:
Задача http://dl.gsu.by/task.jsp?nid=1390285&cid=947
Объясните пожалуйста, почему пишет, что не проходит тест:
[test 5]: Тест не прошел: res dec[1]: 40.
Вот текст самой программы:
unsigned __in __bits(4) a0;
unsigned __out __bits(8) res;
void main() {
res = (a0 + 5) * 2;
}
Казалось бы ничего сложного, но в чем проблема?
Происходит переполнение, т.к. a0 4 бита. Чтобы переполнения не было можно писать например так:
unsigned __in __bits(4) a0;
unsigned __out __bits(8) res;
void main()
{
unsigned __bits(8) tmp = a0;
res = (tmp + 5) * 2;
}
|
18.05.2015 21:23:09
Тема: Re:Вопросы по C-MPA
|
Анна Пискунова
Темы: 0
Сообщений: 40
Мой профиль
|
Спасибо большое. Премного благодарна.
Игорь Коршунов:
Анна Пискунова:
Задача http://dl.gsu.by/task.jsp?nid=1390285&cid=947
Объясните пожалуйста, почему пишет, что не проходит тест:
[test 5]: Тест не прошел: res dec[1]: 40.
Вот текст самой программы:
unsigned __in __bits(4) a0;
unsigned __out __bits(8) res;
void main() {
res = (a0 + 5) * 2;
}
Казалось бы ничего сложного, но в чем проблема?
Происходит переполнение, т.к. a0 4 бита. Чтобы переполнения не было можно писать например так:
unsigned __in __bits(4) a0;
unsigned __out __bits(8) res;
void main()
{
unsigned __bits(8) tmp = a0;
res = (tmp + 5) * 2;
}
|
07.06.2015 11:25:03
Тема: Re:Вопросы по C-MPA
|
Александр Соболев
Темы: 0
Сообщений: 28
Мой профиль
|
Решение проходит в отладчике, но не проходит тестирование
Задча: http://dl.gsu.by/task.jsp?nid=1398901&cid=948
Не проходит 3-й тест:
[test 3]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0
A dec[1]: 3
B dec[1]: 3
C dec[1]: 3
Z dec[1]: 9
Текст программы:
unsigned __in __bits(2) A;
unsigned __in __bits(2) B;
unsigned __in __bits(2) C;
unsigned __out __bits(4) Z;
void main(){
Z=A+B+C;
}
|
07.06.2015 11:30:31
Тема: Re:Вопросы по C-MPA
|
Александр Соболев
Темы: 0
Сообщений: 28
Мой профиль
|
Александр Соболев:
Решение проходит в отладчике, но не проходит тестирование
Задча: http://dl.gsu.by/task.jsp?nid=1398901&cid=948
Не проходит 3-й тест:
[test 3]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0
A dec[1]: 3
B dec[1]: 3
C dec[1]: 3
Z dec[1]: 9
Текст программы:
unsigned __in __bits(2) A;
unsigned __in __bits(2) B;
unsigned __in __bits(2) C;
unsigned __out __bits(4) Z;
void main(){
Z=A+B+C;
}
Вопрос снят.
Рабочее решение:
unsigned __in __bits(2) A;
unsigned __in __bits(2) B;
unsigned __in __bits(2) C;
unsigned __out __bits(4) Z;
void main(){
unsigned a=A,b=B,c=C;
Z=a+b+c;
}
|
07.06.2015 11:50:52
Тема: Re:Вопросы по C-MPA
|
Дмитрий Тарасюк
Темы: 0
Сообщений: 42
Мой профиль
|
Тарасюк Дмитрий ПМ-41
Для задачи http://dl.gsu.by/task.jsp?nid=1398940&cid=948
не проходят тесты 3 и 5.
При разбитие решения на дейсвия и проходе отладчиком увидел странности:
1)
z-16 bit
q-8 bit
Для такого действия:
z=(~q);
в z оказывается все биты конвертированными.
q=10000001
z после присваивания 1111111101111110.
2) при выполнения дейсвия
z=q|1;
оно обрабатывает всего 7 битов.
пример
q=01111110
z= 00000000 01111111.
вот полный код программы, который не проходит тесты.
unsigned __in __bits(8) a;
unsigned __in __bits(8) b;
unsigned __out __bits(16) res;
void main(){
unsigned __bits(8) q=a;
unsigned __bits(8) w=b;
unsigned __bits(16) z=0;
if(w>0){
z=(~q);
q=q|1;
z<<=8;
z+=w;
}
else{
z=~q;
z=z|0;
z<<=8;
z+=w;
}
res=z;
}
задачу после решил, но по страннностям решил отписатся.
|
09.06.2015 10:00:52
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Дмитрий Тарасюк:
При разбитие решения на дейсвия и проходе отладчиком увидел странности:
1)
z-16 bit
q-8 bit
Для такого действия:
z=(~q);
в z оказывается все биты конвертированными.
q=10000001
z после присваивания 1111111101111110.
2) при выполнения дейсвия
z=q|1;
оно обрабатывает всего 7 битов.
пример
q=01111110
z= 00000000 01111111.
Я так и не понял в чем странности.
|
09.06.2015 11:02:22
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Александр Соболев:
Решение проходит в отладчике, но не проходит тестирование
Задча: http://dl.gsu.by/task.jsp?nid=1398901&cid=948
Не проходит 3-й тест:
[test 3]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0
A dec[1]: 3
B dec[1]: 3
C dec[1]: 3
Z dec[1]: 9
Текст программы:
unsigned __in __bits(2) A;
unsigned __in __bits(2) B;
unsigned __in __bits(2) C;
unsigned __out __bits(4) Z;
void main(){
Z=A+B+C;
}
При сложении двухбитных переменных происходит переполение.
|
12.09.2016 15:21:39
Тема: Re:Вопросы по C-MPA
|
Игорь Злыденко
Темы: 0
Сообщений: 44
Мой профиль
|
Задача http://dl.gsu.by/task.jsp?nid=1591529&cid=1021
Не работает подсчет факториала через рекурсивную функцию.
int __in __bits(16) x;
int __in __bits(16) y;
int __in __bits(8) a;
int __in __bits(8) b;
int __out __bits(16) R;
int fact(int n)
{
if (n == 1)
return 1;
else
return n * fact(n-1);
}
void main()
{
if (x >= 1 && x <= 7)
{
R = fact(x) + y/(a+b);
}
else
{
R = fact(7) + x * y/(a-b);
}
}
|
21.09.2016 14:19:59
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Игорь Злыденко:
Задача http://dl.gsu.by/task.jsp?nid=1591529&cid=1021
Не работает подсчет факториала через рекурсивную функцию.
int __in __bits(16) x;
int __in __bits(16) y;
int __in __bits(8) a;
int __in __bits(8) b;
int __out __bits(16) R;
int fact(int n)
{
if (n == 1)
return 1;
else
return n * fact(n-1);
}
void main()
{
if (x >= 1 && x <= 7)
{
R = fact(x) + y/(a+b);
}
else
{
R = fact(7) + x * y/(a-b);
}
}
Рекурсивные функции не поддерживаются.
|
26.11.2016 23:10:45
Тема: Re:Вопросы по C-MPA
|
Андрей Красников
Темы: 2
Сообщений: 39
Мой профиль
|
unsigned __in __bits(1) m1;
unsigned __in __bits(1) m2;
unsigned __in __bits(1) start;
unsigned __in __bits(1) C;
unsigned __bits(1) prew;
unsigned __out __bits(4) R;
unsigned __bits(1) nm1;
unsigned __bits(1) nm2;
unsigned __bits(1) nstart;
unsigned __bits(1) nC;
void main(){
nC=C;
nm1=m1;
nm2=m2;
nstart=start;
if (nstart) R=0;
if (prew==0 && nC==1){
R+=nm1+nm2-1;
}
prew=nC;
}
Не могу выполнить задание http://dl.gsu.by/task.jsp?nid=1586267&cid=1021
Код который я написал не проходит 12 тестов. Самое близкое как я мог приблизится это непрохождение 10 тестов. В винтере по отдельности проходит. Помогите разобраться, пожалуйста.
|
29.11.2016 18:17:05
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Этот вариант программы правильный.
В тестах была небольшая ошибка, я ее исправил.
|
14.10.2017 08:55:53
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Почему программа неправильно вычисляет выражение RES = abs(abs(a)-abs(b))*d/c+sign(a*b*c*d);
Дело в том, что в С-МПА нельзя использовать одну и ту же функцию в одном выражении несколько раз (из-за ограничений генератора схем).
Правильно так:
int ma = abs(a);
int mb = abs(b);
int md = abs(ma - mb);
RES = md*d/c + sign(a*b*c*d);
|
26.10.2017 22:02:14
Тема: Re:Вопросы по C-MPA
|
Михаил Бугаенко
Темы: 0
Сообщений: 13
Мой профиль
|
Индивидуальные задания->проектирование цифровых систем->непростая арифметика->корректное время
unsigned __in __bits(17) In;
unsigned __out __bits(1) Out;
void main() {
unsigned __bits(17) x = In;
unsigned __bits(1) res = 1;
unsigned __bits(17) hours = x >> 12;
if (hours > 23) {
res = 0;
}
unsigned __bits(17) minutes = (x % 4096) >> 6;
if (minutes > 59) {
res = 0;
}
unsigned __bits(17) seconds = x % 128;
if (seconds > 59) {
res = 0;
}
Out = res;
}
Вроде подставляю в винтере все тестовые значения и все нормально работает, результаты правильные, в hlccad валится вроде как самый первый тест, не могу понять проблему, подскажите, пожалуйста
ссылка - http://dl.gsu.by/task.jsp?nid=1676647&cid=1061
|
|