Автор |
Сообщение |
21.02.2012 21:48:50
Тема: Re:Вопросы по C-MPA
|
Вячеслав Кацубо
Темы: 2
Сообщений: 60
Мой профиль
|
Ясно)
|
08.05.2012 18:28:25
Тема: Re:Вопросы по C-MPA
|
Глеб Усольцев
Темы: 0
Сообщений: 26
Мой профиль
|
Возникла проблема с задачей 85538 Количество диагоналей (программа).
При проверке на DL возникает ошибка на 4м тесте:
[test 4]: Тест не прошел: r dec[2]: 19700.
Тем не менее в Winter решение проходит все тесты (тесты взяты с DL).
Код решения:
unsigned __in __bits(8) n;
unsigned __out __bits(16) r;
void main()
{
r = n*(n-3)/2;
}
Подскажите пожалуйста в чем дело. Заранее спасибо.
|
11.05.2012 06:47:42
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Глеб Усольцев:
Возникла проблема с задачей 85538 Количество диагоналей (программа).
При проверке на DL возникает ошибка на 4м тесте:
[test 4]: Тест не прошел: r dec[2]: 19700.
Тем не менее в Winter решение проходит все тесты (тесты взяты с DL).
Код решения:
unsigned __in __bits(8) n;
unsigned __out __bits(16) r;
void main()
{
r = n*(n-3)/2;
}
Подскажите пожалуйста в чем дело. Заранее спасибо.
Происходит переполнение при умножении 8-битной переменной. Правильно так:
unsigned __in __bits(8) n;
unsigned __out __bits(16) r;
void main()
{
unsigned __in __bits(16) n16 = n;
r = n16*(n16-3)/2;
}
|
11.05.2012 14:31:43
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Глеб Усольцев:
Тем не менее в Winter решение проходит все тесты (тесты взяты с DL).
В отчете после каждого теста было сообщение "Тест прошел"?
У меня это решение не проходит 3 теста:
[test 1]: Тест прошел.
[test 2]: Тест прошел.
[test 3]: Тест прошел.
[test 4]: Тест не прошел: r dec[2]: 19700.
[test 5]: Тест прошел.
[test 6]: Тест прошел.
[test 7]: Тест прошел.
[test 8]: Тест прошел.
[test 9]: Тест прошел.
[test 10]: Тест прошел.
[test 11]: Тест не прошел: r dec[2]: 31877.
[test 12]: Тест не прошел: r dec[2]: 31625.
|
15.05.2012 16:14:24
Тема: Re:Вопросы по C-MPA
|
Глеб Усольцев
Темы: 0
Сообщений: 26
Мой профиль
|
Разобрался, спасибо за ответ.
На компьютере, на котором я решал задачу стояла старая версия Winter. И в той версии задача с моим решением проходила все тесты без ошибок. Когда обновил Winter, решение перестало проходить 4й тест, как и должно было.
|
18.05.2012 14:56:56
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Еще один пример ошибки с занесением на выход неправильного значения:
int __in __bits(16) a;
int __in __bits(16) b;
int __out __bits(16) res;
void main(){
res=0;
if ((a%b)==0) {
res=b;
}
if ((b%a)==0) {
res=a;
}
}
На выход можно подавать только уже посчитанный результат.
Правильно так:
int __in __bits(16) a;
int __in __bits(16) b;
int __out __bits(16) res;
void main(){
if ((a%b)==0) {
res=b;
}
else if ((b%a)==0) {
res=a;
}
else res = 0;
}
|
20.05.2012 09:22:47
Тема: Re:Вопросы по C-MPA
|
Артем Хоруженко
Темы: 0
Сообщений: 41
Мой профиль
|
такой вопрос:
Экзамен\Индивидуальные задания\С-TCPU\Программы по схемам\Логические элементы\10 - "Домино" 83393 Задача Чаетской Ольги
http://dl.gsu.by/task.jsp?nid=917218&cid=813
int __bits(3) x[2];
int __bits(3) y[2];
unsigned __out __bits(1) out=0;
void main(){
if((x[0]==y[0]) || (x[0]==y[1])||(x[1]==y[0])||(x[1]==y[1])) out++;
я в принимаю по массив по 3 бита
и просто сравниваю. В winter все тесты пройдены когда отправляю ошибка в тесте[3]
[test 3]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0
X dec[1]: 10
Y dec[1]: 29
OUT dec[1]: 0
что не так?
|
22.05.2012 14:47:45
Тема: Re:Вопросы по C-MPA
|
Михаил Пасенко
Темы: 0
Сообщений: 45
Мой профиль
|
unsigned __in __bits(16) in=10
unsigned __in __bits(4) s=2;
unsigned __out __bits(16) out;
void main() {
unsigned __bits(16) a=in;
unsigned __bits(16) b=in;
for (int i=0; i<d; i++) {
a=a*2;
}
for (int i=0; i<(16-s); i++) {
b=b/2;
}
out=a^b;
}
При выполнении на шестой строчке выдает ошибку "Деление на ноль"
строчка <unsigned __bits(16) b=in;>
|
22.05.2012 15:59:55
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Артем Хоруженко:
такой вопрос:
Экзамен\Индивидуальные задания\С-TCPU\Программы по схемам\Логические элементы\10 - "Домино" 83393 Задача Чаетской Ольги
http://dl.gsu.by/task.jsp?nid=917218&cid=813
int __bits(3) x[2];
int __bits(3) y[2];
unsigned __out __bits(1) out=0;
void main(){
if((x[0]==y[0]) || (x[0]==y[1])||(x[1]==y[0])||(x[1]==y[1])) out++;
я в принимаю по массив по 3 бита
и просто сравниваю. В winter все тесты пройдены когда отправляю ошибка в тесте[3]
[test 3]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0
X dec[1]: 10
Y dec[1]: 29
OUT dec[1]: 0
что не так?
При таком объявлении будут неправильно инициализироваться входные переменные. Нужно объявлять так:
int __bits(6) x;
int __bits(6) y;
|
22.05.2012 16:01:45
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Михаил Пасенко:
unsigned __in __bits(16) in=10
unsigned __in __bits(4) s=2;
unsigned __out __bits(16) out;
void main() {
unsigned __bits(16) a=in;
unsigned __bits(16) b=in;
for (int i=0; i<d; i++) {
a=a*2;
}
for (int i=0; i<(16-s); i++) {
b=b/2;
}
out=a^b;
}
При выполнении на шестой строчке выдает ошибку "Деление на ноль"
строчка <unsigned __bits(16) b=in;>
Чтобы не было проблем WInter нужно запускать через батники.
|
25.05.2012 19:20:17
Тема: Re:Вопросы по C-MPA
|
Артём Котов
Темы: 0
Сообщений: 61
Мой профиль
|
http://dl.gsu.by/task.jsp?nid=915659&cid=813
Вот такое решение не проходит на С, но сгенерированный проект с этого исходника проходит все тесты.
Исходник:
unsigned __in __bits(8) n;
unsigned __out __bits(16) r;
void main()
{
r = (n*(n-3))/2;
}
тест:
[test 4]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0
n dec[1]: 200
r dec[2]: 19700
|
29.05.2012 13:52:42
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Артём Котов:
http://dl.gsu.by/task.jsp?nid=915659&cid=813
Вот такое решение не проходит на С, но сгенерированный проект с этого исходника проходит все тесты.
Исходник:
unsigned __in __bits(8) n;
unsigned __out __bits(16) r;
void main()
{
r = (n*(n-3))/2;
}
тест:
[test 4]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0
n dec[1]: 200
r dec[2]: 19700
Здесь происходит переполнение при умножении n*(n-3). В будущем это будет исправлено. А сейчас можно завести промежуточную 16-битную переменную для хранения результата произведения.
unsigned __bits(16) t = n;
t *= n - 3;
|
29.05.2012 19:19:54
Тема: Re:Вопросы по C-MPA
|
Алексей Белоглазов
Темы: 0
Сообщений: 82
Мой профиль
|
Задача http://dl.gsu.by/task.jsp?nid=918251&cid=813
Проходят первые 5 тестов, а 6 (самый простой) не проходит.
Вот исходник:
unsigned __bits(8) mmreg1[8];
unsigned __bits(8) mmreg2[8];
unsigned __bits(8) mmreg3[8];
void main() {
mmreg3[7] = mmreg2[7];
mmreg3[6] = mmreg1[7];
mmreg3[5] = mmreg2[6];
mmreg3[4] = mmreg1[6];
mmreg3[3] = mmreg2[5];
mmreg3[2] = mmreg1[5];
mmreg3[1] = mmreg2[4];
mmreg3[0] = mmreg1[4];
}
|
30.05.2012 07:41:22
Тема: Re:Вопросы по C-MPA
|
Михаил Долинский
(Online)
Темы: 2072
Сообщений: 49883
Мой профиль
|
29.05.2012 19:10:10 29.05.2012 19:10:13 Белоглазов Алексей Архитектура вычислительных систем (М3/ПМ4) - 2012 3. Программа по схеме 101894 0 [test 6]: Тест не прошел: mmreg3 hex[8]: 0. 1.tc DelTA3 at DLServer
|
30.05.2012 10:19:50
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Алексей Белоглазов:
Задача http://dl.gsu.by/task.jsp?nid=918251&cid=813
Проходят первые 5 тестов, а 6 (самый простой) не проходит.
Вот исходник:
unsigned __bits(8) mmreg1[8];
unsigned __bits(8) mmreg2[8];
unsigned __bits(8) mmreg3[8];
void main() {
mmreg3[7] = mmreg2[7];
mmreg3[6] = mmreg1[7];
mmreg3[5] = mmreg2[6];
mmreg3[4] = mmreg1[6];
mmreg3[3] = mmreg2[5];
mmreg3[2] = mmreg1[5];
mmreg3[1] = mmreg2[4];
mmreg3[0] = mmreg1[4];
}
Тест исправлен, решения перетестированы.
|
|