[Logo] Форум DL
  [DL]  Back to home page 
Forum Index ->Общего плана ->Проблемы и их решения
Author Message
Roman Strizhenkov

Topics: 5
Messages: 99

My Profile
Подскажите, что можно сделать чтобы при компиляции файлов созданных в PascalABC DL правильно воспринимала русские буквы. Например старший сын в Базовом программировании в Одномерном массиве задача "ОМ13.Оценка" за четверть. Она на понимает вывод "да" или "нет". Пришлось переписывать на Free Pascal.
А младший сегодня перешел в "Информатике 2015" в Одномерный массив и решил первую задачу. Очень не хотелось бы переходить с PascalABC из-за этого. Может можно добавить какой-нибудь компилятор другой?
Ну и в завершение. Приступая к обучению я не верил, что можно объяснить операции с массивом первокласснику, но Ваша система реально позволяет это делать.
Mihail Dolinskiy

Topics: 1710
Messages: 40086

My Profile
Про русский язык - нужно просто отправлять файл в DOS-кодировке.

Есть множество способов это сделать - один нашли Вы.
Вот ещё варианты

Как настроить русский язык в Паскале +1
Как в Паскале писать на русском языке
Как в Паскале(DosBox) писать на русском языке
Как решать проблему русского языка в ответах

Но в принципе там таких задач не много.
Очень давно - когда мы поняли, что это создаёт проблемы - перестали ставить задачи с вводом/выводом русскими буквами.
Ну старых задач осталось немножко.
Последнее время, когда натыкаемся на такую - меняем формат ввода-вывода на латиницу.

Добавлять компилятор Pascal ABC мы не планируем,
по той причине, что он запрещён к использованию на международной олимпиаде,
и как следствие у нас в Беларуси - на республиканской, и как следствие
- у нас в Гомельской области на областных, городских и школьных олимпиадах.

Именно потому что есть существенные отличия между Pascal ABC и Free Pascal.
И можно сильно пострадать на олимпиаде - получив у себя на машине на Pascal ABC правильные ответы и не получив
правильных ответов при официальном тестировании на Free Pascal.
Vladimir Fant

Topics: 1
Messages: 13

My Profile
Михаил Семёнович!
Огромная просьба, уберите пожалуйста русский язык в задачах тренировочных олимпиад (суббота-воскресенье) Занимаемся на С++ на iMac в Xcode - постоянные "танцы с бубном" утомили
Спасибо!
С уважением, Владимир.
Mihail Dolinskiy

Topics: 1710
Messages: 40086

My Profile
Не буду я ничего убирать, это огромная работа.
Не решайте их просто.

Хотя может не так и сложно один раз разобраться.


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

Русские буквы на dl.gsu.by (Игорь Беляев, 26-дек-2009)

Для решения задач использую Visual Studio 2005, компилятор C++ 9.0. Во время решения столкнулся с проблемой вывода русских букв. Первый раз это произошло в задаче “О скобках”, где нужно было вывести “Да” или “Нет” в качестве ответа.
Проблема заключается в том, что для проверяющей системы выходные файлы должны быть в кодировке CP886(DOS). Из проблемы вышел таким образом


... 
using namespace std; 
... 
void output(bool value) 
{ 
    locale rus("rus_rus.866"); 
    wcout.imbue(rus); 
    if (value) 
        wcout<<L"Да"; 
    else 
        wcout<<L"Нет"; 
    exit(0); 
} 
  
 



Филипп Левковский:

Есть разные способы решения проблемы с неправильной кодировкой. Опишу приглянувшийся мне, остальные здесь - http://www.cyberforum.ru/post3883960.html. Стоит просмотреть их.
Нужно установить текстовый редактор, поддерживающий сохранение текста в кодировке OEM-866 (DOS). Мой выбор пал на Notepad++:
  • Скопировать код. Если у вас Windows Vista или 7, то код может испортиться в буфере - копируйте с русской раскладкой.
  • Выбрать в меню "Кодировки" -> "Кодировки" -> "Кириллица" -> "OEM-866".
  • Вставить код. 



  • Вывод кодами:

    Как Левковский Филипп решил проблему DOS-кодировки для русских букв
    if (l1 = l2) and (l2 = l3) and (l3 = l4) and (l4 = l5) and (l5 = l6) and (l6 = l7)
      then writeln(t, chr(164), chr(160))
      else writeln(t, chr(173), chr(165), chr(226));
     
    Vladimir Fant

    Topics: 1
    Messages: 13

    My Profile
    Для компилятора Xcode на Mac решения пока не нашёл. Здесь сама задача с русскими символами компилируется с ошибками. Выход пока один: русские задачи решаем на Винде 10 в MVS. Там при сохранении файла меняем кодировку и ответ засчитывается. Но это очень не удобно.
    Просто думал, что выборку тренировок изменять не сложно. Там в блоке из пяти задач попадается еженедельно однотипная задача с русскими символами.
    С уважением, Владимир.
    Mihail Dolinskiy

    Topics: 1710
    Messages: 40086

    My Profile
    Ну в винде же так предложил человек

    locale rus("rus_rus.866"); 

    И кодировку менять не надо.

    В общем менять ничего не будем.

    Есть ещё вариант - решать олимпиаду 1-4 класса.
    Там разной сложности задачи и с русскими буквами почти нет.
    Vladimir Fant

    Topics: 1
    Messages: 13

    My Profile
    locale rus("rus_rus.866"); 

    Спасибо, попробую.
    Решаем олимпиады для начинающих. Это вроде и есть 1-4 класс. Там в блоке из пяти задач каждую неделю есть задача с русскими символами или ответами типа "да - нет"
    Mihail Dolinskiy

    Topics: 1710
    Messages: 40086

    My Profile
    Ниже этого блока из 5 задач
    Есть блок из 20 задач в папке
    Олимпиады по 1-4 кл годам
    Такого примерно вида

    Область, 19 апреля 2019, 1-4 кл
    1. Задача 1
    2. Задача 2
    3. Задача 3
    4. Задача 4
    5. Задача 5
    6. Задача 6
    7. Задача 7
    8. Задача 8
    9. Задача 9
    10. Задача 10
    11. Задача 11
    12. Задача 12
    13. Задача 13
    14. Задача 14
    15. Задача 15
    16. Задача 16
    17. Задача 17
    18. Задача 18
    19. Задача 19
    20. Задача 20
    Vladimir Fant

    Topics: 1
    Messages: 13

    My Profile
    Понял. Мы решаем два блока: и первый, и второй. Где 20 задач - там русского языка действительно нет.
    Спасибо за подробную консультацию.
     
    Forum Index ->Общего плана ->Проблемы и их решения
    Time:0,078