Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3

Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора?

20.06.2014, 20:53. Показов 1863. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
я ведь правильно определил удаление элемента из массива и совершил вызов деструктора?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class ECM
{
.....
}
ECM *pECM[100];
....
void ECM::~ECM()
{
cout<<"Удален";
}
void main()
{
pECM[i]->~ECM();//удалить i-тый элемент
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.06.2014, 20:53
Ответы с готовыми решениями:

Вызов деструктора [удаление через указатель]
class A: public B { public: A() {} ~A() {std::cout &lt;&lt; &quot;del&quot;;} void someFn(A*); void someFn2(); }; void someFn(A*...

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

Правильно ли реализовано?
ЗАДАНИЕ : Информационная система Вуза. Студенты, организованные в группы, учатся на одном из факультетов, возглавляемом деканатом, в...

19
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
20.06.2014, 20:56
Разве там не delete нужно использовать, если у тебя указатели?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
20.06.2014, 20:59
Лучший ответ Сообщение было отмечено Supernatural как решение

Решение

Цитата Сообщение от Supernatural Посмотреть сообщение
pECM[i]->~ECM();//удалить i-тый элемент
во-первых, массив не инициализирован, во-вторых, всё зависит от того как выделялась память под объекты
0
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3
20.06.2014, 21:03  [ТС]
ах-да и забыл:
C++
1
2
3
4
ECM::~ECM()                     //удалить объект
{
 
}
реализация деструктора

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение
во-первых, массив не инициализирован, во-вторых, всё зависит от того как выделялась память под объекты
у меня вроде все работает, кроме удаления элемента. Я выделил память, просто привел лишь отдельный фрагмент кода

Добавлено через 1 минуту
во-вторых, всё зависит от того как выделялась память под объекты
через new, хотя значит я просто не дописал процедуру удаления

Добавлено через 1 минуту
я только не пойму, деструктор в определении остается пустым или туда все же надо вписывать команду delete?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
20.06.2014, 21:04
Цитата Сообщение от Supernatural Посмотреть сообщение
Я выделил память, просто привел лишь отдельный фрагмент кода
от того как выделили зависит и как уничтожать.
0
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3
20.06.2014, 21:09  [ТС]
чуть-чуть недопонимаю, скидываю код. Где и что должно быть написано?
Кликните здесь для просмотра всего текста
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
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
143
144
145
146
147
148
149
#include <vcl.h>
#include <iostream.h>
#include <string.h>
#pragma hdrstop
#pragma argsused
using namespace std;
//------------------------------------------------------------------------------
string stemporary;  //ãëîáàëüíûå âðåìåííûå ïåðåìåííûå
int itemporary;
float ftemporary;
float fftemporary;
string com;
int i=0;
//------------------------------------------------------------------------------
class ECM
{
char* type;
float Ghz;
int Memory;
float Gb;
public:
ECM(); //êîíñòðóêòîð áåç ïàðàìåòðîâ
ECM(char* TYPE,float GHZ,int MEMORY,float GB);//êîíñòðóêòîð ñ ïàðàìåòðàìè
ECM(const ECM&); //êîíñòðóêòîð êîïèðîâàíèÿ
~ECM();          //äåñòðóêòîð
//------------------------------------------------------------------------------
void settype(char* temp);   //ôóíêöèè äëÿ êîìàíäû  Èçìåíèòü
void setghz(float temp);
void setmemory(int temp);
void setgb(float temp);
void show();
//------------------------------------------------------------------------------
char* gettypecpu();         //ôóíêöèè äëÿ êîìàíäû  Ïîêàçàòü
float getghz();
int getmemory();
float getgb();
};
//------------------------------------------------------------------------------
void ECM::settype(char* temp)   //óñòàíîâèòü òèï ïðîöåññîðà
{
type=temp;
}
//------------------------------------------------------------------------------
void ECM::setghz(float temp)    //óñòàíîâèòü ÷àñòîòó ïðîöåññîðà
{
Ghz=temp;
}
//------------------------------------------------------------------------------
void ECM::setmemory(int temp)   //óñòàíîâèòü îáúåì ïàìÿòè
{
Memory=temp;
}
//------------------------------------------------------------------------------
void ECM::setgb(float temp)     //óñòàíîâèòü îáúåì íàêîïèòåëÿ
{
Gb=temp;
}
//------------------------------------------------------------------------------
ECM::~ECM()                     //óäëèòü îáúåêò
{
 
}
//------------------------------------------------------------------------------
ECM::ECM(char* TYPE,float GHZ,int MEMORY,float GB) //êîíñòðóêòîð ñ ïàðàìåòðàìè
{
type=TYPE;
Ghz=GHZ;
Memory=MEMORY;
Gb=GB;
}
//------------------------------------------------------------------------------
ECM::ECM(){ //êîíñòðóêòîð áåç ïàðàìåòðîâ
type=NULL;
Ghz=0;
Memory=0;
Gb=0;
}
//------------------------------------------------------------------------------
ECM::ECM(const ECM &E)   //êîíñòðóêòîð êîïèðîâàíèÿ
{
if (E.type) {type= new char [strlen(E.type)+1]; strcpy(type, E.type);}
else type=0;
type=E.type;Ghz=E.Ghz;Memory=E.Memory;Gb=E.Gb;
}                       
//------------------------------------------------------------------------------
char* ECM::gettypecpu() {return type;}
float ECM::getghz() {return Ghz;}
int ECM::getmemory() {return Memory;}
float ECM::getgb() {return Gb;}
void add_element();
void edit_element(int i);
void show_element(int i);
void copy_element(int i);
void delete_element(int i);
void show_all();
//------------------------------------------------------------------------------
ECM *pECM[100];
//------------------------------------------------------------------------------
void add_element() //ïðîöåäóðà äîáàâëåíèÿ
{
++i;
cout<<"\nCPU ";cin>>stemporary;
char* ctemporary = new char [stemporary.length()+1];
strcpy(ctemporary,stemporary.c_str());
cout<<"\nGhz ";cin>>ftemporary;
cout<<"\nMemory ";cin>>itemporary;
cout<<"\nGb ";cin>>fftemporary;
pECM[i]= new ECM(ctemporary,ftemporary,itemporary,fftemporary);//íîâûé ýëåìåíò
}
//------------------------------------------------------------------------------
void edit_element(int i)
{
 
}
//------------------------------------------------------------------------------
void delete_element(int i)  //óäàëèòü ýëåìåíò
{
pECM[i]->~ECM();
cout<<"\nElement has been deleted";
}
//------------------------------------------------------------------------------
void show_element(int i)   //ïîêàçàòü ýëåìåíò
{
cout<<pECM[i]->gettypecpu()<<" "<<pECM[i]->getghz()<<" "<<pECM[i]->getmemory()<<" "<<pECM[i]->getgb();
}
//------------------------------------------------------------------------------
void show_all()            //ïîêàçàòü âåñü ñïèñîê
{
for (int k=0;k<i;k++)
cout<<pECM[k]->gettypecpu()<<" "<<pECM[k]->getghz()<<" "<<pECM[k]->getmemory()<<" "<<pECM[k]->getgb();
}
//------------------------------------------------------------------------------
void main()
{
int i;
int temp;
cout<<"Enter command: ";cin>>com;
while (com!="exit")
{
if (com=="add") {add_element();cout<<"\nEnter command: ";cin>>com;} else
if (com=="edit") {cin>>i;edit_element(i);cout<<"\nEnter command: ";cin>>com;} else
if (com=="delete") {cout<<"\nEnter number of record";cin>>temp;delete_element(temp);cout<<"\nEnter command: ";cin>>com;} else
if (com=="show") {cout<<"\nEnter number of record";cin>>temp;show_element(temp);cout<<"\nEnter command: ";cin>>com;} else
if (com=="show all") {show_all;cout<<"\nEnter command: ";cin>>com;} else
if (com=="exit") exit (EXIT_SUCCESS); else
if ((com!="add")||(com!="edit")||(com!="delete")||(com!="show")||(com!="show all")||(com!="exit")) {cout<<"\nEnter command: ";cin>>com;};
}
}
//---------------------------------------------------------------------------
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
20.06.2014, 21:16
C++
1
2
3
4
5
void delete_element(int i)  //удалить элемент
{
delete pECM[i] ;//Деструктор вызовется без вашего участия.
cout<<"\nElement has been deleted";
}
1
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3
20.06.2014, 22:05  [ТС]
Croessmah, хорошо, а в каких случаях мне можно использовать конструктор без параметра? С параметром уже разобрался.
0
Заблокирован
20.06.2014, 22:22
Цитата Сообщение от Supernatural Посмотреть сообщение
ECM *pECM[100];
100 указателей на объект ))) круто

Добавлено через 14 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class ECM
{
public:
    ~ECM();
};
ECM *pECM=nullptr;
 
ECM::~ECM()
{
std::cout<<"Удален";
};
 
int main(int argc, char** argv) {
 
    pECM =new ECM[100];
    delete[] pECM;
Указателей на массив не существует, существуют только указатель на один элемент массива.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
21.06.2014, 14:42
Цитата Сообщение от Trwsdf Посмотреть сообщение
Указателей на массив не существует, существуют только указатель на один элемент массива.
C++
1
2
3
4
5
6
7
8
int main() {
 
    const int N = 42;
    int a[N];
    int (*p)[N] = &a;
 
    return 0;
}
p - указатель на массив из N элементов типа int.
0
Заблокирован
22.06.2014, 16:26
Цитата Сообщение от Tulosba Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Код C++
1
2
3
4
5
6
7
8
int main() {
const int N = 42;
 int a[N];
 int (*p)[N] = &a;
return 0;
}
p - указатель на массив из N элементов типа int
.
Теперь вы окончательно укоренили мне мнение о вас, о вашей безграмотности.
Вы так и не поняли, что указателей на массив не существует, существует, только указатели на один элемент массива, их то мы и считаем указателями на массив.
Попытаюсь повторить, но судя с ответов предыдущей темы, ожидаю, что автор и тут будет агрессивно настроен.

То, что вы написали, это указатель на указатель на 1й элемент массива, т.е. есть массив в виде указателя на 1й элемент массива (о чем я писал выше), а есть указатель на этот указатель, - он и является указателем на массив. Т.е. массив в виде указателя на 1й элемент массива - он и считается указателем на массив. Указатель на один элемент массива считается указателем на массив, - но реально не на весь массив, а лишь на один его элемент. Указателей на массив НЕТ И НЕ БЫЛО. Они и не нужны, ибо мы знаем особенность массива (что его элементы в памяти всегда и гарантированно расположены один за другим) и нам всегда хватает лишь указателя на один элемент массив. О чем я выше говорил.
Ниже код:
C++
1
2
3
4
5
6
7
8
9
10
11
 const int N = 3;
    int a[N]={1,2,3};
    
    int (*p)[N] = &a;
    //**p -указатель "на массив" есть указатель на указатель на 1й эдемент массива
    //т.е. есть указатель на массив, в виде указателя на 1й элемент, а
    //указатель на этот указатель и есть указатель на массив. Таким образом
    //эта конструкция подтверждает то, что указатель на один элемент 
    //считается указателем на массив.
    cout<<**p; //1 - указатель на один элемент массива, но не на массив из n элементов.
    cout<<(*p)[2];
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
22.06.2014, 16:37
Цитата Сообщение от Trwsdf Посмотреть сообщение
Теперь вы окончательно укоренили мне мнение о вас, о вашей безграмотности.
Tulosba прав, а ты - нет. Учи теорию типов

Справедливости ради все же отмечу, что это кстати весьма распространенное забруждение
0
Заблокирован
22.06.2014, 16:39
Цитата Сообщение от Voivoid Посмотреть сообщение
Tulosba прав, а ты - нет. Учи теорию типов
Круто папка зашел и сказал, интересно он прежде чем так ответить хоть знает С++?
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
22.06.2014, 16:48
Цитата Сообщение от Trwsdf Посмотреть сообщение
Круто папка зашел и сказал, интересно он прежде чем так ответить хоть знает С++?
А то!

Даже не знаю какой бы пример попроще подобрать, ну пусть будет например такой:
C++
1
2
3
4
5
6
7
8
9
10
  const int N = 42;
  const int M = 43;
 
  int a[ N ];
  int b[ M ];
 
  int( *p )[ N ] = &a;
  int( *q )[ M ] = &b;
 
  p = q;
Вывод компилятора:
error C2440: '=' : cannot convert from 'int (*)[43]' to 'int (*)[42]'
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
22.06.2014, 20:21
Цитата Сообщение от Trwsdf Посмотреть сообщение
//указатель на этот указатель и есть указатель на массив.
Характерная черта массива как типа - известность его размера и в int (*p)[3] создается именно указатель на массив определенного размера, интерпретируя его как тип. Проверим банальной перегрузкой:
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
#include <iostream>
void foo( int (*p)[5] )
{
   std::cout << "void foo( int *p[5] )" << std::endl ;
}
 
void foo( int (*p)[3] )
{
   std::cout << "void foo( int *p[3] )" << std::endl ;
}
 
void foo( int * p )
{
   std::cout << "void foo( int * p )" << std::endl ;
}
 
 
void foo( int ** p )
{
   std::cout << "void foo( int ** p )" << std::endl ;
}
int main( )
{
    int * p1 = 0 ;
    int ** p2 = 0 ;
    int (*p3)[3] = 0 ;
    int (*p4)[5] = 0 ;
    foo(p1) ;
    foo(p2) ;
    foo(p3) ;
    foo(p4) ;
}
Никаких нареканий - все указатели имеют разный тип(даже если указана разная размерность массива). Хоть массив это и просто кусок памяти, но интерпретировать его можно по разному.

P.S. Указатели не указывают на элементы массива, они указывают просто на память определенного типа, будь там указател int ** pp или "статический" массив int (*p)[N]
0
Заблокирован
24.06.2014, 15:46
Цитата Сообщение от Croessmah Посмотреть сообщение
Характерная черта массива как типа - известность его размера и в int (*p)[3] создается именно указатель на массив определенного размера, интерпретируя его как тип.
1 Почитал. Ну что тут скажешь.
В С и С++ размерность С массива всегда передается отдельным числом. Поэтому конструкция вида char * - получается, для него не указатель на массив, ибо там не указана размерность. Удивительно отчего он с ним тогда работает как с массивом в коде, но это его проблемы.

2 int (*p)[3][3] - это такой же указатель как и int** p, но с ограничениями, поддерживаемыми компилятором и запрещающим его приведение с простому указателю.
Речь шла о другом, а именно, что указателей на массив не существует. Как можно сразу указывать на все элементы массива? Привожу пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//строгие указатели
    int init[2][2][2]={{{1,2},{3,4}},{{5,6},{7,8}}};
    int init2[2]={1,2};
 
    int (*p)[2][2][2] =&init;   
 
    cout<<(***p)[2]<<endl;//3
    cout<<(*(init+1))[1][0]<<endl;//7
    cout<<***init<<endl; //1
    cout<<****p<<endl; //1
 
    int *** p1=(int***)init; //0x1 -oops, всегда 1.
    int *p2=(int*)init2; //корректно
 
    cout<<*p2<<endl;
    cout<<p2[1]<<endl;
    
    //нестрогие
    int ** array; 
    //матрица
    array = (int **)malloc(5 * sizeof(int *));
    for(int i = 0; i < 5; i++)
        array[i] = (int *)malloc(5 * sizeof(int));
все массивы представляют собой указатели на один первый элемент массива, а не на весь массив, посему не существует указателей на массив.
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
13.08.2014, 11:33
Теория типов? Не-е, лучше навыдумывать какую-нибудь ерунду про строгие и нестрогие указатели

Цитата Сообщение от Trwsdf Посмотреть сообщение
Как можно сразу указывать на все элементы массива?
Интересно, лол, вот скажем когда ты смотришь на указатель на std::array, то у тебя этот вопрос возникает?

Добавлено через 12 часов 19 минут
Вот еще кусок кода для самых маленьких:

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
#include <iostream>
#include <typeinfo>
 
int main() {
 
  int* arr;
  int( *arr1 )[ 10 ];
  int( *arr2 )[ 11 ];
 
  auto& t( typeid( arr ) );
  auto& t1 ( typeid( arr1 ) );
  auto& t2 ( typeid( arr2 ) );
 
  std::cout << t.raw_name() << "\n";
  std::cout << t1.raw_name() << "\n";
  std::cout << t2.raw_name() << "\n";
 
  std::cout << ( t1 == t2 ) << " " << ( t == t1 ) << " " << ( t == t2 ) << "\n";
 
/*
 Если кому лень это все запускать, то скажу, что имена все разные, а результаты сравнений все ложные
*/
 
  /*
  int x = *arr; // ok
  int y = *arr1; // error cannot convert from 'int [10]' to 'int'
  */
 
  return 0;
}
0
Заблокирован
14.08.2014, 10:32
Цитата Сообщение от Voivoid Посмотреть сообщение
Теория типов? Не-е, лучше навыдумывать какую-нибудь ерунду про строгие и нестрогие указатели
хочешь меня достать? не выйдет.
Цитата Сообщение от Voivoid Посмотреть сообщение
Интересно, лол, вот скажем когда ты смотришь на указатель на std::array, то у тебя этот вопрос возникает?
ты сам знаешь, что не прав.
Цитата Сообщение от Voivoid Посмотреть сообщение
Вот еще кусок кода для самых маленьких:
ну во первых твой код не запускается на GNU компиляторе, но это не важно. Суть в том, что он бесполезный и бестолковый, еще раз подтверждаюзий мое мнение о вас.
А именно, ненужные приведения типов , это раз. Второе typeid -оператор, строит объект типа, для указателей с ограничениями,активно используя метаинформацию компилятора, они всегда будут разными.

Еще раз повторяю, господа, администраторы и прочие "знающие люди" самовольно приписавшие себе звания "экспертов" и накрутившие себе цифры. Ваша компетенция и знания не соответствуют действительности, ваши знания очень и очень далеки от экспертных, ваш удел - администрирование, но далеко не программирование.
Как говорится, курица тоже считает, что может летать, но почему то только ползает брюхом по земле, вот так и вы, считаете себя "экспертами", но вызываете только смех у настоящих экспертов.
Подумайте над этим.


Добавлено через 5 минут
и да, можете банить, отматывать счетчик, что там вы еще любите делать, когда знаний не хватает, - мне все все равно.
Я собсно и заходить сюда не собираюсь больше.
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
14.08.2014, 12:37
Цитата Сообщение от Trwsdf Посмотреть сообщение
Второе typeid -оператор, строит объект типа, для указателей с ограничениями,активно используя метаинформацию компилятора, они всегда будут разными
А, лол, я кажется понял. У тебя мышление типичного C'шника. Т.е. устройство и семантика языка не важны ( ну естественно, с этим же надо разбираться ), важны только байтики в памяти. Наглядный пример:
C++
1
2
3
  int arr[ 42 ];
  int* p = arr;
  int ( *p1 )[ 42 ] = &arr;
C'шник смотрит куда указывают p и p1, видит одинаковые адреса и соответственно делает блестящий вывод о том, что это одно и тоже
0
14.08.2014, 13:18

Не по теме:

Voivoid, "pls don't feed the troll" :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.08.2014, 13:18
Помогаю со студенческими работами здесь

Вызов деструктора
При ручном вызове деструктора, освобождается ли память*

Вызов деструктора
Доброго вам времени суток. Проблема в том, что деструктор не выводит сообщение без этой строки. s1.~Shave(); И я не уверен, что так...

Вызов деструктора
Есть написанный мною код: #include &lt;iostream&gt; class Foo { private: int *key; public: Foo (const int a=0) { key = new int...

Вызов деструктора
Здравствуйте ,подскажите пожалуйста ,есть вот такой код ... При создании объекта MyClass в функции Foo() ,объект уничтожается когда мы...

Вызов деструктора
Вызывается ли деструктор объекта при завершении программы? а при аварийном завершении? А если снять процесс приложения диспетчером?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru