Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620

Добавление сортировки

03.04.2019, 21:50. Показов 3864. Ответов 98
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
не хватает процедуры сортировки имён в алфавитном порядке...
вот сама программа
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
//Uses Crt;
type
  TPElem = ^TElem;
  TElem = record
    Data : string;
      Left,Right: TPElem;
  end; 
  
var
  T,S : TPElem;
  i,k:byte;
  N:string;
  
procedure AddToTree( var T: TPElem; N:string); {ВВОД}
begin
  if T = nil then begin
    New(T);
    T^.Data := N;
     T^.Left := nil;
     T^.Right := nil;
   Exit; end; 
  if N < T^.Data then
     AddToTree(T^.Left, N)
  else 
     AddToTree(T^.Right, N);
end; 
// //
function Search(T:TPElem; N:string):TPElem; {ПОИСК}
var
P:TPElem;  
begin
  if T=nil then  
     begin
       Search:=nil;  
       exit; 
     end;
  if N=T^.Data then 
    P:=T 
     else 
       if N < T^.Data then
          P:=Search(T^.Left,N) 
       else     {иначе }
         P:=Search(T^.Right,N); 
  Search:=P;
end;
// //
procedure Lkp(T:TPElem);  {ВЫВОД}
begin
  if T=nil then 
   exit;    
  Lkp(T^.Left);  
  write('  ',T^.Data);
  Lkp(T^.Right);  
end;
// //
 begin
    while true do
    begin
        writeLn('Выберите действие');
        writeLn('1 - Добавление');
        writeLn('2 - Поиск'); 
        writeLn('5 - Вывод');
        writeLn('6 - Очистка');
        writeLn('7 - Exit');
       var ans := ReadLnString('Ваш выбор:').Trim;
      if ans.Length > 0 then
        case ans[1] of
            '1' :          {ВВОД}
             begin
             // ClrScr;
               Write('Задайте количество сотрудников: ');
               Readln(k);
              for i := 1 to k do
                begin
                 Write('Введите имя: ');
                 Readln(N);
                 AddToTree(T,N);
                end; 
             end;
         '2': begin      {ПОИСК}
               writeln('Имя для поиска');
               readln(N);
               S:=Search(T,N);
                  if S <> nil then
                    writeln('Найден')
                  else writeln('Такого элемента нет!');
              end;
    '5' :begin         {ВЫВОД}
      //  ClrScr;
    Write('Список: ');
    if T = nil then
    writeln('пуст... ')
    else begin
        Lkp(T);
        writeln;
       end; end;
        '6' : begin
              T:=nil;
     //         ClrScr;
              writeln('Список очищен... ');
              end;
          '7' : exit
        end;  
    end;
end.
есть у кого нибудь хотя бы пример? хоть посмотреть как такая процедура выглядит, а то везде только массивы да списки.... а как в дереве такое выглядит, нигде не пишется и не объясняется, опять надо у бога спрашивать...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.04.2019, 21:50
Ответы с готовыми решениями:

Разработайте рекурсивную процедуру сортировки последовательности методом быстрой сортировки Хоара
Помогите!!!! Дана последовательность чисел a1, a2, ... , an. Разработайте рекурсивную процедуру сортировки последовательности методом...

Написать программу сортировки массива с помощью алгоритма внешней сортировки
1. Дан текстовый файл, в котором записана последовательность целых чисел. Написать программу сортировки массива с помощью алгоритма внешней...

Расставить элементы массива в порядке возрастания методом сортировки выбором и сортировки простыми вставками
Здрасьте еще раз!С прошедшим вас праздником! я глупая и бестолковая опять пришла к вам на спасение. задачка вот простенькая, но вся...

98
 Аватар для Sun Serega
2357 / 1460 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
29.04.2019, 20:07
Студворк — интернет-сервис помощи студентам
Коды никто никогда не сохраняет. Их вычисляют когда нужно узнать куда сувать элемент, или для проверки существования элемента.
0
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620
29.04.2019, 20:35  [ТС]
как же тогда таблицу с хэшем создавать, мне же по идеи надо куда-то всё это записать, чтобы потом было где искать.... а так получается у меня при вводе слова вычисляется его хэш, и сразу перезаписывается хэшем нового слова... я думал этот хэш надо отдельно заносить в какой-нибудь список, чтобы считывать его потом от туда, для того же поиска по хэшу....
0
 Аватар для Sun Serega
2357 / 1460 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
29.04.2019, 20:38
Перечитайте внимательно моё объяснение азов хаш-сетов. Я распинался не для того чтоб вы тупые вопросы задавали, а как раз для обратного.
0
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620
29.04.2019, 23:43  [ТС]
вроде бы всё работает, но по моему как-то жестко получилось, можно ли это сделать как-то легче, даже и не знаю...

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
const
  MAX = 255;
type
     Cell = record
       CellName: string[2];
       next: integer;
     end;
var
  Mass:array[0..MAX] of Cell;
  name: Cell;
  Y,N,Z: string;
// 
procedure InitMass;          { инициализация физического массива }
  var
   t:integer;
  begin
    for t:=0 to MAX do
   begin
     mass[t].CellName:='empty';
     mass[t].next:= -1;
   end;
end;
//    
function HashIndex(Y: String): integer;        {Вычисление хэша}
var
  i: integer;
begin;
  Result:=0;
  for i:=0 to Length(Y)-1 do begin;
    Result:=(Result+word(Y[i+1]));
    end;
   HashIndex:=Round(Frac(Result*0.61)*100);
end;
// 
procedure Store(N:string);        {вставка значения элемента }
   var
    loc, i : integer;
  begin
   N:=IntToStr(HashIndex(Y));
   loc := StrToInt(N);
    if loc>MAX then Writeln('Расположение за пределами')
     else
    begin
       if (mass[loc].Cellname = 'empty') or
        (mass[loc].Cellname = N) then
        begin
          mass[loc].Cellname:= N;
        end else 
         begin
          while(mass[loc].next <>0) do
           loc := mass[loc].next;
           i := loc;
           while ((i<MAX) and (mass[loc].Cellname='empty'))
            do i := i+1;
             if(i = MAX) then
             begin
               Writeln('Хэш заполнен');
              end else
             begin
               mass[i].Cellname:= N;
               mass[loc].next := i;
             end;
        end;
     end;
end;
//
function Find(Z:string):integer;     {поиск физического адреса ячейки}
   var
    loc:integer;
    begin
      Z:=IntToStr(HashIndex(Y));
      loc :=  StrToInt(Z);
      while (mass[loc].CellName<>Z) and
          (loc <> 0) do loc:=mass[loc].next;
      if(loc = 0) then
     begin
       WriteLn('Не найдено');
       exit
     end else Find := loc;
      writeln('Найдено, хэш: ', loc);
end;
Добавлено через 1 минуту
мда, только зрение испортил.... столько сидеть за монитором
0
 Аватар для Sun Serega
2357 / 1460 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
30.04.2019, 00:12
Зачем вы всё же сделали свою HashIndex? Почему не использовать стандартный .GetHashCode, которые есть абсолютно у каждого типа, даже пользовательского (хотя у пользовательских они могут быть далеки от идеала, но всё ещё лучше того что у вас).

По коду:

Цитата Сообщение от ololo111 Посмотреть сообщение
CellName: string[2]
А потом вы присваиваете туда строки длинной больше 2. Нет, их не обрежет, и в основном это будет нормально работать. Просто нефиг вообще [2] ставить, это только для file of T используется (и он уже как раз обрежет если попытаться сохранить в файл строку больше 2 символов), а так - компилятор заменяет все string[n] на просто string.

Цитата Сообщение от ololo111 Посмотреть сообщение
Mass:array[0..MAX] of Cell;
Ну и зачем вы продолжаете использовать эту фигню, которая статичные массив. У вас уже нумерация с 0 идёт, напишите:
Pascal
1
  Mass := new Cell[Max+1];
И всё будет работать так же, но лучше, ибо статичные массивы - зло.

Цитата Сообщение от ololo111 Посмотреть сообщение
mass[t].CellName:='empty';
Если кто то введёт строку empty - вы получите неправильное поведение. Лучше присваивайте nil, что значит ссылку на отсутствующие данные (оно всегда ссылается на адрес 0).

Цитата Сообщение от ololo111 Посмотреть сообщение
N:=IntToStr(HashIndex(Y));
loc := StrToInt(N);
Что? Почему? Зачем???

Цитата Сообщение от ololo111 Посмотреть сообщение
if loc>MAX then Writeln('Расположение за пределами')
А правильно:
Pascal
1
loc := loc and $FF;
или, то же самое только медленнее:
Pascal
1
loc := loc mod 256;
Это возьмёт только последние 8 бит адреса, чтоб у каждой строки был нормальный адрес, помещающийся в массив.
А то что у вас - большинство строк не примет.

И так же со строкой с хешкодом 255, когда место уже заполнено. Надо продолжать перечислять с индекса 0.
Да, если попытаться добавить больше 256 строк - получите бесконечный цикл. Поэтому надо запоминать сколько сейчас элементов добавлено, и если не помещается - сразу об этом говорить. А вот в HashSet в таком случае - размер Mass увеличивается в 2 раза, индексы всех элементов пересчитываются и побитовая маска ($FF из кода выше) заменяется, чтоб учесть это.

Ну и в Find, тоже, те же проблеммы

---

В остальном - алгоритм вроде правильный, если эти проблемы исправить.

Не по теме:


Цитата Сообщение от ololo111 Посмотреть сообщение
только зрение испортил.... столько сидеть за монитором
Вот не надо мне тут, 16-18 часов каждый день сижу, а зрение идеальное. По моему опыту - только у тех кто жалуется оно и ухудшается, эффект плацебо в общем. Хотя каплями для глаз лучше пользоваться, от греха.

1
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620
30.04.2019, 18:38  [ТС]
Цитата Сообщение от Sun Serega Посмотреть сообщение
N:=IntToStr(HashIndex(Y));
loc := StrToInt(N);
Что? Почему? Зачем???
там работа с Loc требует integer, а N требует string....

а если так сделать,
Цитата Сообщение от Sun Serega Посмотреть сообщение
Mass := new Cell[Max+1];
то и
Цитата Сообщение от Sun Serega Посмотреть сообщение
if loc>MAX then Writeln('Расположение за пределами')
А правильно:
PascalВыделить код
1
loc := loc and $FF;
или, то же самое только медленнее:
PascalВыделить код
1
loc := loc mod 256;
это всё получается не нужно....

Цитата Сообщение от Sun Serega Посмотреть сообщение
Почему не использовать стандартный .GetHashCode
я просто так и не понял как он работает и как его использовать
0
 Аватар для Sun Serega
2357 / 1460 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
30.04.2019, 18:43
Цитата Сообщение от ololo111 Посмотреть сообщение
а N требует string
а объявлять переменные типа integer вы не умеете, понятно)))

Цитата Сообщение от ololo111 Посмотреть сообщение
я просто так и не понял как он работает и как его использовать
Что понимать, берёте переменную любого типа и добавляете к её имени это (с точкой). И так получаете хеш-код. Обычная функция как .ToString, которая есть у каждого типа, в том числе пользовательского.
0
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620
30.04.2019, 19:18  [ТС]
Цитата Сообщение от Sun Serega Посмотреть сообщение
а объявлять переменные типа integer вы не умеете, понятно)))
тогда прийдётся так всё переделать:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
    
const
  MAX = 100;
    Cell = record
       CellName: integer;
       next: integer;
     end;
var
  Mass := new Cell[Max+1];
  name: Cell;
  n,z : integer;
  Y: string;
// 
procedure InitMass;          { инициализация физического массива }
  var
   t:integer;
  begin
    for t:=0 to MAX do
   begin
     mass[t].CellName:=0;
     mass[t].next:= -1;
   end;
end;
//    
function HashIndex(Y: String): integer;        {Вычисление хэша}
var
  i: integer;
begin;
  Result:=0;
  for i:=0 to Length(Y)-1 do begin;
    Result:=(Result+word(Y[i+1]));
    end;
   HashIndex:=Round(Frac(Result*0.61)*100);
end;
// 
procedure Store(N:integer);        {вставка значения элемента }
   var
    loc, i : integer;
  begin
   N := HashIndex(Y);
   loc := N;
    if loc>MAX then Writeln('Расположение за пределами')
     else
    begin
       if (mass[loc].Cellname = 0) or
        (mass[loc].Cellname = N) then
        begin
          mass[loc].Cellname:= N;
        end else 
         begin
          while(mass[loc].next <>0) do
           loc := mass[loc].next;
           i := loc;
           while ((i<MAX) and (mass[loc].Cellname=0))
            do i := i+1;
             if(i = MAX) then
             begin
               Writeln('Хэш заполнен');
              end else
             begin
               mass[i].Cellname:= N;
               mass[loc].next := i;
             end;
        end;
     end;
end;
//
function Find(Z:integer):integer;     {поиск физического адреса ячейки}
   var
    loc:integer;
    begin
      Z := HashIndex(Y);
      loc := Z;
      while (mass[loc].CellName<>Z) and
          (loc <> 0) do loc:=mass[loc].next;
      if(loc = 0) then
     begin
       WriteLn('Не найдено');
       exit
     end else Find := loc;
      writeln('Найдено, хэш: ', loc);
end;
0
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620
02.05.2019, 15:00  [ТС]
мне вот не понятно, а почему этот массив хэша только на 90 элементов? даже если я 1000 поставлю, всёравно 90 будет? а если я сделаю хэш не двухзначным, а пятизначным числом? как мне сделать таблицу хэша неограниченной?
я массив хэша через writeln вывожу, и там 90 ячеек только
0
 Аватар для Sun Serega
2357 / 1460 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
02.05.2019, 15:23
Я же вам говорил, когда элементы не помещаются - надо перевыделять память, увеличивая объём. Вы сделали объём константным - теперь не жалуйтесь что его не хватает.
0
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620
02.05.2019, 16:16  [ТС]
О, я немного переделал программу, а как такой вариант?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
const
  MAX = 100;
    Cell = record
       CellName: integer;
       next: integer;
     end;
var
  Mass := new Cell[Max+1];
  name: Cell;
  Y: string;
//
procedure InitMass;           { инициализация массива }
  var
   t:integer;
  begin
    for t:=0 to MAX do
   begin
     mass[t].CellName:=0;
     mass[t].next:= 0;
   end;
end;
//    
function HashIndex(Y: String): integer;        {Вычисление хэша}
var
  i: integer;
begin;
  Result:=0;
  for i:=0 to Length(Y)-1 do begin;
    Result:=(Result+word(Y[i+1]));
    end;
   HashIndex:=Round(Frac(Result*0.61)*100);
end;
// 
procedure Store(loc:integer);          {вставка значения элемента }
  begin
   loc := HashIndex(Y);
       if (mass[loc].Cellname = 0) then
        begin
          mass[loc].Cellname:= loc;
        end else 
         if (mass[loc].Cellname = loc) then
         begin
          inc(mass[loc].next);
          writeln('Совпадение хэша');
        end;
end;
//
function Find(loc:integer):integer;        {поиск адреса ячейки}
    begin
      loc := HashIndex(Y);
      if mass[loc].CellName<>loc then
     begin
       WriteLn('Не найдено');
       exit
     end else Find := loc;
      writeln('Найдено, хэш: ', loc,',',mass[loc].next);
end;
//
function Del(loc:integer):integer;        {удаление элемента хэша}
    begin
      loc := HashIndex(Y);
      if mass[loc].CellName<>loc then
     begin
       WriteLn('Не найдено');
       exit
     end else
     if mass[loc].next = 0
      then mass[loc].CellName:=0 
       else begin
     if mass[loc].next>0 
      then dec(mass[loc].next);
       writeln('Совпадение хэша уменьшено на 1');
       end;
end;
//
по моему так по лучше, учитывая что у меня хэш двухзначный.... тогда и количество элементов в таблице не надо ставить больше 100,, т.к. я поставил счётчик на подсчёт схожих элементов,
0
257 / 149 / 70
Регистрация: 29.07.2018
Сообщений: 1,254
02.05.2019, 16:20
ololo111, если я не ошибаюсь,хэши не так работают,там для всех элементов разные хэш-значения(но это не точно)
0
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620
02.05.2019, 16:25  [ТС]
Цитата Сообщение от Пс Посмотреть сообщение
если я не ошибаюсь,хэши не так работают,там для всех элементов разные хэш-значения(но это не точно)
так а если элементы одинаковы, то и хэш одинаков...
0
257 / 149 / 70
Регистрация: 29.07.2018
Сообщений: 1,254
02.05.2019, 16:27
ololo111, вы уверены?Если да,то значит я ошибаюсь
0
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620
02.05.2019, 16:30  [ТС]
Цитата Сообщение от Пс Посмотреть сообщение
вы уверены
нет, я так и не понял ничего про хэш, кроме того что это зашифрованный вид данных
0
257 / 149 / 70
Регистрация: 29.07.2018
Сообщений: 1,254
02.05.2019, 16:34
ololo111, вот именно,шифровать данные для того и придумали,что бы уберечь данные от посторонних глаз,и если бы одинаковые данные имели бы одинаковые хэш-значения,было бы легко дешифровывать их.
0
 Аватар для Sun Serega
2357 / 1460 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
02.05.2019, 18:09
Цитата Сообщение от ololo111 Посмотреть сообщение
так а если элементы одинаковы, то и хэш одинаков...
А, вы про это... Хашсеты никогда не сохраняют копии одного и того же элемента. Так и задумано, и этим часто пользуются.

Добавлено через 8 минут
Цитата Сообщение от ololo111 Посмотреть сообщение
нет, я так и не понял ничего про хэш, кроме того что это зашифрованный вид данных
Не совсем, в том то и дело что это не шифр чтоб
Цитата Сообщение от Пс Посмотреть сообщение
уберечь данные от посторонних глаз
Хеш-код 2 одинаковых элементов как раз всегда будет одинаковый.

Хеш-код - это укороченное представление данных. Для хаш-сетов их сохраняют всегда в целом числе на 32 бит, потому что это удобно. Хашсет с элементами - байтами на 2^31 элементов это уже 2 гигабайта оперативки, а это ещё не считая что бакеты тоже что то да занимают, поэтому 32-битного хеш-кода вполне хватает.

Так же хеш-коды, к примеру, используют в блокчейне. Каждая криптографическая транзакция - это какой то тип данных. В ней хранится хеш-код предыдущей транзакции и все данные о том кто кому что дал. А основной смысл почему их так сложно взломать - хеш-код следующей транзации вычисляется из данных о самой транзации и хеш-кода предыдущей. Поэтому если хакер хочет заменить данные 1 транзации - ему придётся пересчитать все хеш-коды всех следующий транзаций и заменить это всё на большинстве компьютеров в сети одновременно, что нереально.
0
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620
06.05.2019, 21:16  [ТС]
ребят, подскажите что-за ерунда, при добавлении не нулевых элементов из таблицы хэша в список, почему-то создаётся список только с одним последним элементом, по отладчику смотрел, вроде всё идёт как надо, а в итоге в выводе только один последний элемент....
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
procedure Rdata(loc:integer);
 begin
  for loc:=0 to 99 do
   if mass[loc].Cellname > 0 then
    begin
     if np=nil then 
   begin
    new(np); 
    PN:=np;
   end else begin
    PN:=np;
       while PN^.Rnext<>nil do
      PN:=PN^.Rnext; 
    new(PN^.Rnext);
    PN:=PN^.Rnext;
    end;
   PN^.Rnext:=nil;
   PN^.Rdata:=mass[loc].Cellname;
   end;
     end;
//       
 procedure Print(PN:PNode);                      
   begin
    write('Список:  ');
  if PN=nil then
  begin
    writeln('пуст.');
    exit;
  end;
  while PN<>nil do
  begin
    Write(PN^.Rdata, ' ');
    PN:=PN^.Rnext;
  end;
  writeln;
end;
0
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620
07.05.2019, 17:31  [ТС]
а всё разобрался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.05.2019, 17:31

Добавление сортировки
дана задача, основное написанно но нет сортировки... Разработать программу формирования ведомости об успеваемости студентов. Каждая...

Добавление времени сортировки
Доброго времени суток. Я начинающий. Столкнулся с проблемой, не могу разобраться никак со вставкой таймеров. Мне необходимо вставить время...

Добавление сортировки в готовый код
Здрасвтвуйте. Помогите пожалуйста. Нужно сформированный массив перед выводом на экран упорядочить по возрастанию. program lab3a; ...

Добавление кнопки сортировки в проект
Помогите добавить кнопку сортировки в проект, которая будет сортировать фамилии абонентов в алфавитном порядке. Заранее спасибо.

Добавление флага в алгоритм сортировки способом пузырька (С++)
Всем добрый вечер. Помогите пожалуйста добавить флажок в этот алгоритм. Идея – если при выполнении метода пузырька не было обменов,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
99
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru