Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/14: Рейтинг темы: голосов - 14, средняя оценка - 4.86
2 / 2 / 0
Регистрация: 01.04.2013
Сообщений: 46

Оптимизация кода. Или, как сделать более легкую программу?

03.04.2013, 04:51. Показов 3106. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый товарищи. Имею программу, которая берет из файла текст, ищет в нем определенный кусок текста "g 9999999" и сравнивает его со вторым таким же куском, если нашлось совпадение, она сравнивает с 3 таким куском текста такого же типажа, и с 4-ым. Если находит нужное количество совпадений во всех 4-х, то сохраняет в массив для дальнейшего использования. Программа то работает, и очень облегчает мне труд, который я в принципе сделать не смогу, но при загрузке больших файлов, более 300 штук комбинаций, программа просто зависает и затрачивает времени для обработки довольна долго, для таких простейших операций. Если кому не сложно, гляньте код, возможно я наделал чего лишнего или что то можно написать по другому. Товарищей с критикой не имеющей хотя бы 1 бит информации, прошу даже не пытаться писать. Спасибо.
Delphi
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
106
107
108
109
procedure TForm1.Button1Click(Sender: TObject);
var
inp,out:textfile;
mA:array[1..2000] of string;
mB:array[1..2000] of string;
mC:array[1..2000] Of integer;
mM:array[1..2000] of string;
 
tA,z,tb,td,te,tc,tf,tg,th,tj,tk,tl,tq,l,s,tz,ty,tt,jet:integer;
p,o,m,n,b,t,y,u,i,x,c:string;
begin
Image5.Visible:=true;
Image3.visible:=false;
For tt:=1 to 2000 do
   Begin
   mA[tt]:='';
   mB[tt]:='';
   mM[tt]:='';
   mC[tt]:=0;
   end;
label6.Caption:=IntToStr(0);
p:='';o:='';m:='';n:='';b:='';t:='';y:='';u:='';i:='';x:='';c:='';
tA:=0;z:=0;tb:=0;td:=0;te:=0;tc:=0;tf:=0;tg:=0;th:=0;tj:=0;tk:=0;tl:=0;tq:=0;l:=0;s:=0;tz:=0;ty:=0;
Z:=StrToInt(edit1.Text);
AssignFile(inp,'inGos.txt');
Reset(inp);
while not eof(inp) do  {считываем в массив все строки из файла}
   Begin
   readln(inp,p);
   tA:=tA+1;
   mA[tA]:=P;
 
   end;
CloseFile(inp);
For tB:=1 to tA do  {Цикл поиска}
   begin
   o:=mA[tB];
   For tC:=1 to 20 do
      Begin
      If o[tC]='g' then
         Begin
         tD:=tC+1;
         tF:=tF+1;
         For tE:=1 to 7 do
            begin
            X:=mB[tF];
            c:=o[tD+tE];
            mB[tF]:=x+c;
            end;
         end;
      end;
   end;
      Edit2.Text:=IntToStr(tf);
For tG:=1 to tF-3 do   {Цикл поиска совпадений}
   Begin
   S:=0;
   For tH:=tG+1 to tF-2 do
      begin
      For tJ:=1 to 7 do
         begin
         m:=mB[tG];
         n:=mB[tH];
         if m[tJ]=n[tJ] then
            begin
            For tK:=tH+1 to tF-1 do
               begin
               b:=mB[tK];
               If m[tJ]=b[tJ] then
                  Begin
                  For tL:=tK+1 to tF do
                     Begin
                     tZ:=0;
                     For tQ:=1 to 7 do     {окончательное сравнивание}
                        begin
                        T:=mB[tG];
                        Y:=mB[tH];
                        U:=mB[tK];
                        I:=mB[tL];
                        If (t[tq])=(y[tq]) then begin
                           If (y[tq])=(i[tq]) then begin
                              if (i[tq])=(u[tq]) then begin
                              tZ:=tZ+1;
                        end;
                     end;
                  end;
               end;
               If tZ>=Z then      {условие, если найдено ,что все 4 совпали}
                  Begin
                  S:=1;
                  mM[1]:=t;
                  mM[2]:=y;
                  mM[3]:=u;
                  mM[4]:=i;
                  End;
               end;
            end;
         end;
      end;
   end;
end;
   If S=1 then   {Сохраняем в массив найденные}
      Begin
      tY:=tY+1;
      mE[tY]:='g '+mM[1]+'; g '+mM[2]+'; g '+mM[3]+'; g '+mM[4]+';';
      HR:=ty;
      End;
end;  {Конец цикла поиска совпадений}
 
end;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.04.2013, 04:51
Ответы с готовыми решениями:

Оптимизация кода, структуры базы, или что еще можно сделать что бы быстрее работало!?
Всем привет! Господа, выручайте. Не пойму как еще оптимизировать... Есть куча связанных таблиц. Нужно выводить статистику используя...

Оптимизация кода запроса, или как обойтись без запроса?
Здравствуйте! Решаю задачу по автоматизации отгрузки товаров. Надо для проведенным заказам определенного клиента создать реализации...

Как можно сделать программу более компактнее
решил использовать новый способ в программе. так вот как можно этот код сделать болие компактнее: #include <iostream> #include...

35
2 / 2 / 0
Регистрация: 01.04.2013
Сообщений: 46
29.07.2013, 17:52  [ТС]
Студворк — интернет-сервис помощи студентам
Спасибо большое, подогнал, работает!
0
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
29.07.2013, 17:56
Я забыл добавить, что при желании можешь менять количество сравнений динамически. Например через значение, заданное в Edit. Вставляешь 2 значения в строку 126 моего последнего кода вместо 16-ок.
0
2 / 2 / 0
Регистрация: 01.04.2013
Сообщений: 46
29.07.2013, 21:02  [ТС]
проверил полностью.
Если ввожу что мне нужно, 3-ое совпадение в числах 123**** , то начинает искать бесконечное число комбинаций.
дошло уже до 300 000 комбинаций, а процесс бар всего в 5%.
0
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
29.07.2013, 21:40
Ты сейчас говоришь о совпадении 3-х цифр в 16-ти комбинациях?
Выложи кусочек из результата. Несколько строк.

Добавлено через 18 минут
Кажется, догадываюсь.
Изменение процесс бара идёт по индексу просмотра первого уровня, а там ещё 15 уровней перебираются. Я обращал внимание, что если там подходящих комбинаций 1000, например, то будут выданы все варианты комбинаций по 16 из 1000.
Тебе, наверное, нужно как-то условие поиска изменить. Или объяснить конкретно, что ты хочешь делать. Я тогда переделаю.

Добавлено через 7 минут
У тебя там промелькнула фраза:
а на данном этапе мне нужно, чтобы удалялись те строки, которые мы уже запихнули в Outgos'число'
Если ты имел в виду, что найденные варианты изымаются из дальнейшего поиска, - напиши, переделаю.

Не по теме:

И, кажется, ты забыл, что нужно обновлять страницу.

0
2 / 2 / 0
Регистрация: 01.04.2013
Сообщений: 46
29.07.2013, 22:39  [ТС]
Насчет удаления строк, мы кажется уже решили этот вопрос.

Обьясню на пальцах:
нужно чтобы все работало как и раньше, но в замен 3 или 4 , которые ты помог мне уже сделать, мне теперь нужно чтобы он искал 16х комбинаций с одинаковыми цифрами. А количество цифр я хочу задавать сам.
В принципе программа ищет на 4-е совпадения в строках, но если поставить 3, то уходит , на мой взгляд, в бесконечный цикл. Потому что из 3-ех тысяч строк, она умудряется найти более 300 000 комбинаций, что в принципе невозможно. еще заметил, что при 16-ти одинаковых строках, она выдаст 16 комбинаций одинаковых.
0
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
29.07.2013, 22:58
Всё равно мне не всё понятно. Например у тебя есть 18 комбиначий цифр у которых совпадают, например искомые 3. Если удалять из поиска те, которые уже найдены. Тогда будет найдена последовательность из 16-ти комбинаций, эти 16 комбинаций удаляются, а оставшиеся 2 - остаются не при делах. Так и должно быть?
А насчёт 300 000 комбинаций из 3000 строк. Так я объяснял, что программа фактически составляет сочетания из найденных по 16. Я из исходного файла удалял комбинации, которые уже выданы в OutGos. Но не удалял их из поиска. Именно по той причине, о которой написал выше. И из твоей фразы насчёт удаления строк, я понял, что они должны удаляться именно из исходного файла, а не из поиска.
4-х совпадений гораздо меньше, поэтому сочетаний меньше - выборка быстрее.
0
2 / 2 / 0
Регистрация: 01.04.2013
Сообщений: 46
30.07.2013, 01:09  [ТС]
я думаю, лучше будет как ты написал, чтобы 2 оставались ни при делах. а 16 удалялись из поиска.
0
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
30.07.2013, 07:19
Я уже запутался со всеми разновидностями. В результате тебе нужны полные строки со всеми данными или только выбранные 16 комбинаций?
g 3547384; g 5648345; g 3045328; g 1641362; и т.д.
0
2 / 2 / 0
Регистрация: 01.04.2013
Сообщений: 46
30.07.2013, 13:37  [ТС]
полные

Добавлено через 19 минут
т.е. вывод мне нужен такой
g 3334567;123456-|-g 3335678;123456-|-g 3336789;123456-|- и так далее еще 13 раз..
0
 Аватар для агерон
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
30.07.2013, 15:17
Вы меня конечно великодушно прости те но на C# данная задача решается не в пример легче

C#
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
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
 
namespace Ingos
{
    public partial class Ingos : Form
    {
        public Ingos()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            PerformDataProcessing();
        }
 
        private void performdataprocessingToolStripMenuItem_Click(object sender, EventArgs e)
        {
            PerformDataProcessing();
        }
 
 
        private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
        {
            (new AboutBox()).ShowDialog();
        }
 
        private void closeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }
 
        private void EnabledButton(string text)
        {
            button1.Enabled = !button1.Enabled;
            button1.Text = text;
        }
 
        private void PerformDataProcessing()
        {
            EnabledButton("Обработка данных, подождите...");
            openFileDialog.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory;
            saveFileDialog.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                    string pattern = @"g \d{7}";
                    string data = File.ReadAllText(openFileDialog.FileName);
                    Dictionary<int, StringCollection> dictionary = new Dictionary<int, StringCollection>();
                    MatchCollection matchCollection = Regex.Matches(data, pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Singleline);
                    foreach (Match match in matchCollection)
                    {
                        string stringKey = match.Value.Replace("g ", string.Empty).Substring(0, Convert.ToInt32(numericUpDown1.Value));
                        int key = Convert.ToInt32(stringKey);
                        if (!dictionary.ContainsKey(key))
                            dictionary[key] = new StringCollection();
                        dictionary[key].Add(match.Value);
                    }
                    StringBuilder result = new StringBuilder();
                    foreach (int key in dictionary.Keys)
                    {
                        foreach (string value in dictionary[key])
                            result.AppendFormat("{0}; ", value);
                        result.AppendLine();
                    }
                    File.WriteAllText(saveFileDialog.FileName, result.ToString());
                    MessageBox.Show("Обработка завершена!!!");
                }
            EnabledButton("Выполнить обработку данных");
        }
    }
}
Писалось на MS Visual Studio 2012 + .NET 3.0 для совместимости, скорость обработки вашего файла 1-2 секунды
Ниже прикрепляю проект и отдельно exe файл, если у вас Windows Vista/7 то он должен запуститься без проблем
если же не она то скорее всего вам придется поставить .Net Framework 3.0
Вложения
Тип файла: zip IngosSrc.zip (91.6 Кб, 0 просмотров)
Тип файла: zip Ingos.zip (85.1 Кб, 1 просмотров)
0
 Аватар для агерон
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
30.07.2013, 15:24
5 минут на правку истекли поэтому выкладываю отдельным сообщением результат работы программы, сравнение идет по первым 3 символам
Вложения
Тип файла: txt result.txt (9.0 Кб, 4 просмотров)
0
30.07.2013, 15:31

Не по теме:

агерон, а чегой-то вы в наш монастырь? кадилом давно не получали? :) холивары в другом разделе а тут человеку надо было оптимизировать код в среде делфи, а не переделать на си...

0
30.07.2013, 15:39

Не по теме:

Так- то оно так, и C# слабо относиться к Delphi :(, несмотря на то что C# разрабатывали знатоки Оберона, если не ошибаюсь :-D, просто человеку нужен был результат - быстрая обработка его файла, и кажется по срокам на "вчера" вот я и подсобил на C# :). На счет Delphi сильно не пинайте я последнею на нем программу писал под Delphi7 и это было давно и не правда :)
P. S. за чистоту кода не пинайте писал быстро и на коленке :-D

0
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
30.07.2013, 19:48
агерон, Я в Си не понимаю - не могу оценить код и проверить алгоритм. Но по условию задачи нужно искать в этих числовых комбинациях совпадение (допустим 3-х) символов в соответствующих позициях. Не обязательно первых. И группировать допустим, тройками (на сегодня по 16).
Пример:
g 3547384; g 3187287; g 3567585;

Добавлено через 2 часа 9 минут
Вот:
Кликните здесь для просмотра всего текста
Delphi
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
procedure TForm1.Button1Click(Sender: TObject);
Type
  TArrayOfInteger = Array Of Integer;
Var
  sl,sl1,sk1 : TStringList;
  i,j,n,z,tim,timee,timerr : Integer;
  Arr : Array[0..9999] Of LongWord;
  s : String;
  ArrIndex : TArrayOfInteger;
//-------------------------------------------------------------
//BegNesting - Количество вложений (нужное)
//CurNesting - Текущее вложение (при передаче уменьшается)
//Index - Индекс с которого начинать поиск
//ResComparison - результат сравнения на предыдущих уровнях
//AccumulStr - строка, накапливающая результат
//ArrIndex - Массив для передачи индексов выбранных элементов с уровня на уровень
Function FindHit(BegNesting,CurNesting:Byte;Index:Integer;
         ResComparison:LongWord;AccumulStr:String;Var ArrIndex:TArrayOfInteger):Boolean;
Var
  i,j,n,t,tZ : Integer;
  a,b : LongWord;
  s : String;
Begin
  Result:=False;
  SetLength(ArrIndex,Length(ArrIndex)+1);
  For i:=Index To sl.Count-CurNesting Do
  If Arr[i]<>$FFFFFFF Then
  Begin
    Result:=False;
    If CurNesting=BegNesting Then
    ProgressBar1.Position:=i;
 
    a:=ResComparison;
    If Index<>0 Then
    Begin
      a:=ResComparison Or (Arr[Index-1] Xor Arr[i]);
      tZ:=0;
      b:=$F;
      For t:=1 to 7 do     {окончательное сравнивание}
      Begin
        If (a And b)=0 Then tZ:=tZ+1;
        If tZ>=Z then Break;
        If (tZ+(7-t))<Z Then Break;
        b:=b Shl 4;
      End;
      if tZ<Z then Continue;
    End;
 
    ArrIndex[High(ArrIndex)]:=i;
 
    s:=sl[i];
    If AccumulStr<>'' Then s:='-|-'+s;
 
    If CurNesting=1 Then
    {условие, если найдено ,что совпали на всех уровнях}
    Begin
      sl1.Add(AccumulStr+s);
      Timee:=Timee+1;
      Edit3.Text:=IntToSTR(timee);
      For j:=0 To High(ArrIndex) Do
      Begin
        n:=sk1.IndexOf(sl[ArrIndex[j]]);
        If n>=0 Then sk1.Delete(n);
        Arr[ArrIndex[j]]:=$FFFFFFF;
      End;
      Result:=True;
      Break;
    End;
 
    Result:=FindHit(BegNesting,CurNesting-1,i+1,a,AccumulStr+s,ArrIndex);
 
    If Result And (CurNesting<>BegNesting) Then Break;
 
    Application.ProcessMessages; //Чтобы форма не зависала
    If EndProcess Then Break;
  End;
  SetLength(ArrIndex,Length(ArrIndex)-1);
End;
//-------------------------------------------------------------
begin
image3.Visible:=false;
Image5.Visible:=true;
  sl:=TStringList.Create;
  sl.LoadFromFile(
  ExtractFilePath(Application.ExeName)+'inGos.txt');
 
  ProgressBar1.Max:=sl.Count-16;
  ProgressBar1.Position:=0;
 
  z:=StrToIntDef(Edit1.Text,3); //Количество знаков совпадения
  If z>7 Then z:=7;
  If z=0 Then z:=1;
  Edit1.Text:=IntToStr(z);
  //Обработка...
 
  //Находим все обрабатываемые части текста
  i:=0;
  While i<sl.Count Do
  Begin
    j:=Pos('g ',sl[i]);
    If j=0 Then
    Begin
      sl.Delete(i);
      Continue;
    End;
    s:=Copy(sl[i],j+2,7); //Взяли только рабочую часть
    //Занесём данное в массив, преобразовав в число (двоично-десятичный формат)
    Arr[i]:=0;
    For n:=1 To 7 Do
    Begin
      Arr[i]:=Arr[i] Shl 4;
      Arr[i]:=Arr[i] Or (Ord(s[n])-Ord('0'));
    End;
 
    //Избавимся от лишних символов в строке
    s:='';
    For n:=1 To Length(sl[i]) Do
    If sl[i][n] In ['g','0'..'9',';',','] Then
    s:=s+sl[i][n];
    sl[i]:=s;
 
    Edit2.Text:=IntToStr(sl.count);
    Inc(i);
  End;
 
  sk1:=TStringList.Create;
  sk1.Assign(sl);
 
  sl1:=TStringList.Create;
 
  EndProcess:=False;
  SetLength(ArrIndex,0);
  FindHit(16,16,0,0,'',ArrIndex);
  Finalize(ArrIndex);
 
  sl1.SaveToFile(ExtractFilePath(Application.ExeName)+'OutGos'+IntToStr(z)+'.txt');
  sk1.SaveToFile(ExtractFilePath(Application.ExeName)+'Outgosfull.txt');
  Edit4.Text:=IntToStr(sl1.Count);
  sl1.Free;
  sl.Free;
  sk1.free;
end;
1
2 / 2 / 0
Регистрация: 01.04.2013
Сообщений: 46
30.07.2013, 22:13  [ТС]
работает! отлично!. спасибо большое.
0
 Аватар для агерон
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
31.07.2013, 00:15
простите спал , но для твоей задачи отлично подойдет битовая маска + TDictionary<longint, TStringList>
если тебе еще нужно то я изменю свою программу под твои условия
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.07.2013, 00:15

Как сделать данную программу более эффективной?
public class NestedLoops { public static void main(String args) { for (int i = 2; i&lt;=20; i++){ ...

Оператор Goto или оптимизация кода
Доброго времени суток, уважаемые форумчане. Хотелось бы обратиться с вопросом по поводу оптимизации куска кода, очень уж это дело громоздко...

Как редактировать таблицу из кода или сделать привязку?
Доброго дня! Вопрос в следующем: Делаю приложение, которое готовит печатную форму. Где всё без изменений - проблем не вызывает. Но вот...

Как сделать так, что бы программа не работала когда вводишь одно или более двух слов на Java
Как делать так, что бы программа не работала когда вводишь одно или более двух слов на Java package com.company; import...

Разделение кода на две или более пользовательских функции
Нужно разбить код для подсчета уравнения, на две или более пользовательские функциии (например ввода и подсчета) используя public static ,...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru