[Logo] Форум DL
  [DL]  На главную страницу 
Индекс форума ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2, 3, ... 23, 24, 25, 26
Автор Сообщение
Михаил Долинский

Темы: 1984
Сообщений: 47256

Мой профиль
Может надо адекватную ошибку компиляции выдавать?

03.11.2022 11:40:42 03.11.2022 11:40:46 Поддубный Пётр
Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2022
10. Совершенные числа
0
[1]: Размерность переменной n должна быть 2 байта. src.mpc
DelTA3 at NIT7




Он объявил внутри переменную с таким же именем n, как и входная перменная
int n=0;



int __in __bits(16) n;

int __out __bits(16) res;

void main(){
  int __bits(16) res2=n;
  int __bits(16) sup[20];
  int i=0;
  int n=0;
  int c=1;
  int __bits(16) sum=0;
  while(c!=res2){
                if((res2%c) == 0){
                  sup[i]=c;
                  i++;
                }
                c++;
  }
  n=i;
  for(i=0; i<n; i++){
    sum+=sup[i];
  }
  if(sum==res2){
    res=1;
  }
  else{
    res=0;
  }
}

Михаил Долинский

Темы: 1984
Сообщений: 47256

Мой профиль
09.09.2023 16:20:38 09.09.2023 16:20:42 Долинский Михаил Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2023 ЦЧ. Работа с числом 1 Все тесты пройдены (основной + секретный). src_b.mpc DelTA4 at NIT0 Win10 x64

09.09.2023 15:55:41 09.09.2023 15:55:47 Долинский Михаил Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2023 ЦЧ. Работа с числом 0 [1]: Тест не прошел: res dec[2]: 8. src.mpc DelTA4 at NIT1 Win10



Такое решение не проходит – Лукъянов Артур (ПО-41) написал

unsigned __in __bits(16) A;

unsigned __out __bits(16) RES;

void main()
{
	unsigned __bits(16) a = A;
	int x;
	int k = 0;

	while (a != 0)
	{
		x = a % 10;
		a /= 10;

		k++;
	}

	RES = x * k;
}


Такое решение проходит (вместо переменной a поставлена b)

unsigned __in __bits(16) A;

unsigned __out __bits(16) RES;

void main()
{
    unsigned __bits(16) b = A;
	int x;
	int k = 0;

	while (b != 0)
	{
		x = b % 10;
		b /= 10;

		k++;
	}

	RES = x * k;
}

Вячеслав Калиниченко

Темы: 0
Сообщений: 15

Мой профиль
Командные олимпиады\Архитектура вычислительных систем - основные понятия\Контрольный срез (Пример 2)\Проектирование\ЛФ - "Логические функции"
https://dl.gsu.by/task.jsp?nid=2285197&cid=1335

int __in __bits(1) IN_0;
int __in __bits(1) IN_1;
int __in __bits(1) IN_2;
int __in __bits(1) IN_3;
int __in __bits(1) IN_4;

int __out __bits(1) OUT_0;
int __out __bits(1) OUT_1;


void main()
{
	OUT_0 =	~IN_0 | (IN_1 ^ IN_2);
	OUT_1 = IN_3 & (~IN_4);
}

Никита Путинцев

Темы: 0
Сообщений: 2

Мой профиль
Командные олимпиады\Архитектура учебного процессора TCPU \Проектирование TCPU\4 - "Команда ADD для TCPU" 57949 Хруцкий Д. и др., ПОИТ-37, июнь 2007
https://dl.gsu.by/task.jsp?nid=2285211&cid=1335

unsigned __in __bits(8) d;
unsigned __in __bits(1) R;

unsigned __out __bits(8) A;

unsigned __bits(8) AA;

void main()
{
	if (R == 1)
		AA = 0;
	else
		AA = AA + d;
	A = AA;
}


Не проходит решение
Полина Храпунова

Темы: 0
Сообщений: 13

Мой профиль
https://dl.gsu.by/task.jsp?nid=2285454&cid=1335

Командные олимпиады\Особенности архитектуры МП Intel 80286\Контрольный срез (Пример 3)\Базовый\Т - "Задача №3 (тестирование: 20)" 100807 TaskConverter Winter тестирование 2010 Октябрь 13

5.10 15:08 Т. Задача №3 (тестирование: 20) 0 / 100 Эталонная программа не смогла пройти тесты. [test 2]: WInter: программное исключение. 1.txt.txt DelTA4 at NIT0 Win10 Text files

Report = report.txt
StopOnError = false
Statistics = false
WatchReport = false
ShowReport = false

[test 1]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0


a dec[2]: 3
b dec[2]: 1
c hex: FE
d dec: 2

res dec[2]: 12


[test 2]
Cycles = 1000
CheckCycles = false
Segment - 0
Offset - 0


a sgn[2]: 4
b sgn[2]: 5
c sgn: 7
d sgn: 1

res sgn[2]:-6
Михаил Долинский

Темы: 1984
Сообщений: 47256

Мой профиль
После : должен быть пробел перед -6
Михаил Гребёнкин

Темы: 1
Сообщений: 33

Мой профиль
Командные олимпиады\Архитектура вычислительных систем\Микропрограммирование на С-МПА\1 (с решениями)\7 - "Количество" 41301

http://dl.gsu.by/task.jsp?nid=2347913&cid=1336

В винтере решение проходит, после компиляции в HLCCAD при проверке тестов выдаёт ошибки

unsigned __in __bits(8) in = 0xFF;
unsigned __out __bits(3) out;

main()
{
	unsigned __bits(8) a =in;
	unsigned __bits(1) temp1;
	unsigned __bits(1) temp2;
	unsigned __bits(1) temp3;
	unsigned __bits(3) count =0;
	temp1 = a & 1;
	a = a >> 1;
	temp2 = a &1;
	a = a >> 1;
	temp3 = a &1;
	if((temp1+ temp2 + temp3) == 3) count +=1;
	unsigned __bits(3) i = 5;
	for(;i>0;i--)
	{
		a = a >> 1;
		temp1 = temp2;
		temp2 = temp3;
		temp3 = a &1;
		if((temp1+ temp2 + temp3) == 3) count +=1;
	};
	out = count;

}

Михаил Долинский

Темы: 1984
Сообщений: 47256

Мой профиль


Михаил Гребёнкин:

Командные олимпиады\Архитектура вычислительных систем\Микропрограммирование на С-МПА\1 (с решениями)\7 - "Количество" 41301

http://dl.gsu.by/task.jsp?nid=2347913&cid=1336

В винтере решение проходит, после компиляции в HLCCAD при проверке тестов выдаёт ошибки

unsigned __in __bits(8) in = 0xFF;
unsigned __out __bits(3) out;

main()
{
	unsigned __bits(8) a =in;
	unsigned __bits(1) temp1;
	unsigned __bits(1) temp2;
	unsigned __bits(1) temp3;
	unsigned __bits(3) count =0;
	temp1 = a & 1;
	a = a >> 1;
	temp2 = a &1;
	a = a >> 1;
	temp3 = a &1;
	if((temp1+ temp2 + temp3) == 3) count +=1;
	unsigned __bits(3) i = 5;
	for(;i>0;i--)
	{
		a = a >> 1;
		temp1 = temp2;
		temp2 = temp3;
		temp3 = a &1;
		if((temp1+ temp2 + temp3) == 3) count +=1;
	};
	out = count;

}

 


Эта программа делает много лишних действий и поэтому не успевает посчитать ответ за отведённое на тест время.

Вот авторское решение, которое проходит все тесты

unsigned __in __bits(8) in;

unsigned __out __bits(3) out;

void main()
{
    unsigned __bits(3) cnt = 0;
    unsigned __bits(9) t = in;
    while (t >= 7)
    {
        if ((t & 7) == 7) cnt++;
        t >>= 1;
    }
    out = cnt;
}


Вячеслав Калиниченко

Темы: 0
Сообщений: 15

Мой профиль
int __bits(8) a[10];

int __out __bits(8) summ;

void main() {
	int __bits(8) max = a[0];
	int __bits(8) min = a[0];
	int i = 0;
	for (i; i < 10; i++) {
		if (a[i] < min)
			min = a[i];
		if (a[i] > max)
			max = a[i];
	}
	summ = min + max;
}

При попытке поставить a(массив) в окно просмотра через Переменная Winter слетает

Как просматривать массивы в C-MPA?
Михаил Долинский

Темы: 1984
Сообщений: 47256

Мой профиль


Вячеслав Калиниченко:

int __bits(8) a[10];

int __out __bits(8) summ;

void main() {
	int __bits(8) max = a[0];
	int __bits(8) min = a[0];
	int i = 0;
	for (i; i < 10; i++) {
		if (a[i] < min)
			min = a[i];
		if (a[i] > max)
			max = a[i];
	}
	summ = min + max;
}

При попытке поставить a(массив) в окно просмотра через Переменная Winter слетает

Как просматривать массивы в C-MPA? 

Отладка С-МПА программ v1 (Алесенко Антонина, ПО-41, октябрь 2022)
Александр Санец

Темы: 0
Сообщений: 15

Мой профиль
http://dl.gsu.by/task.jsp?nid=2351616&cid=1336

Контрольные срезы\21 ноября\Проектирование\По логическим функциям\4 - "Device" 44111 Дюбкин Александр, ПМ-44, май 2006



unsigned __in __bits(1) IN_0=1 ;
unsigned __in __bits(1) IN_1 =0;
unsigned __in __bits(1) IN_2=1 ;
unsigned __in __bits(1) IN_3 =0;
unsigned __in __bits(1) IN_4=1 ;
unsigned __out __bits(1) OUT_0 ;

void main(){
 unsigned __in __bits(1) a=IN_0 & IN_1	;
 unsigned __in __bits(1) b=a | IN_2;
 unsigned __in __bits(1) c=IN_3 & IN_4;
 unsigned __in __bits(1) d=b ^ c;
 OUT_0 = ~d;

}


1 0 Ошибка: Несовпадение OUT_0:1=0 [2 ns]

;1
IN_0=1 at 1001 ps
IN_1=0 at 1001 ps
IN_2=1 at 1001 ps
IN_3=0 at 1001 ps
IN_4=1 at 1001 ps
Assert OUT_0=0 at 2000 ps

У меня в Winter в это программе OUT_0 = 0 как и должно быть а Hlccad выводит 1 при подлюченных тестах


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);

}

А это прошло все тесты
Михаил Гребёнкин

Темы: 1
Сообщений: 33

Мой профиль
http://dl.gsu.by/task.jsp?nid=2350855&cid=1336
Контрольные срезы\5 декабря\Программирование\Обработка строк (простая)\22 - "По три" 56822 Грищенко Екатерина, ПМ-45, май 2007
в новом окне (Установлена: 27.05.2007)
char ins[120] = "#....................................#";
char outs[120]=".......................................";

main(){
	int temp = 0,i=0;
	while( ins[i]!='#'){
		outs[i]=ins[i];
		if	(temp == 2){
			temp= -1;
			outs[i-2]=ins[i];
			outs[i]=ins[i-2];
		}
		temp++;
		i++;


	}
	outs[i]='#';





}

я подключаю первый тест не проходит второй тест, проверяю второй тест не проходит первый тест
Михаил Долинский

Темы: 1984
Сообщений: 47256

Мой профиль


Михаил Гребёнкин:

http://dl.gsu.by/task.jsp?nid=2350855&cid=1336
Контрольные срезы\5 декабря\Программирование\Обработка строк (простая)\22 - "По три" 56822 Грищенко Екатерина, ПМ-45, май 2007
в новом окне (Установлена: 27.05.2007)
char ins[120] = "#....................................#";
char outs[120]=".......................................";

main(){
	int temp = 0,i=0;
	while( ins[i]!='#'){
		outs[i]=ins[i];
		if	(temp == 2){
			temp= -1;
			outs[i-2]=ins[i];
			outs[i]=ins[i-2];
		}
		temp++;
		i++;


	}
	outs[i]='#';





}

я подключаю первый тест не проходит второй тест, проверяю второй тест не проходит первый тест 


Присваивать нельзя
- иначе тесты игнорируются, а работа происходит с присваиваемой строкой.

Такое решение проходит все тесты

char ins[120];
char outs[120];

main(){
	int temp = 0,i=0;
	while( ins[i]!='#'){
		outs[i]=ins[i];
		if	(temp == 2){
			temp= -1;
			outs[i-2]=ins[i];
			outs[i]=ins[i-2];
		}
		temp++;
		i++;


	}
	outs[i]='#';
}

Александр Дудинский

Темы: 0
Сообщений: 17

Мой профиль
Здравствуйте, я занимался разработкой мультиплексора в C-MPA для обучения ИИ бота. Задача состоит в том, что на выход подаётся a+b+c+d, если a>b; в остальных случаях на выход подаётся a-b-c-d.
Код программы:

unsigned __in __bits(16) a=10;
unsigned __in __bits(16) b=1;
unsigned __in __bits(8) c=3;
unsigned __in __bits(8) d=4;

unsigned __out __bits(16) RES;

unsigned __bits(16) ms(unsigned __bits(1) A, unsigned __bits(16) X[2]){
	unsigned __bits(16) otvet;
	switch(A){
		case 0:	otvet=X[0]; break;
		case 1: otvet=X[1]; break;
	}
	return otvet;
}

void main(){
	unsigned __bits(1) A;
	unsigned __bits(16) X[2];

	X[0]=a+b+c+d;
	X[1]=a-b-c-d;

	if(a>b) A=1;
	else A=0;
	RES=ms(A,X[2]);
}


Выдаёт ошибку на 11-ой строке: This variable is not array: X.
По сути, проблема состоит в передаче массива в функцию.
Александр Дудинский

Темы: 0
Сообщений: 17

Мой профиль
Рабочий вариант программы(без массива):
unsigned __in __bits(16) a=10;
unsigned __in __bits(16) b=1;
unsigned __in __bits(8) c=3;
unsigned __in __bits(8) d=4;

unsigned __out __bits(16) RES;

unsigned __bits(16) ms(unsigned __bits(1) A, unsigned __bits(32) X){
	unsigned __bits(16) otvet;
	switch(A){
		case 0:	otvet=X; break;
		case 1: X=X>>16; otvet=X; break;
	}
	return otvet;
}

void main(){
	unsigned __bits(1) A;
	unsigned __bits(32) X;
	unsigned __bits(16) vetv1;
	unsigned __bits(16) vetv2;

	X=a+b+c+d;
	X=X << 16;
	X=X | a-b-c-d;

	if(a>b) A=1;
	else A=0;
	RES=ms(A,X);
}

 
Индекс форума ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2, 3, ... 23, 24, 25, 26
Time:0,031