Автор |
Сообщение |
04.02.2013 17:23:13
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Василий Писпанен:
Добрый день
C-MPA, простая программа по задаче http://dl.gsu.by/task.jsp?nid=1110210&cid=860
int __in __bits(16) a;
int __in __bits(16) b;
int __in __bits(8) c;
int __in __bits(8) d;
unsigned __out __bits(16) RES;
void main()
{
if (a*d<0){
RES=a/b+c-d*a;
} else {
RES=b-(c+a/d)*b;
}
}
Программа проходит тесты, но в Winter не компилируется:
[Ошибка]2.mpc: Функция main() не определена
По какой-то причине компилятор не смог открыть исходный файл (он должен распологаться в том же каталоге, что и файл проекта .WID).
|
04.02.2013 18:12:39
Тема: Re:Вопросы по C-MPA
|
Екатерина Марченко
Темы: 0
Сообщений: 13
Мой профиль
|
http://dl.gsu.by/task.jsp?nid=1093025&cid=860
Экзамен\Индивидуальные задания\Программирование микроконтроллеров\Вычислить выражение\1 - "Умножение" 43313
unsigned __in __bits(1) A;
unsigned __in __bits(1) B;
unsigned __out __bits(1) C;
void main()
{
C=A*B;
}
получили ошибку в исходном тексте не указана точка остановы.
после того как исправили размерность на 8, тесты прошли.
Но изменив обратно с 8 на 1, выше указанной ошибки не выявлено, при этом появилась новая: тест не прошел: С Dec:6
|
04.02.2013 20:39:39
Тема: Re:Вопросы по C-MPA
|
Виталий Коган
Темы: 1
Сообщений: 189
Мой профиль
|
Екатерина Марченко:
http://dl.gsu.by/task.jsp?nid=1093025&cid=860
Экзамен\Индивидуальные задания\Программирование микроконтроллеров\Вычислить выражение\1 - "Умножение" 43313
unsigned __in __bits(1) A;
unsigned __in __bits(1) B;
unsigned __out __bits(1) C;
void main()
{
C=A*B;
}
получили ошибку в исходном тексте не указана точка остановы.
после того как исправили размерность на 8, тесты прошли.
Но изменив обратно с 8 на 1, выше указанной ошибки не выявлено, при этом появилась новая: тест не прошел: С Dec:6
Судя по коду, когда вы меняете с 8 бит на 1, то размерность входных данных становится 1 бит, а ни как не 1 байт, как вы наверное думали (может вы как-то по другому переходили с 8 на 1, но я судил по данному коду)
|
05.02.2013 14:07:38
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Екатерина Марченко:
http://dl.gsu.by/task.jsp?nid=1093025&cid=860
Экзамен\Индивидуальные задания\Программирование микроконтроллеров\Вычислить выражение\1 - "Умножение" 43313
unsigned __in __bits(1) A;
unsigned __in __bits(1) B;
unsigned __out __bits(1) C;
void main()
{
C=A*B;
}
получили ошибку в исходном тексте не указана точка остановы.
после того как исправили размерность на 8, тесты прошли.
Но изменив обратно с 8 на 1, выше указанной ошибки не выявлено, при этом появилась новая: тест не прошел: С Dec:6
Для размерности в 1 байт нужно писать __bits(8).
|
05.02.2013 20:16:29
Тема: Re:Вопросы по C-MPA
|
Михаил Долинский
Темы: 2072
Сообщений: 49883
Мой профиль
|
Игорь Коршунов:
Екатерина Марченко:
http://dl.gsu.by/task.jsp?nid=1093025&cid=860
Экзамен\Индивидуальные задания\Программирование микроконтроллеров\Вычислить выражение\1 - "Умножение" 43313
unsigned __in __bits(1) A;
unsigned __in __bits(1) B;
unsigned __out __bits(1) C;
void main()
{
C=A*B;
}
получили ошибку в исходном тексте не указана точка остановы.
после того как исправили размерность на 8, тесты прошли.
Но изменив обратно с 8 на 1, выше указанной ошибки не выявлено, при этом появилась новая: тест не прошел: С Dec:6
Для размерности в 1 байт нужно писать __bits(8).
Да это мы и сами поняли. А написали, чтобы у Вас была возможность повторить ситуацию и избавиться от неадекватного сообщения.
|
07.02.2013 20:44:15
Тема: Re:Вопросы по C-MPA
|
Илья Щурок
Темы: 1
Сообщений: 66
Мой профиль
|
Задача :
http://dl.gsu.by/task.jsp?nid=1109976&cid=860
Решение:
int __bits(32) s[500];
int __bits(32) s1[500];
int __out __bits(4) ch;
int __bits(32) temp[500];
void main(){
ch = 0;
int i = 0;
int j=0;
while(ch!='#'){
ch = s[i];
i = i+1;
if (ch!='#') {
s1[j] = ch;
s1[j+1] = ch;
j = j+2;
}
}
}
Ошибка в логе :
7.2 20:35 14. Дублирование символов 0 / 100 Внутренняя ошибка WChecker: не удается открыть report.txt temp.mpc DelTA3 at DLServer Winter mpc
Возможно, решение и неправильное, но компилятор WINTER'а пропускает и значение сей ошибки не освещено, как следствие - методы борьбы с ней неизвестны.
______________________
Жизнь - забытые следы чьей-то Глубины...
|
08.02.2013 09:27:58
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Илья Щурок:
Задача :
http://dl.gsu.by/task.jsp?nid=1109976&cid=860
Решение:
int __bits(32) s[500];
int __bits(32) s1[500];
int __out __bits(4) ch;
int __bits(32) temp[500];
void main(){
ch = 0;
int i = 0;
int j=0;
while(ch!='#'){
ch = s[i];
i = i+1;
if (ch!='#') {
s1[j] = ch;
s1[j+1] = ch;
j = j+2;
}
}
}
Ошибка в логе :
7.2 20:35 14. Дублирование символов 0 / 100 Внутренняя ошибка WChecker: не удается открыть report.txt temp.mpc DelTA3 at DLServer Winter mpc
Возможно, решение и неправильное, но компилятор WINTER'а пропускает и значение сей ошибки не освещено, как следствие - методы борьбы с ней неизвестны.
Здесь две ошибки при объявлении переменных.
1. Строки объявляются так:
char s[500];
char s1[500];
2. Перменная ch должна иметь размерность 8 бит.
char ch;
или
int __bits(8) ch;
|
11.02.2013 16:29:50
Тема: Re:Вопросы по C-MPA
|
Екатерина Кудёлка
Темы: 0
Сообщений: 28
Мой профиль
|
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));
}
получаю ошибку компиляции я её не вижу
|
11.02.2013 16:45:21
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Екатерина Кудёлка:
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));
}
получаю ошибку компиляции я её не вижу
Не хватает одной открывающей скобки.
|
11.02.2013 21:23:44
Тема: Re:Вопросы по C-MPA
|
Александр Поздняков
Темы: 0
Сообщений: 88
Мой профиль
|
Если писать конструкцию вида
for(int i=0; i<n; i++){
//some operations
}
компилятор считает переменную i не локальной для цикла, а локальной для всей функции. Т.е. при попытке объявить int i после цикла, компилятор говорит, что такая переменная уже существует.
|
14.02.2013 16:14:23
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Александр Поздняков:
Если писать конструкцию вида
for(int i=0; i<n; i++){
//some operations
}
компилятор считает переменную i не локальной для цикла, а локальной для всей функции. Т.е. при попытке объявить int i после цикла, компилятор говорит, что такая переменная уже существует.
Так было сделано для удобства, т.к. иногда возникает необходимость проверить значение переменной после цикла.
|
17.02.2013 19:35:07
Тема: Re:Вопросы по C-MPA
|
Василий Писпанен
Темы: 0
Сообщений: 76
Мой профиль
|
http://dl.gsu.by/task.jsp?nid=1090759&cid=860
вот такое решение:
unsigned __in __bits(3) x=5;
unsigned __out __bits(8) y;
void main () {
y=0;
unsigned __bits(3) i=0;
for (i=0; i<x; i++) {
y|=1<<i;
}
}
когда отладчик доходит до строки y|=1<<i; Winter вылетает с ошибкой:
Access violation at address in module 'MPA.dll'
|
17.02.2013 19:54:31
Тема: Re:Вопросы по C-MPA
|
Виталий Коган
Темы: 1
Сообщений: 189
Мой профиль
|
Василий Писпанен:
http://dl.gsu.by/task.jsp?nid=1090759&cid=860
вот такое решение:
unsigned __in __bits(3) x=5;
unsigned __out __bits(8) y;
void main () {
y=0;
unsigned __bits(3) i=0;
for (i=0; i<x; i++) {
y|=1<<i;
}
}
когда отладчик доходит до строки y|=1<<i; Winter вылетает с ошибкой:
Access violation at address in module 'MPA.dll'
Вася, попробуй заводить отдельную переменную, с ней работать, а в конце уже присваивать её выходному параметру. Может как-то так сделать:
unsigned __in __bits(3) x;
unsigned __out __bits(8) y;
void main () {
unsigned __bits(3) i=0;
unsigned __bits(8) temp=1;
while(i<x){
temp|=temp<<1;
i++;
}
y = temp;
}
|
18.02.2013 17:08:51
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Василий Писпанен:
http://dl.gsu.by/task.jsp?nid=1090759&cid=860
вот такое решение:
unsigned __in __bits(3) x=5;
unsigned __out __bits(8) y;
void main () {
y=0;
unsigned __bits(3) i=0;
for (i=0; i<x; i++) {
y|=1<<i;
}
}
когда отладчик доходит до строки y|=1<<i; Winter вылетает с ошибкой:
Access violation at address in module 'MPA.dll'
У меня не вылетает.
У тебя вылетал WInter установленный в сети ГГУ?
|
20.02.2013 08:06:51
Тема: Re:Вопросы по C-MPA
|
Михаил Долинский
Темы: 2072
Сообщений: 49883
Мой профиль
|
19.02.2013 20:53:16 19.02.2013 20:53:20 Поздняков Александр Архитектура вычислительных систем (М3/ПМ4) - 2013 1. Количество цифр 0 Внутренняя ошибка WChecker: не удается открыть report.txt 1.mpc DelTA3 at DLServer
19.02.2013 20:52:56 19.02.2013 20:52:58 Поздняков Александр Архитектура вычислительных систем (М3/ПМ4) - 2013 1. Количество цифр 0 Внутренняя ошибка WChecker: не удается открыть report.txt 1.mpc DelTA3 at DLServer
char __bits(100) in_str[100];
unsigned __out __bits(8) res;
void main(){
int i = 0;
int sum = 0;
char symbol = in_str[i];
while(symbol != '*'){
if(symbol > '0' && symbol < '9'){
sum++;
}
i++;
symbol = in_str[i];
}
res = sum;
} Это нехорошо, и я попросил Игоря Викторовича разобраться.
|
|