Автор |
Сообщение |
07.02.2009 13:56:53
Тема: Re:Вопросы по C-MPA
|
Галина Юдченко
Темы: 0
Сообщений: 11
Мой профиль
|
Я написала решение задачи по моему она правильно решена,но в протоколе пишет,что 7.2 13:26 Ошибка: Несовпадение y1:0=1 [100 ps] ,но когда я проверяю эту ошибку,то ответ выдаёт в Winter правильно ... и все тесты проходят (Задача:Подготовка к контролю практики\К2. Подводящие упражнения\2\5 - "Вакхабит" 52983)
unsigned __in __bits(1) x1;
unsigned __in __bits(1) x2;
unsigned __in __bits(1) x3;
unsigned __in __bits(1) x4;
unsigned __out __bits(1) y1;
unsigned __out __bits(1) y2;
unsigned __out __bits(1) y3;
unsigned __out __bits(1) y4;
void main()
{
y4 = (x3*(~x1)*(~x2)*(~x4))|(x2*(~x1)*(~x3)*(~x4))|(x1*x2*(~x3)*x4)|(x1*(~x2)*x3*x4);
y3 = x1*x3|x1*x2|x2*x3;
y2 = (~x4)*x1|x1*x3;
y1 = (~x4)|x3|((~x1)*x2)|(x1*(~x2));
}
|
09.02.2009 17:21:14
Тема: Re:Вопросы по C-MPA
|
Ян Ганькин
Темы: 0
Сообщений: 37
Мой профиль
|
Добрый день.
У меня сложилась довольно странная ситуация из которой хотелось бы найти выход.
Дело собственно в том, что написанная мной программа на wintore, при проверке через F7 показывает правильные результаты, причем на все тесты, а при проверки там ( в смысле по ту сторону компьютера:)) показывает следующее: Ошибка: Несовпадение out:00000110=0011 [5 ns] . Однако как было сказано выше проверку в Wintore прошла успешна. Что же делать, точнее в чем ошибка?
unsigned __in __bits(8) in;
unsigned __out __bits(8) out;
void main ()
{
unsigned __bits(8) t=0 ;
while (t*t != in)
{
t++;
};
out=t;
}
|
10.02.2009 20:46:14
Тема: Re:Вопросы по C-MPA
|
Максим Аксютик
Темы: 0
Сообщений: 18
Мой профиль
|
http://dl.gsu.by/NForum/posts/topicshow/691.dl?postid=3585#3585
|
12.02.2009 13:36:35
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Галина Юдченко:
Я написала решение задачи по моему она правильно решена,но в протоколе пишет,что 7.2 13:26 Ошибка: Несовпадение y1:0=1 [100 ps] ,но когда я проверяю эту ошибку,то ответ выдаёт в Winter правильно ... и все тесты проходят
Сперва нужно заменить умножение "*" на логическое И "&". Затем нужно смотреть успевает ли HLCCAD вычислить все выражения за нужное время.
|
13.02.2009 14:19:56
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Ян Ганькин:
Добрый день.
У меня сложилась довольно странная ситуация из которой хотелось бы найти выход.
Дело собственно в том, что написанная мной программа на wintore, при проверке через F7 показывает правильные результаты, причем на все тесты, а при проверки там ( в смысле по ту сторону компьютера ) показывает следующее: Ошибка: Несовпадение out:00000110=0011 [5 ns] . Однако как было сказано выше проверку в Wintore прошла успешна. Что же делать, точнее в чем ошибка?
unsigned __in __bits(8) in;
unsigned __out __bits(8) out;
void main ()
{
unsigned __bits(8) t=0 ;
while (t*t != in)
{
t++;
};
out=t;
}
Скорее всего тут дело в том, что при тестировании схем значения на входной контакт могут быть поданы в любой момент времени. Допустим, если t == 6, и в этот момент на вход подают in = 9 - программа зацикливается.
Чтобы избежать таких проблем значения входных контактов можно сохранить во временные переменные и работать только с ними.
|
16.02.2009 16:28:10
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Михаил Долинский:
Саша Громыко написал
unsigned __in __bits(1) x1;
unsigned __in __bits(1) x2;
unsigned __in __bits(1) x3;
unsigned __in __bits(1) x4;
unsigned __out __bits(1) y1;
unsigned __out __bits(1) y2;
unsigned __out __bits(1) y3;
unsigned __out __bits(1) y4;
void main() {
if (x1 == 0 && x2 == 0 && x3 == 0 && x4 == 0) { y1 = 0; y2 = 0; y3 = 0; y4 = 1; }
else if (x1 == 0 && x2 == 0 && x3 == 0 && x4 == 1) { y1 = 0; y2 = 0; y3 = 1; y4 = 0; }
else if (x1 == 0 && x2 == 0 && x3 == 1 && x4 == 0) { y1 = 0; y2 = 0; y3 = 1; y4 = 1; }
else if (x1 == 0 && x2 == 0 && x3 == 1 && x4 == 1) { y1 = 0; y2 = 1; y3 = 0; y4 = 0; }
else if (x1 == 0 && x2 == 1 && x3 == 0 && x4 == 0) { y1 = 0; y2 = 1; y3 = 0; y4 = 1; }
else if (x1 == 0 && x2 == 1 && x3 == 0 && x4 == 1) { y1 = 0; y2 = 1; y3 = 1; y4 = 0; }
else if (x1 == 0 && x2 == 1 && x3 == 1 && x4 == 0) { y1 = 0; y2 = 1; y3 = 1; y4 = 1; }
else if (x1 == 0 && x2 == 1 && x3 == 1 && x4 == 1) { y1 = 1; y2 = 0; y3 = 0; y4 = 0; }
else if (x1 == 1 && x2 == 0 && x3 == 0 && x4 == 0) { y1 = 1; y2 = 0; y3 = 0; y4 = 1; }
else if (x1 == 1 && x2 == 0 && x3 == 0 && x4 == 1) { y1 = 1; y2 = 0; y3 = 1; y4 = 0; }
else if (x1 == 1 && x2 == 0 && x3 == 1 && x4 == 0) { y1 = 1; y2 = 0; y3 = 1; y4 = 1; }
else if (x1 == 1 && x2 == 0 && x3 == 1 && x4 == 1) { y1 = 1; y2 = 1; y3 = 0; y4 = 0; }
else if (x1 == 1 && x2 == 1 && x3 == 0 && x4 == 0) { y1 = 1; y2 = 1; y3 = 0; y4 = 1; }
else if (x1 == 1 && x2 == 1 && x3 == 0 && x4 == 1) { y1 = 1; y2 = 1; y3 = 1; y4 = 0; }
else if (x1 == 1 && x2 == 1 && x3 == 1 && x4 == 0) { y1 = 1; y2 = 1; y3 = 1; y4 = 1; }
else if (x1 == 1 && x2 == 1 && x3 == 1 && x4 == 1) { y1 = 0; y2 = 0; y3 = 0; y4 = 0; }
}
При переводе такого решения в схему мне выдается запись в протоколе:
6.2 10:03 2. Котенок 0 / 100 Чекер снят по времени (>117 sec) Arifm2.prd DelTA3 at Nit3 HLCCAD project
На мой взгляд, такое решение по времени сниматься не может.
Снимается не решение, а HLCCAD, который сгенерированную схему с множеством условий компилирует слишком долго.
Лучше использовать условия такого вида:
if (y1 == 0) {if (y2 == 0) {...} else {...}}
else {...}
|
16.02.2009 16:52:34
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Михаил Долинский:
Катя Калачева написала такое решение задачи 8. Антисумматор.
Нам показалось, что программа симулируется с ошибкой - обнуляется In_1 перед первым else
Тут дело в том, что после ввода нового значения в окно "переменные" его необходимо подтвердить нажатием 'enter'. После этого новое значение должно стать красным.
|
16.02.2009 17:03:32
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Слава Коноплев:
Зачет\Индивидуальные задания\Проектирование цифровых устройств\Вычислить выражение\6 - "Инкрементор на 3" 41247 Ходорич Дмитрий, ПОИТ-36, апрель 2006 Баллов: 300
В винтере все тесты проходят.
В HLCCAD'e проверить не смог. В половине случаев просто Программа не отвечает, в другой половине значения на выходе отличались от правильного ответа.
При проверке выдается ошибка.
unsigned __in __bits(4) IN_1;
unsigned __out __bits(4) OUT_1;
void main()
{
OUT_1 = IN_1+3;
}
Ошибка: Несовпадение OUT_1:0000=0011 [11 ps]
Исправил тесты - задачу можно пересдать.
|
16.02.2009 17:36:20
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Слава Коноплев:
unsigned __bits(5) t;
unsigned __bits(3) c1=3;
...
void main()
{unsigned __bits(3) c2=3;
....
}
В винтере в списке переменных будут видны только t и с1. c2 не видно. При добавлении вручную окошко с переменной отображается, но изменение переменной там не отражаются. Также при наведении мышкой на переменную в процессе работы программы на с2 пишет неизвестный идентификатор. При переносе описания из функции в описание глобальных переменных, все становится нормально
Чтобы переменные были видны нужно, чтобы они были в области видимости исполняемой в данный момент строки (т.е. можно стать на строку и нажать F4).
|
18.02.2009 12:58:47
Тема: Re:Вопросы по C-MPA
|
Максим Аксютик
Темы: 0
Сообщений: 18
Мой профиль
|
http://dl.gsu.by/task.jsp?nid=332707&cid=597
int __in __bits(16) a;
int __out __bits(16) res;
void main() {
int aa=a;
int a1;
int a2;
if (aa==1 || aa==2)res=1;
else{
a1=1;
res=1;
aa=aa-2;
while(aa){
a2=res;
res=res+a1;
a1=a2;
aa=aa-1;}}
}
из этого кода делаю схему ... последний тест не проходит (при a=8 должно быть res=21) ... в Winter получается 21, а схема дает 89 при тестировании
|
18.02.2009 16:15:13
Тема: Re:Вопросы по C-MPA
|
Дмитрий Глусцов
Темы: 0
Сообщений: 3
Мой профиль
|
http://dl/task.jsp?nid=323081&cid=597
В Wintere мое решение проходит все тесты,
а сгенерированная схема не проходит.
int __bits(8) n;
int __bits(8) a[36];
int __bits(8) t;
void main() {
int j,i,s=0,s1,max1,max;
max=a[0];
for(i=0;i<n;i++)
{
s1=0;
max1=a[i];
for(j=0;j<n;j++)
{
if (max1<a[n*j+i]) max1=a[n*j+i];
s1=s1+a[n*j+i];
}
if (max<max1) {max=max1; s=s1;}
}
t=s;
}
|
18.02.2009 17:19:23
Тема: Re:Вопросы по C-MPA
|
Дмитрий Глусцов
Темы: 0
Сообщений: 3
Мой профиль
|
http://dl/task.jsp?nid=323177&cid=597
Выдает:
[255d=11111111b]: Тест не прошел: str str[8]:11111111.
Хотя программа тоже заполняет массив выходной 1 или '1' (пробовал 2 варианта). Ответы с тестами совпадают, а выдает ошибку.
unsigned __bits(32) d;
int str[8];
void main()
{
unsigned int i,k=128;
for(i=0;i<8;i++)
{
if((d-k)>=0)
{
str[i]=1; d=d-k;
}
else str[i]=0;
k=k/2;
}
}
|
18.02.2009 17:56:20
Тема: Re:Вопросы по C-MPA
|
Михаил Долинский
Темы: 2072
Сообщений: 49883
Мой профиль
|
Тег code вставляй, чтобы было так:
http://dl/task.jsp?nid=323177&cid=597
Выдает:
[255d=11111111b]: Тест не прошел: str str[8]:11111111.
Хотя программа тоже заполняет массив выходной 1 или '1' (пробовал 2 варианта). Ответы с тестами совпадают, а выдает ошибку.
unsigned __bits(32) d;
int str[8];
void main()
{
unsigned int i,k=128;
for(i=0;i<8;i++)
{
if((d-k)>=0)
{
str[i]=1; d=d-k;
}
else str[i]=0;
k=k/2;
}
}
А то я второй раз вместо тебя это делаю
|
19.02.2009 00:27:31
Тема: Re:Вопросы по C-MPA
|
Максим Аксютик
Темы: 0
Сообщений: 18
Мой профиль
|
http://dl.gsu.by/task.jsp?nid=332558&cid=597
unsigned __in __bits(32) A;
unsigned __out __bits(8) Res;
void main(void)
{
int i;
for(i=2;i<A/2;i++) if((A%i)==0) i=A;
if(i>(A-1))
Res=0;
else Res=1;
}
в Винтере все тесты проходят ... а вот схема не проходит
|
19.02.2009 10:59:38
Тема: Re:Вопросы по C-MPA
|
Михаил Долинский
Темы: 2072
Сообщений: 49883
Мой профиль
|
А ПЕРЕПРИСВОИТЬ входные (A) рабочим пробовал?
|
|