Последние сообщения

Страницы: 1 2 [3] 4 5 ... 10
21
Общий раздел / Re: ещё про цикл дейкстры
« Последний ответ от Valery Solovey Январь 25, 2019, 05:24:49 pm »
Чтобы было эффективно, можно воспользоваться флагом. Получится брейкозаменитель.

f = P1 or P2 ... or Pn;

while (f) do
  if P1 then
    S1;
  else if P2 then
    S2
    ...
  else if Pn then
    Sn
  else
    f = false;

  end if
end while
22
Общий раздел / Re: Online компилятор Oberon-07/11.
« Последний ответ от adva Январь 23, 2019, 02:44:04 am »
Спасибо за подсказки. Попробую для начала на самом тайпскрипте написать необходимые плагины, а далее видно будет
23
Общий раздел / Re: Online компилятор Oberon-07/11.
« Последний ответ от Geniepro Январь 22, 2019, 04:14:13 pm »
Есть такой редактор atom. Он вроде как на node.js
У меня появилась мысль использовать его для написания кода вместо конфигуратора 1C
Есть даже какой-то плагин для VSCode для работы с кодом для 1С:
https://marketplace.visualstudio.com/items?itemName=xDrivenDevelopment.language-1c-bsl
24
Общий раздел / Re: Online компилятор Oberon-07/11.
« Последний ответ от vlad Январь 22, 2019, 03:55:36 pm »
Плагины для VSCode пишутся на TypeScript, хотя, вроде, и на Javascript должно быть можно.

Прикрутить oberonjs теоретически можно, поскольку это JS. Но практического смысла мало, если ты только не собрался писать плагины на поток, поскольку большую часть времени промучаешься с "прикручиванием", чем с написанием логики плагина.
25
Общий раздел / Re: Online компилятор Oberon-07/11.
« Последний ответ от Geniepro Январь 22, 2019, 03:46:48 pm »
Есть такой редактор atom. Он вроде как на node.js
У меня появилась мысль использовать его для написания кода вместо конфигуратора 1C
Atom уже давно не в моде, самый распространённый редактор для программеров -- это VSCode (после него идут IDEA, Emacs, Vim, Sublime).
Плагины для VSCode пишутся на TypeScript, хотя, вроде, и на Javascript должно быть можно.
Доступ к терминалу, командной строке -- это есть.
Работает в винде, линупсе и макоси...
26
Общий раздел / Re: Online компилятор Oberon-07/11.
« Последний ответ от adva Январь 22, 2019, 07:28:31 am »
И еще желательно, чтобы он был портабельный
27
Общий раздел / Re: Online компилятор Oberon-07/11.
« Последний ответ от adva Январь 22, 2019, 07:24:01 am »
По теме и нет:
Есть такой редактор atom. Он вроде как на node.js

У меня появилась мысль использовать его для написания кода вместо конфигуратора 1C.

1) Кто-нибудь использовал этот редактор? Есть отзывы?
2) Скрипты для редактора вроде пишутся на кофескрипте, а это, как я понял, подмножетсво javascript. В связи с этим, можно ли прикрутить eberon к этому редактору для написания скриптов?

Ну или может другой редактор кода посоветуете, с возможностью написания скриптов (и желательно чтобы команды системы умел запускать).
28
Общий раздел / Re: ещё про цикл дейкстры
« Последний ответ от Peter Almazov Ноябрь 29, 2018, 07:11:05 am »
Хотелось бы зафиксировать одно наблюдение про цикл Дейкстры.
Оно, конечно, абсолютно очевидное, часто всплывает в примерах, но я не припомню, чтобы кто-то его четко сформулировал.
А именно: цикл Дейкстры всегда можно тупо преобразовать в обычный цикл без exit-ов и break-ов.
Нужно собрать в заголовке все предохранители.

do
  P1 → S1,
  P2 → S2,
   …
  Pn → Sn
od

=>

while (P1 or P2 ... or Pn) do
  if P1 then
    S1;
  else if P2 then
    S2
    ...
  else if Pn then
    Sn
  end if
end while

Неэффективно, да.
Но полезно для рассуждений.



29
Общий раздел / Re: BlackBox без MDI
« Последний ответ от Ivan Denisov Октябрь 15, 2018, 03:56:43 am »
Переделал для 1.7
30
Общий раздел / qsort как так отсортировать
« Последний ответ от Jordan Сентябрь 18, 2018, 03:03:35 pm »
Приветствую!

Код

typedef struct critter
{
  int number;
  int value;
  char * name;
} critter;

int comp(const void* a, const void* b)
{
        const critter* k = (const critter*)a;
        const critter* m = (const critter*)b;
        int s = ((k -> number) - (m -> number));

        return s;
}

  critter mas[5];
 
  mas[0].number = 5;
  mas[1].number = 4;
  mas[2].number = 3;
  mas[3].number = 2;
  mas[4].number = 1;
 
 
  qsort(mas, 5, sizeof(critter), comp);
 
  for (size_t i = 0; i < 5; i++)
  {
    printf("%d\n", mas.number);
  }


Как перестроить функцию сравнения так, что бы в аргументы можно было передать не только number, но и value

int comp(const void* a, const void* b)
{
        const critter* k = (const critter*)a;
        const critter* m = (const critter*)b;
        int s = ((k -> number) - (m -> number)); // в аргументы функции можно было передать value не изменяя функцию

        return s;
}

Так не надо.
int comp(const void* a, const void* b)
{
        const critter* k = (const critter*)a;
        const critter* m = (const critter*)b;
        int s = ((k -> value) - (m -> value));

        return s;
}

Генерируется код

typedef struct critter_vector
{
  size_t total;
  size_t pos;
  critter * data;
} critter_vector;

int critter_vector_compare_int(const void *a, const void *b)
{
  return *(int *)a - *(int *)b;
}

void critter_vector_sort_int(critter_vector * src)
{
 qsort(src->data, critter_vector_size(src), sizeof(critter), critter_vector_compare_int); //как передать не только number но и value
}

Так как поля critter будут разные. Не понимаю как всё это сделать.
Страницы: 1 2 [3] 4 5 ... 10