Автор |
Сообщение |
10.11.2018 08:54:47
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Александр Ковальчук:
Экзамен\Индивидуальные задания\Сконвертированные задания на программирование\Простые устройства с памятью\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 байт), чтобы не было переполнения.
|
01.04.2019 16:02:59
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Как изменить шрифт в редакторе WInter?
В редакторе нажимаем правую кнопку мыши, выбираем "Свойства...", переходим на вторую вкладку "Выделение (цветом)".
Здесь можно изменить шрифт и его размер.
|
05.09.2019 11:19:26
Тема: Re:Вопросы по C-MPA
|
Богдан Савельев
Темы: 0
Сообщений: 17
Мой профиль
|
При запуске 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
|
05.09.2019 11:50:06
Тема: Re:Вопросы по C-MPA
|
Александр Городков
Темы: 0
Сообщений: 15
Мой профиль
|
Содержимое 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
|
07.09.2019 10:33:25
Тема: Re:Вопросы по C-MPA
|
Олег Гузанов
Темы: 0
Сообщений: 10
Мой профиль
|
Аналогично посту выше на моей машине отсутствует каталог D:. Полагаю, что указано расположение файла по умолчанию. Решается указанием места расположения собственного файла в меню "Файл - Создать".
|
07.09.2019 11:42:09
Тема: Re:Вопросы по C-MPA
|
Дмитрий Образцов
Темы: 0
Сообщений: 7
Мой профиль
|
Вопрос:
Почему не верно char __in str[64];
Ответ:
Верно char str[64];
|
15.10.2019 08:45:28
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Богдан Савельев:
При запуске 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
Нужно установить в папку без пробелов в пути, или модифицировать батник взяв все пути в кавычки.
|
15.10.2019 08:50:32
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Александр Городков:
Содержимое 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 (перезаписав неправильно настроенный старый).
После этого все должно открываться правильно.
|
15.10.2019 08:52:23
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Дмитрий Образцов:
Вопрос:
Почему не верно char __in str[64];
Ответ:
Верно char str[64];
Идеологически в МПА-С на входе не должно быть массивов, но задачи на программирование можно сдавать, если убрать модификатор __in.
|
24.10.2019 11:23:29
Тема: Re:Вопросы по C-MPA
|
Богдан Савельев
Темы: 0
Сообщений: 17
Мой профиль
|
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.
|
24.10.2019 15:28:01
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Богдан Савельев:
Внутренняя ошибка компилятора - 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];
}
|
26.12.2019 11:16:58
Тема: Re:Вопросы по C-MPA
|
Михаил Долинский
Темы: 2072
Сообщений: 49883
Мой профиль
|
Инициализация массива значениями переменных
int a[5]={A1,A2,A3,A4,A5};
Пример программы
int __in __bits(8)A1;
int __in __bits(8)A2;
int __in __bits(8)A3;
int __in __bits(8)A4;
int __in __bits(8)A5;
int __out __bits(8)K;
void main()
{
int a[5]={A1,A2,A3,A4,A5};
int min=A1;
for (int i=0;i<5;i++)
if (min>a[i]) min=a[i];
K=min;
}
|
02.09.2021 13:46:44
Тема: Re:Вопросы по C-MPA
|
Владислав Свиридков
Темы: 2
Сообщений: 36
Мой профиль
|
http://dl.gsu.by/task.jsp?nid=2027972&cid=1230
http://dl.gsu.by/log-dbt.asp?id=10169969
При попытке импортировать тест в Winter никакой тест не добавляется.
Выпуск Windows 10 Pro
Версия 20H2
Дата установки ?10.?07.?2021
Сборка ОС 19042.1165
Взаимодействие Windows Feature Experience Pack 120.2212.3530.0
|
02.09.2021 13:50:24
Тема: Re:Вопросы по C-MPA
|
Владислав Свиридков
Темы: 2
Сообщений: 36
Мой профиль
|
http://dl.gsu.by/task.jsp?nid=2027972&cid=1230
http://dl.gsu.by/log-dbt.asp?id=10169969
В Winter в режиме отладки тест работает правильно.
int __in __bits(3) IN;
int __out __bits(2) OUT;
void main()
{
OUT=0;
if((IN&(1<<0))==0) {
OUT++;
}
if(!(IN&(1<<1))==0) {
OUT++;
}
if(!(IN&(1<<2))==0) {
OUT++;
}
}
Тест для проверки IN=5
Ответ в Winter 1
Ответ после компиляции в HLCCAD 0
|
02.09.2021 15:47:58
Тема: Re:Вопросы по C-MPA
|
Михаил Долинский
Темы: 2072
Сообщений: 49883
Мой профиль
|
Оглавление этой темы
Игорь Коршунов:
"Решение проходит в Winter-е, но не проходит в HLCCAD":
...
4. Неоднократное занесение значений на выходные контакты. Изменение значений на входных контактах.
http://dl/NForum/posts/topicshow/46.dl?postid=224#224
http://dl/NForum/posts/topicshow/46.dl?postid=1937#1937
http://dl/NForum/posts/topicshow/46.dl?postid=3550#3550
http://dl/NForum/posts/topicshow/46.dl?postid=34228#34228
http://dl/NForum/posts/topicshow/46.dl?postid=44944#44944
http://dl/NForum/posts/topicshow/46.dl?postid=77048#77048
|
|