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

Темы: 7
Сообщений: 2186

Мой профиль


Ян Ганькин:


	T[cnt]="#" ;

 

Нужно писать T[cnt]='#';
Игорь Коршунов

Темы: 7
Сообщений: 2186

Мой профиль


Ян Ганькин:


В винторе ответ правильный, а тест не проходит.
 

Внимательнее читай условие или подключи тест к WInter.
Павел Войтович

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

Мой профиль
Задача №14 контроля практики 16 ПОИТ-31.
При проверке на DL обвалился последний тест. При проверке в Winter также обвался последний текст. Однако при задании начальных значений (x=-2147483647)
ответ правльный. эта проблема уже упоминалась мною около двух месяцев назад, однако всё ещё не решена (я понимаю, что не хватает ресурсов, но хоть задачи-то такие надо пресекать). Вот код.
int __in __bits(32)x;
int __out __bits(16)y;

void main()
{
unsigned __bits(16)k=1;
unsigned __bits(16)xx=x;
unsigned __bits(16)xy=x>>16;
int i=0;
int j=0;
unsigned __bits(16)mx=0;
while ((k>0)&&(k<0x8000))
{
mx=xx&k;
if(mx==k) i++;
k=k<<1;
}
k=0x8000;
while (k>1)
{
mx=xy&k;
if (mx==k) j++;
k=k>>1;
}
if (i>=j) y=xx;
else y=xy;
}
Игорь Коршунов

Темы: 7
Сообщений: 2186

Мой профиль
Павел Войтович, тесты исправлены, присланные решения перетестированы.
Михаил Долинский

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

Мой профиль
Вопросы: (Верес, ПМ-42):

1. Как разделить числа различных длин в С-МПА,
например 2-битовое, на одно битовое в языке С-МПА?
2. Как записать ответ, например, если переменная 4 байта,
а у нас получился результат в бит

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

Темы: 7
Сообщений: 2186

Мой профиль


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


1. Как разделить числа различных длин в С-МПА,
например 2-битовое, на одно битовое в языке С-МПА?
 

unsigned __bits(2) Num1;
unsigned __bits(1) Num2;
unsigned __bits(2) Res;

Res = Num1 / Num2;


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


2. Как записать ответ, например, если переменная 4 байта, а у нас получился результат в бит
 

unsigned __bits(32) Answer;
unsigned __bits(1) Res;

Answer = Res;
Елена Шейхо

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

Мой профиль
Скажите , как в индивидуальных задачах по тестированию в тесте отступить 2 строчки перед входными данными и 1 перед выходными? Они пишутся всегда сначала.
Игорь Коршунов

Темы: 7
Сообщений: 2186

Мой профиль


Елена Филипчик:

Скажите , как в индивидуальных задачах по тестированию в тесте отступить 2 строчки перед входными данными и 1 перед выходными? Они пишутся всегда сначала. 

Сделать две пустые строки можно в любом текстовом редакторе.
Алекс Шубенок

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

Мой профиль
Решаю задачу
Экзамен\Индивидуальные задания\Сконвертированные задания на программирование по схеме\Вычислить выражение\19 - "Программа по схеме 84387"

В этой схеме на сумматор подается константа, но какая именно неизвестно. Условия никакого нет. Таких задач довольно много. Как решать подобные задачи???
Михаил Долинский

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

Мой профиль
1) Этот вопрос не по теме C-MPA
2) Задачи конвертировались автоматически - выяснилось, что не все предусмотрено. Вы обнаружили проблему - мы будем думать, как ее решить и постараемся решить.
3) Решать другие задачи - благо дело их тоже немало.
Александр Громыко

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

Мой профиль
unsigned int __in __bits(8) n = 5;
unsigned int __out __bits(16) r;

void main() {
	int xx = n, r = 0, k = 0, y = 0;
	k = xx - 3;
	y = (k + 1) * k;
	y = y / 2;
	y = y + k;
	r = y;
}


В конце выполнения программы переменная y = 5, а r после присваивания все равно равно нулю.

unsigned int __in __bits(8) n = 5;
unsigned int __out __bits(16) r;

А вот такая программа:
void main() {
	unsigned int __bits(16) xx = n, r = 0, k = 0, y = 0;
	k = xx - 3;
	y = (k + 1) * k;
	y = y / 2;
	y = y + k;
	r = y;
}


Ведет себя еще веселее, она переварачивает байты при присваивании в r из y. При просмотре переменная y показывается как 32ух битная.

Проблема возникала из-за того что переменная r описана в строке:
unsigned int __bits(16) xx = n, r = 0, k = 0, y = 0;

Олег Зайцев

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

Мой профиль
Давно заметил недочёт в работе операций инкремента и декремента, сегодня решил разобраться в чём же дело. Изрядно помучившись, пришёл к следующему:

void main(){
	int contPtr = 0; char container[10];
	container[0] = '0';
	container[contPtr++] = '1';

	int i=0; char str[50];

	if (container[i++] == '0'){
		container[i++] = '3';
	}
	break;
}


На строке 4 происходит следующее: сначала переменной contPtr присваивается изменённое значение (contPtr становится равным 1), затем в container[1] заносится символ нуля. По правилам постфиксной и префиксной форм (например для ANSI C):
- При постфиксной: сначала операция, затем инкремент.
- При префиксной : сначала инкремент, затем операция.

Дальше больше.

8 строка: при описанном выше подходе ожидаем, что значение container[1] будет сравнён с '1' (в 4ой строке мы занесли в [1] элемент 1, строкой выше в [0] - 0). Как ни странно в тело if мы попадаем (это говорит нам о том, что операция инкремента прошла после операции сравнения). В строчке ниже обратный процесс - сначала инкремент и т.д.

Таким образом, складывается впечатление, что операции инкремента и декремента в таблице приоритетов операций попали между оператором = и операцией ==.

PS префиксная форма ведёт себя абсолютно корректно.
Игорь Коршунов

Темы: 7
Сообщений: 2186

Мой профиль


Олег Зайцев:

Давно заметил недочёт в работе операций инкремента и декремента, сегодня решил разобраться в чём же дело. 

+30 бонусных баллов!
Дмитрий Герасимов

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

Мой профиль
Indirect addresing is not syntesable yet.
А можно номер строчки узнать, в которой ошибка?
И есть ли какие-нибудь варианты сконвертировать эту программу?

unsigned __in __bits(8) A;
unsigned __in __bits(8) B;
unsigned __in __bits(8) C;
unsigned __in __bits(8) D;
unsigned __out __bits(8) E;

void main() {
	unsigned __bits(8) mas[4];
	mas[0] = A;
	mas[1] = B;
	mas[2] = C;
	mas[3] = D;
	unsigned __bits(8) sr = 0;
	for (int i = 0; i<4; i++)
		sr+=mas[i];
	sr/=4;
	unsigned __bits(8) max = 0;
	int __bits(9) tek;
	unsigned __bits(8) m;
	for (i = 0; i<4; i++) {
		tek = mas[i] - sr;
		m = tek>0? tek : -tek;
		if (m>max) max = m;
	}
	E = max;
}

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

Темы: 7
Сообщений: 2186

Мой профиль


Дмитрий Герасимов:

А можно номер строчки узнать, в которой ошибка? 

Использовать массивы при построении схем пока нельзя.


Дмитрий Герасимов:

И есть ли какие-нибудь варианты сконвертировать эту программу?
 

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