[Logo] Форум DL
  [DL]  Back to home page 
Forum Index ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2, 3, ... 8, 9, 10, 11, 12, ... 24, 25, 26
Author Message
Igor Korshunov

Topics: 7
Messages: 2186

My Profile


Василий Писпанен:

Добрый день

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).
Ekaterina Marchenko

Topics: 0
Messages: 13

My Profile
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
Vitaliy Kogan

Topics: 1
Messages: 189

My Profile


Екатерина Марченко:

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, но я судил по данному коду)
Igor Korshunov

Topics: 7
Messages: 2186

My Profile


Екатерина Марченко:

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).
Mihail Dolinskiy

Topics: 1985
Messages: 47307

My Profile


Игорь Коршунов:


Екатерина Марченко:

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). 
Да это мы и сами поняли. А написали, чтобы у Вас была возможность повторить ситуацию и избавиться от неадекватного сообщения.
Ilya Schurok

Topics: 1
Messages: 66

My Profile

Задача :
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'а пропускает и значение сей ошибки не освещено, как следствие - методы борьбы с ней неизвестны.
______________________
Жизнь - забытые следы чьей-то Глубины...
Igor Korshunov

Topics: 7
Messages: 2186

My Profile


Илья Щурок:


Задача :
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;
Ekaterina Kudyolka

Topics: 0
Messages: 28

My Profile
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));
}
получаю ошибку компиляции я её не вижу
Igor Korshunov

Topics: 7
Messages: 2186

My Profile


Екатерина Кудёлка:

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));
}
получаю ошибку компиляции я её не вижу 

Не хватает одной открывающей скобки.
Aleksandr Pozdnyakov

Topics: 0
Messages: 88

My Profile
Если писать конструкцию вида
for(int i=0; i<n; i++){
   //some operations
}

компилятор считает переменную i не локальной для цикла, а локальной для всей функции. Т.е. при попытке объявить int i после цикла, компилятор говорит, что такая переменная уже существует.

Igor Korshunov

Topics: 7
Messages: 2186

My Profile


Александр Поздняков:

Если писать конструкцию вида
for(int i=0; i<n; i++){
   //some operations
}

компилятор считает переменную i не локальной для цикла, а локальной для всей функции. Т.е. при попытке объявить int i после цикла, компилятор говорит, что такая переменная уже существует.
 

Так было сделано для удобства, т.к. иногда возникает необходимость проверить значение переменной после цикла.
Vasiliy Pispanen

Topics: 0
Messages: 76

My Profile
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'
Vitaliy Kogan

Topics: 1
Messages: 189

My Profile


Василий Писпанен:

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;
}
Igor Korshunov

Topics: 7
Messages: 2186

My Profile


Василий Писпанен:

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 установленный в сети ГГУ?
Mihail Dolinskiy

Topics: 1985
Messages: 47307

My Profile
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;
}
Это нехорошо, и я попросил Игоря Викторовича разобраться.
 
Forum Index ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2, 3, ... 8, 9, 10, 11, 12, ... 24, 25, 26
Time:0,046