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

Topics: 6
Messages: 1534

My Profile


Александр Ковальчук:

Экзамен\Индивидуальные задания\Сконвертированные задания на программирование\Простые устройства с памятью\2 - "Арифметика"
http://dl.gsu.by/task.jsp?nid=1760013&cid=1099

На сервере не проходит тест 7, хотя у меня локально проходит все тесты и вовремя. Что бы это могло быть?

int __in __bits(2) A;
int __in __bits(2) B;
int __in __bits(2) C;
int __out __bits(8) RES;
int __bits(8) k;

void main() {
	unsigned __bits(2) mya = A;
	unsigned __bits(2) myb = B;
	unsigned __bits(2) myc = C;
	if (mya * myb < myc + 1) {
		k = 0;
	} else if (mya * myb > myc + 1) {
		k = mya * myb - myc;
	}
	RES = k;
}
 

1. Переменные должны быть объявлены как unsigned.
2. Промежуточные переменные должны быть большей размерности (например, 1 байт), чтобы не было переполнения.
Igor Korshunov

Topics: 6
Messages: 1534

My Profile

Как изменить шрифт в редакторе WInter?
 

В редакторе нажимаем правую кнопку мыши, выбираем "Свойства...", переходим на вторую вкладку "Выделение (цветом)".
Здесь можно изменить шрифт и его размер.
Bogdan Savelev

Topics: 0
Messages: 10

My Profile
При запуске CMPA.bat в каталоге D:\Program Files выпадает ошибка "Не удается найти D:\Program. Проверьте правильно ли указано имя и повторите попытку".

Содержимое CMPA.bat:

set WRKDIR=D:\olymp
md %WRKDIR%
@cd %WRKDIR%
@if errorlevel 1 goto wrong_dir

if not exist %WRKDIR%\src.mpc copy %~dp0bin\src.mpc %WRKDIR%\src.mpc
copy /y %~dp0bin\MPAc.WID %WRKDIR%\MPAc.WID
start %~dp0bin\WInter.exe %WRKDIR%\MPAc.WID --student
exit

:wrong_dir
@echo Не удалось создать папку %WRKDIR%
@echo --------------------------------------------------------------
@echo - Измените рабочую папку на другую в первой строке bat-файла -
@echo --------------------------------------------------------------

@pause
Aleksandr Gorodkov

Topics: 0
Messages: 14

My Profile
Содержимое CMPA.bat:
set WRKDIR=C:\projects\winter
md %WRKDIR%
@cd %WRKDIR%
@if errorlevel 1 goto wrong_dir

if not exist %WRKDIR%\src.mpc copy %~dp0bin\src.mpc %WRKDIR%\src.mpc
copy /y %~dp0bin\MPAc.WID %WRKDIR%\MPAc.WID
start %~dp0bin\WInter.exe %WRKDIR%\MPAc.WID --student
exit

:wrong_dir
@echo Не удалось создать папку %WRKDIR%
@echo --------------------------------------------------------------
@echo - Измените рабочую папку на другую в первой строке bat-файла -
@echo --------------------------------------------------------------

@pause

После изменения WRKDIR на мой Winter открывается на директории D:\olymp(хотя у меня даже диска D: нет). При попытке сохранить файл ошибка "Не удается сохранить файл".
Скриншот проблемы -> https://ibb.co/gjf7XCx
Oleg Guzanov

Topics: 0
Messages: 10

My Profile
Аналогично посту выше на моей машине отсутствует каталог D:. Полагаю, что указано расположение файла по умолчанию. Решается указанием места расположения собственного файла в меню "Файл - Создать".
Dmitriy Obraztsov

Topics: 0
Messages: 7

My Profile
Вопрос:
Почему не верно
char __in str[64];
Ответ:
Верно
char str[64];

Igor Korshunov

Topics: 6
Messages: 1534

My Profile


Богдан Савельев:

При запуске CMPA.bat в каталоге D:\Program Files выпадает ошибка "Не удается найти D:\Program. Проверьте правильно ли указано имя и повторите попытку".

Содержимое CMPA.bat:

set WRKDIR=D:\olymp
md %WRKDIR%
@cd %WRKDIR%
@if errorlevel 1 goto wrong_dir

if not exist %WRKDIR%\src.mpc copy %~dp0bin\src.mpc %WRKDIR%\src.mpc
copy /y %~dp0bin\MPAc.WID %WRKDIR%\MPAc.WID
start %~dp0bin\WInter.exe %WRKDIR%\MPAc.WID --student
exit

:wrong_dir
@echo Не удалось создать папку %WRKDIR%
@echo --------------------------------------------------------------
@echo - Измените рабочую папку на другую в первой строке bat-файла -
@echo --------------------------------------------------------------

@pause 

Нужно установить в папку без пробелов в пути, или модифицировать батник взяв все пути в кавычки.
Igor Korshunov

Topics: 6
Messages: 1534

My Profile


Александр Городков:

Содержимое CMPA.bat:
set WRKDIR=C:\projects\winter
md %WRKDIR%
@cd %WRKDIR%
@if errorlevel 1 goto wrong_dir

if not exist %WRKDIR%\src.mpc copy %~dp0bin\src.mpc %WRKDIR%\src.mpc
copy /y %~dp0bin\MPAc.WID %WRKDIR%\MPAc.WID
start %~dp0bin\WInter.exe %WRKDIR%\MPAc.WID --student
exit

:wrong_dir
@echo Не удалось создать папку %WRKDIR%
@echo --------------------------------------------------------------
@echo - Измените рабочую папку на другую в первой строке bat-файла -
@echo --------------------------------------------------------------

@pause

После изменения WRKDIR на мой Winter открывается на директории D:\olymp(хотя у меня даже диска D: нет). При попытке сохранить файл ошибка "Не удается сохранить файл".
Скриншот проблемы -> https://ibb.co/gjf7XCx
 

После запуска нужно создать новый файл (Файл->Создать...) или открыть уже имеющийся (Файл->Открыть как проект...).
После чего сохранить десктоп (Десктоп->Сохранить).
После этого скопировать MPAc.wid из рабочей папки в папку bin (перезаписав неправильно настроенный старый).

После этого все должно открываться правильно.
Igor Korshunov

Topics: 6
Messages: 1534

My Profile


Дмитрий Образцов:

Вопрос:
Почему не верно
char __in str[64];
Ответ:
Верно
char str[64];
 

Идеологически в МПА-С на входе не должно быть массивов, но задачи на программирование можно сдавать, если убрать модификатор __in.
Bogdan Savelev

Topics: 0
Messages: 10

My Profile
char str[128];
char out1[128];

void main() {
out1 = "no";
int k = 0;
while (str[k] != '#'){
k++;
}
if (k % 2 == 0) {
char sub1[128];
char sub2[128];
for (int i = 0; i < k/2; i++){
sub1[i] = str[i];
}
int j = 0;
for (i = k/2; i < k; i++){
sub2[j] = str[i];
j++;
}
if (sub1 == sub2) out1 = "yes";
} else {
char sub1[128];
char sub2[128];
for (i = 0; i < k; i++){
sub1[i] = str[i];
}
int j = 0;
for (i = k/2 + 1; i < k; i++){
sub2[i] = str[i];
j++;
}
if (sub1 == sub2) out1 = "yes";
}



Внутренняя ошибка компилятора - Unsupported node type.
Igor Korshunov

Topics: 6
Messages: 1534

My Profile


Богдан Савельев:


Внутренняя ошибка компилятора - Unsupported node type. 

В программе три раза присваивается строка массиву символов.

В Си это допускается только при объявлении строкового массива.

char str[] = "some string 1"; // так можно
str = "some string 2"; // так нельзя


В С-МПА нет поддержки указателей, поэтому для вывода могу предложить использовать две такие функции:
char strYes[] = "yes";
char strNo[] = "no";

void OutYes()
{
	for (int i = 0;	strYes[i]; i++)
		out1[i] = strYes[i];
}
void OutNo()
{
	for (int i = 0;	strNo[i]; i++)
		out1[i] = strNo[i];
}

 
Forum Index ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2, 3, ... 17, 18, 19
Time:0,063