Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 27.11.2022
Сообщений: 4

Уже определен .obj c++

26.05.2023, 21:54. Показов 3081. Ответов 2

Студворк — интернет-сервис помощи студентам
Выводит ошибку int kol уже определен в main.obj, bool changed уже определен в main.obj и еще множество переменных

файл main.cpp
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
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdlib.h>
#include "main.h"
#include "files.h"
#include "func.h"
eCMD Menu()
{
    while (true)
    {
        system("cls");
        printf("Добро пожаловать в магазин техники!\n");
        puts("Выберите действие:");
        puts("1 - Открыть файл");
        puts("2 - Просмотр данных");
        puts("3 - Запись в файл");
        puts("4 - Выход из программы");
        int opt;
        fflush(stdin);
        scanf_s("%d", &opt); 
            switch (opt) {
            case 1: return CMD_READ;
            case 2: return CMD_SHOW;
            case 3: return CMD_SAVE;
            case 4: return CMD_EXIT;
            default: printf("Вы ввели неправильную команду\n");
                while ((opt = getchar() != '\n') && opt != EOF) {}
                system("pause");
            }
        }
    }
 
int main()
{
    system("chcp 1251");
    kol = 3;
    techno_shop* add = Database;
    strcpy(add->name, "Телевизор"); //используется для копирования строки из одного массива символов в другой массив символов.
    strcpy(add->brend, "Samsung");
    add->serial_num = 359182;
    add->price = 45999.99;
    add->amount = 15;
    add++;
    strcpy(add->name, "Стиральная машина");
    strcpy(add->brend, "Bosh");
    add->serial_num = 948273;
    add->price = 15500;
    add->amount = 10;
    add++;
    strcpy(add->name, "Монитор");
    strcpy(add->brend, "LOC");
    add->serial_num = 648204;
    add->price = 23000;
    add->amount = 6;
    add++;
    eCMD cmd = CMD_NONE;
    while (true)
    {
        if (cmd == CMD_EXIT){
            if (changed == true)
            {
                int choise;
                printf("Вы вышли и забыли сохраниться.Вы уверены что хотите выйти? 1 - Да.0 - Нет\n");
                scanf("%d", &choise);
                if (choise == 0) { cmd = CMD_NONE; }
                else { break; }
                system("pause");
            }
        else { break; }
        
    }
    
        cmd = Menu();
        switch (cmd)
        {
        case CMD_SHOW: Show(Database, kol, changed); break;
        case CMD_READ: Read(Database, kol); break;
        case CMD_SAVE: Save(Database, kol, changed); break;
        }
}
    free(Database);
    printf("Досвидания,приходите еще!\n");
    system("pause");
    return 0;
}
файл main.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
enum eCMD {
    CMD_EXIT = -1, CMD_NONE, CMD_READ, CMD_SHOW,
    CMD_EDIT, CMD_ADD, CMD_DELETE, CMD_SORT,
    CMD_FIND, CMD_SAVE
};
const int max = 4;
struct techno_shop
{
    char name[256];
    char brend[256];
    int serial_num;
    double price;
    int amount;
};
int kol = 0;
bool changed = false; // проверка на изменение файла
techno_shop* Database = (techno_shop*)malloc(max * sizeof(techno_shop));
файл func.cpp
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
#include "func.h"
#include <iostream>
using namespace std;
eCMD MenuShow()
{
    while (true)
    {
        printf("Выберите функцию:\n");
        printf("1 - Добавить \n");
        printf("2 - Удалить \n");
        printf("3 - Сортировать \n");
        printf("4 - Редактировать\n");
        printf("5 - Поиск\n");
        printf("6 - Выход\n");
        int func = 0;
        fflush(stdin); //  очистка консоли
        scanf_s("%d", &func);
        switch (func)
        {
        case 1: return CMD_ADD; 
        case 2: return CMD_DELETE;
        case 3: return CMD_SORT;
        case 4: return CMD_EDIT;
        case 5: return CMD_FIND;
        case 6: return CMD_EXIT;
        default: printf("Вы ввели неправильную команду\n");            /*Эта строка кода использует цикл while, чтобы считывать символы с ввода, пока не будет встречен символ
                                                                           новой строки ('\n') или символ конца файла (EOF). После этого символы продолжают считываться, 
                                                                           пока не будет встречен символ новой строки или символ конца файла. 
                                                                           Таким образом, цикл очищает оставшиеся символы во вводе*/
            while((func=getchar()!='\n')&&func!=EOF) {}
            system("pause");
            return CMD_SHOW;
     }
    }
}
techno_shop* Add(techno_shop* Database, int& kol, bool& changed)
{
    kol++;
    techno_shop* temp;
    if (kol > 4) { temp = (techno_shop*)realloc(Database, (kol+1) * sizeof(techno_shop)); }  /*Если условие выполняется (т.е kol больше 5), тогда происходит выделение новой 
                                                                                          памяти с использованием функции realloc. Память выделяется для массива типа techno_shop
                                                                                          с размером kol * sizeof(techno_shop)*/
    else temp = Database;
    for (int i = kol - 1; i < kol; i++)
    {
        printf("Начинаем вводить новую строку:\n");
        while (getchar() != '\n');
        printf("Введите название товара:\n");
        fgets(temp[i].name, sizeof(temp[i].name), stdin);                                 //Функция fgets используется для чтения строки из стандартного ввода (stdin).
                                                                                          
        temp[i].name[strcspn(temp[i].name, "\n")] = '\0';
 
            if (strlen(temp[i].name) > 20) {
            strncpy(temp[i].name, temp[i].name, 20);                                     
            temp[i].name[20] = '\0';
        }
 
        printf("Введите бренд:\n");
        fgets(temp[i].brend, sizeof(temp[i].brend), stdin);
        temp[i].brend[strcspn(temp[i].brend, "\n")] = '\0';
 
        if (strlen(temp[i].brend) > 20) {
            strncpy(temp[i].brend, temp[i].brend, 20);                                        
            temp[i].brend[20] = '\0';
        }
            printf("Введите серийный номер товара:\n");
            while ((scanf("%d", &temp[i].serial_num) != 1)||temp[i].serial_num<0) {
                printf("Ошибка ввода. Пожалуйста, введите положительное число:\n");
                while (getchar() != '\n');
            }
            rewind(stdin);
 
            printf("Введите цену:\n");
            while (scanf("%lf", &temp[i].price) != 1 || temp[i].price < 0 ) {
                printf("Ошибка ввода. Пожалуйста, введите положительное число:\n");
                while (getchar() != '\n');
            }
            rewind(stdin);
 
            printf("Введите кол-во товара на складе:\n");
            while ((scanf("%d", &temp[i].amount) != 1)||temp[i].amount<0) {
                printf("Ошибка ввода. Пожалуйста, введите положительное число:\n");
                while (getchar() != '\n');
            }
            rewind(stdin);
    }
    printf("Строка добавлена!\n");
    system("pause");
    changed = true;
    return temp;
}
void Delete(techno_shop* Database, int& kol, bool& changed)
{
    int del;
    printf("Введите номер строки которую хотите удалить\n");
    scanf_s("%d", &del);
    if (del < 1 || del > kol)
    {
        printf("Неправильно введен номер строки\n"); system("pause"); return;
    }
    kol--;
    for (int i = del - 1; i < kol;i++) {
        Database[i] = Database[i + 1];
    }
    printf("Данные удалены\n");
    system("pause");
    changed = true;
}
void Sort(techno_shop* Database, int colvo)
{
    int choice;
    printf("Выберите как Вы хотите отсортировать: 1 - По возрастанию цены, 2 - По возрастанию количества на складе\n");
    scanf_s("%d", &choice);
    if (choice == 1)
    {
        techno_shop temp;
        for (int i = 0; i < colvo - 1; i++)
        {
            for (int j = 0; j < colvo - i - 1; j++)
            {
                if (Database[j].price > Database[j + 1].price)
                {
                    temp = Database[j];
                    Database[j] = Database[j + 1];
                    Database[j + 1] = temp;
                }
            }
        }
    }
    else if (choice == 2)
    {
        techno_shop temp;
        for (int i = 0; i < colvo - 1; i++)
        {
            for (int j = 0; j < colvo - i - 1; j++)
            {
                if (Database[j].amount > Database[j + 1].amount)
                {
                    temp = Database[j];
                    Database[j] = Database[j + 1];
                    Database[j + 1] = temp;
                }
            }
        }
    }
    else
    {
        printf("Такого выбора нет\n");
        system("pause");
        return;
    }
}
void Edit(techno_shop* Database, int kol, bool& changed)
{
    int stroka;
    printf("Какую строку вы хотите изменить?\n");
    scanf_s("%d", &stroka);
    if (stroka < 0 || stroka > kol) { cout << "Такой строки нет." << endl; system("pause"); return; }
    int choice;
    printf("Что вы хотите изменить: 1 - Название Товара, 2 - Бренд, 3 - Серийный номер, 4 - Цена, 5-Количество на складе, 0 - Выход\n");
    scanf("%d", &choice);
    if (choice == 0 || choice>5) return;
    fflush(stdin);
    printf("Введите свои данные: \n");
    switch (choice)
    {
    case 1:
        while (getchar() != '\n');
        fgets(Database[stroka - 1].name, sizeof(Database[stroka - 1].name), stdin);
        Database[stroka - 1].name[strcspn(Database[stroka - 1].name, "\n")] = '\0';
        if (strlen(Database[stroka - 1].name) > 20) {
            strncpy(Database[stroka - 1].name, Database[stroka - 1].name, 20);
            Database[stroka - 1].name[20] = '\0'; } break;
    case 2:
        while (getchar() != '\n');
        fgets(Database[stroka - 1].brend, sizeof(Database[stroka - 1].brend), stdin);
        Database[stroka - 1].brend[strcspn(Database[stroka - 1].brend, "\n")] = '\0';
        if (strlen(Database[stroka - 1].brend) > 20) {
            strncpy(Database[stroka - 1].brend, Database[stroka - 1].brend, 20);
            Database[stroka - 1].brend[20] = '\0';}  break;
    case 3:
        while ((scanf_s("%d", &Database[stroka - 1].serial_num)!=1)||( Database[stroka - 1].serial_num < 0)) {
        printf("Ошибка ввода. Пожалуйста, введите положительное число:\n");
        while (getchar() != '\n');}; rewind(stdin); break;
    case 4: while ((scanf_s("%lf", &Database[stroka - 1].price) != 1) || (Database[stroka - 1].price < 0)) {
        printf("Ошибка ввода. Пожалуйста, введите положительное число:\n");
        while (getchar() != '\n');
    }; rewind(stdin); break; 
    case 5: while ((scanf_s("%d", &Database[stroka - 1].amount) != 1) || (Database[stroka - 1].amount < 0)) {
        printf("Ошибка ввода. Пожалуйста, введите положительное число:\n");
        while (getchar() != '\n');}; rewind(stdin); break;
    default: printf("Вы ввели неправильное число!\n");
    }
    printf("Данные успешно изменены.\n");
    system("pause");
    changed = true;
}
 
 
void Show(techno_shop* Database, int& kol, bool& changed)
{
    eCMD cmd = CMD_NONE;
    while (cmd != CMD_EXIT)
    {
        system("cls");
        fflush(stdin);
        printf("|%-3s|%-21s|%-21s|%-10s|%-10s|%-6s|\n", "№", "Название товара" , "Бренд" , "Серийный номер    " , "Цена" , "Количество на складе");
        printf("----------------------------------------------------------------------------------------------------\n");
        for (int i = 0; i < kol; i++)
        {
            printf("|%-3d|%-21s|%-21s|%-18.1d|%-10.1f|%-20.1d|\n", i + 1, Database[i].name, Database[i].brend, Database[i].serial_num, Database[i].price, Database[i].amount);
            printf("----------------------------------------------------------------------------------------------------\n");
        }
        cmd = MenuShow();
        switch (cmd)
        {
        case CMD_EDIT: Edit(Database, kol, changed); break;
        case CMD_ADD: Database = Add(Database, kol, changed); break;
        case CMD_DELETE: Delete(Database, kol, changed); break;
        case CMD_SORT: Sort(Database, kol); break;
        case CMD_FIND: Find(Database, kol); break;
        
        }
    }
}
 
 
void Find(techno_shop* Database, int kol)
{
    int option;
    int coun = 0;
    printf("Выберите по какому параметру вы хотите найти товар: 1 - По названию товара, 2 - По названию бренда товара\n");
    scanf_s("%d", &option);
    if (option == 1) {
        char str[50];
        int s = 0;
        coun++;
        printf("Введите название товара\n");
        while (getchar() != '\n');
        fgets(str, sizeof(str), stdin);  //Функция fgets используется для чтения строки из стандартного ввода (в данном случае stdin) и сохранения её в указанный буфер str.
        str[strcspn(str, "\n")] = '\0';  //функция strcspn возвращает длину самого длинного начального сегмента строки str, не содержащего  символ новой строки
        for (int i = 0; i < kol; i++)
        {
            if (strcmp(Database[i].name, str)==0)
            {
                printf("----------------------------------------------------------------------------------------------------\n");
                printf("|%-3d|%-21s|%-21s|%-18.1d|%-10.1f|%-20.1d|\n", i + 1, Database[i].name, Database[i].brend, Database[i].serial_num, Database[i].price, Database[i].amount);
                printf("----------------------------------------------------------------------------------------------------\n");
                s++;
            }
        }
        if (s == 0) { printf("Такого товара нет.\n"); } system("pause");
    }
    else if (option == 2) {
        char str1[50];
        int s = 0;
        coun++;
        printf("Введите бренд товара\n");
        while (getchar() != '\n');
        fgets(str1, sizeof(str1), stdin);
        str1[strcspn(str1, "\n")] = '\0';
        for (int i = 0; i < kol; i++)
        {
            if (strcmp(Database[i].brend, str1)==0)
            {
                printf("----------------------------------------------------------------------------------------------------\n");
                printf("|%-3d|%-21s|%-21s|%-18.1d|%-10.1f|%-20.1d|\n", i + 1, Database[i].name, Database[i].brend, Database[i].serial_num, Database[i].price, Database[i].amount);
                printf("----------------------------------------------------------------------------------------------------\n");
                s++;
            }
        }
        if (s == 0) { printf("Такого товара нет.\n"); } system("pause");
    }
    if (coun == 0) {
        printf("Такого выбора нет\n");
        system("pause");
        return;
    }
}
файл func.h
C++
1
2
3
4
5
6
7
8
9
#pragma once 
#define _CRT_SECURE_NO_WARNINGS // это директива препроцессора, которая отключает предупреждения компилятора о небезопасных функциях стандартной библиотеки C
#include "main.h"
void Show(techno_shop* Database, int& kol, bool& changed);
void Edit(techno_shop* Database, int kol, bool& changed);
techno_shop* Add(techno_shop* Database, int& kol, bool& changed);
void Delete(techno_shop* Database, int& kol, bool& changed);
void Sort(techno_shop* Database, int kol);
void Find(techno_shop* Database, int kol);
файл file.cpp
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
#include "files.h"
#include <stdio.h>
#include <iostream>
using namespace std;
void Read(techno_shop* Database, int& kol)
{
    char file[21];
    FILE* inp;
    while (true)
    {
        printf("Введите название файла\n");
        cin >> file;
        inp = fopen(file, "r"); //открытие файла с режимом "r" чтение
        if (!inp)
        {
            printf("Файл не найден.\n"); system("pause"); return;
        }
        else { break; }
    }
    fseek(inp, 0, SEEK_END);
    long end = ftell(inp);                                      //С помощью функций fseek и ftell определяется размер файла (end)
    rewind(inp);                                                           //затем с помощью rewind указатель файла перемещается в начало.
    long size = sizeof(techno_shop);                                 //Вычисляется размер структуры
    int n = end / size;
    if (n > 5) Database = (techno_shop*)realloc(Database, n * sizeof(techno_shop)); //если n>5 идет перераспределение памяти для массива database чтобы учесть кол во записей в файле
    int i = 0;
    while (!feof(inp))                                                  /*В цикле while (!feof(inp)) происходит чтение данных из файла. Каждая запись в файле имеет формат:
                                                                                         название,бренд,серийный_номер,цена,количество.*/
    {
        fscanf(inp, "%[^,]20s", Database[i].name);
        fseek(inp, 1, SEEK_CUR);
        fscanf(inp, "%[^,]20s", Database[i].brend);
        fseek(inp, 1, SEEK_CUR);
        fscanf(inp, "%d,%lf,%d\n", &(Database[i].serial_num), &(Database[i].price), &(Database[i].amount));
        i++;
    }
    fclose(inp);
    kol = i;
    printf("Прочтено успешно\n");
    system("pause");
}
void Save(techno_shop* Database, int& kol, bool& changed)
{
    char file[20];
    FILE* inp;
    while (true)
    {
        printf("Введите название файла\n");
        scanf("%20s", file);
        inp = fopen(file, "w");
        if (!inp)
        {
            printf("Такого названия файла быть не может\n");
        }
        else { break; }
    }
    for (int i = 0; i < kol; i++)
    {
        fprintf(inp, "%s,%s,%d,%lf,%d", Database[i].name, Database[i].brend, Database[i].serial_num, Database[i].price, Database[i].amount);
    }
    fclose(inp);
    changed = false;
    printf("Данные были сохранены\n");
    system("pause");
    
}
файл files.h
C++
1
2
3
4
5
6
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include "main.h"
 
void Read(techno_shop* Database, int& kol);
void Save(techno_shop* Database, int& kol, bool& changed);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.05.2023, 21:54
Ответы с готовыми решениями:

error LNK2005 (конструктор уже определен в ...)
Здраствуйте! Недавно начал работать с классами на С++, и столкнулся с такой вот ошибкой: error LNK2005: &quot;public: __thiscall...

Уже определен в main.obj
main.cpp #include &lt;iostream&gt; #include &lt;ctime&gt; #include &quot;inventory.h&quot; using namespace std; int main() ...

int glob уже определен в main.obj
Почему #ifndef не помогает? 1.h: #ifndef ONE_H #define ONE_H int glob; #endif

2
фрилансер
 Аватар для Алексей1153
6444 / 5639 / 1128
Регистрация: 11.10.2019
Сообщений: 15,003
26.05.2023, 22:04
когда глобальную переменную хочется разместить в заголовочнике, то
Цитата Сообщение от saamsa Посмотреть сообщение
inline int kol = 0;


другой вопрос - зачем

Добавлено через 1 минуту
взять всё тот же kol - его можно сделать локальным в main. Он не нужен глобальным в данном коде

Добавлено через 1 минуту
с changed - то же самое

Добавлено через 43 секунды
Database - тоже

Добавлено через 1 минуту
Цитата Сообщение от saamsa Посмотреть сообщение
malloc
а зачем в C++ malloc/free ?
Даже, вообще тут динамика не нужна, просто на стеке создай переменную
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,198
01.06.2023, 10:53
Цитата Сообщение от saamsa Посмотреть сообщение
Выводит ошибку int kol уже определен в main.obj, bool changed уже определен в main.obj и еще множество переменных
Ну разумеется выводит. Вы же определения этих переменных в заголовочный файл main.h положили.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2023, 10:53
Помогаю со студенческими работами здесь

Ошибка: LNK2005 <Имя> уже определен в cities.obj
Определяю переменные для нескольких файлов программ, но получаю ошибки. Не могу найти решение. Получаю ошибки для каждой переменной....

Ошибка 2005 _main уже определен в Interface.obj хотя ни ссылок, ни main я не нашла
Вот как бы два проекта, не нашла проблем, отдельно они компилятся, сижу, читаю форумы, но ничего похожего не нашла. Помогите пожалуйста. ...

Компиляция выдает ошибку "error LNK2005: _main уже определен в int.obj"
Добрый день уважаемые. Столкнулся с данной проблемой. #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int...

LNK2005 "public: __thiscall Sozdanie::Sozdanie(void)" уже определен в Programma Pozdravlenie.obj
Есть код для вывода из трех файлов с именами, праздниками и пожеланиями случайного поздравления (Я поделил программу на 3 файла, один .h и...

Переменная уже определена в Form_5.obj
Здравствуйте, я наткнулся на следующую проблему и не могу решить. Вот имеется код файла Form_5.h: #ifndef _FORM5_H #define _FORM5_H ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru