Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
5 / 6 / 2
Регистрация: 26.10.2012
Сообщений: 126

Динамический массив

02.01.2014, 15:20. Показов 2138. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется код, решающий транспортную задачу.
Если задача "закрытая", то есть добавлять строки и столбцы не нужно, то все работает как надо, но как только возникает потребность в добавлении, функционирования прекращается, хотя вычисляющий фрагмент один и тотже, то есть проблема в неправильной инициализации массива, я так думаю.
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
#include <iostream>
#include <stdio.h>
#include <windows.h>
using namespace std;
int i,j;
int M,N;
int n,m;//Размерность задачи
float *a;  //адрес массива запасов поставщиков
float *b;  //адрес массива потребностей потребителей
float **C; //адрес массива(двумерного) стоимости перевозки
float **X;//адрес массива(двумерного) плана доставки
 
 
 
int main()
{
    SetConsoleCP(1251);
SetConsoleOutputCP(1251);
    N=n;
    M=m;
    cout<<"Введите колличество поставщиков:  ";// Вводим колличество поствщиков
    cin>>N;
        cout<<"\n";
    cout<<"Введите колличество потребителей: ";// Вводим колличество потребителей
    cin>>M;
    cout<<"\n";
    a = new float[20];//+3
    // Вводим запасы поставщиков 
 
 
    for(i=0;i<N;i++)
    {
        cout<<"Введите запасы "<<i+1<< " поставщика: ";
        cin>>a[i];
    }
        cout<<"\n";
 
    // Вводим запасы потребителей
    b=new float[20];//+3
 
    for(j=0;j<M;j++)
    {
        cout<<"Введите потребность "<<j+1<< " потребителя: ";
        cin>>b[j];
    }
        cout<<"\n";
float** C=new float*[20];//+3
    for (i=0;i<20 ;i++)//+3
    C[i]=new float[20];//+3
 
    // Вводим массив стоимости.
    
         for(i=0;i<N;i++)
         
          for(j=0;j<M;j++)
          {
              cout<<"Введите стоимость перевозки от "<<i+1<<" поставщика к "<<j+1<<"  потребителю:  ";
              cin>>C[i][j];
          }
    
 
float Sa=0;
float Sb=0;
for(int i=0;i<N;i++)//находим суммарные запасы
{
    Sa=Sa+a[i];
}
 
for( j=0;j<M;j++)//находим суммарную потребность
{
    Sb=Sb+b[j];
}
if(Sa==Sb)cout<<"Транспортная задача - закрытая.";
     else
     {
       cout<<"Транспортная задача - открытая. \n";
 
        if(Sa>Sb)
         {
           cout<<"Преобразуем задачу в закрытую путём добавления фиктивного потребителя ";
 
             M++; 
             for( i=0;i<=N;i++)
                C[M][i]=0;//стоимость перевозки фиктивному потребителю равна нулю
             b[M+1]=Sa-Sb;//спрос фиктивного потребителя
           }
        else
         {
           cout<<"Преобразуем задачу в закрытую путём добавления фиктивного поставщика ";
             N++; 
           
             for(int j=0;j<=M;j++)
                   C[i][N]=0;//стоимость перевозки от фиктивного поставщика равна нулю
                   a[N+1]=Sb-Sa;//запас фиктивного поставщика
          }
       }
 
//***************************************************//
 
    //Двумерный массив для Доставки:
     float** X=new float*[20];//выделяем память под массив адресов начала строк
        for(int i=0;i<20;i++)
           X[i]=new float[20];//выделяем память для каждой строки
       /*
        В последней строке(столбце) массива Х будем записывать
        сумму заполненных клеток в соответствующем столбце(строке)
       */
        for(int i=0;i<N;i++)
        {    
            for(int j=0;j<M;j++)
         {
             X[i][j]=-1;//вначале все клетки не заполнены
             if(i==N)X[i][j]=0;//сумма заполненных клеток в j-м столбце
             if(j==M)X[i][j]=0;//сумма заполненных клеток в i-й строке
         }
        }
//***************************************************//
 
//-----------------Метод минимального элемента:
        int im;
        int jm;
        int kk=0;
        float Sij=0;
        do
        {
           int Cmin=-1;
           for(int i=0;i<N;i++)
             for(int j=0;j<M;j++)
               if(X[N][j]!=b[j])//если не исчерпана Потребность Bj
                 if(X[i][M]!=a[i])//если не исчерпан Запас Аі
                    if(X[i][j]<0)//если клетка ещё не заполнена
                      {
                        if(Cmin==-1)//если это первая подходящая ячейка
                           {
                            Cmin=C[i][j];
                            im=i;
                            jm=j;
                           }
                        else //если это не первая подходящая ячейка
                          if(C[i][j]<Cmin)//если в ячейке меньше,чем уже найдено
                            {
                              Cmin=C[i][j];
                              im=i;
                              jm=j;
                             }
                        }
                
               X[im][jm]=min(a[im]-X[im][M],b[jm]-X[N][jm]);//выбираем поставку
               X[N][jm]=X[N][jm]+X[im][jm];//добавляем поставку jm-му потребителю
               X[im][M]=X[im][M]+X[im][jm];//добавляем поставку im-му поставщику
               Sij=Sij+X[im][jm]; //Подсчёт суммы добавленых поставок
               
              
        } while(Sij<max(Sa,Sb));//условие продолжения
 
        int L=0;
        for(int i=0;i<N;i++)
          for(int j=0;j<M;j++)
            if(X[i][j]>=0)L++;//подсчёт заполненных ячеек
        int d=M+N-1-L;//если d>0,то задача - вырожденная,придётся добавлять d нулевых поставок
        int d1=d;//запоминаем значение d
            cout<<"\n";
        cout<<" Начальный опорный план: \n";
            cout<<"\n";
         for(int i=0;i<N;i++)
         {
          for(int j=0;j<M;j++)
          { 
              if (X[i][j]==-1)
                  X[i][j]=0;
 
              cout<<X[i][j]<<" \t ";
          }
 
 
 
 
            cout<<"\n";
        }
         int Sum=0;
 for(int i=0;i<N;i++)
         {
          for(int j=0;j<M;j++)
          {   
              Sum+=X[i][j]*C[i][j];
          }
 }
    cout<<"\n";
    cout<<"Сумма перевозок равно:   "<<Sum;
    cout<<"\n";
 
        // return 0;
system("pause");
}
Подскажите в чем проблема.
Векторы думал использовать, но хочется оформить через массивы.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.01.2014, 15:20
Ответы с готовыми решениями:

Динамический массив при наследовании, элементами которого являются объекты класса наследника динамический массив
Попробовал создать динамический массив, у которого элементы - объекты класса динамический массив, причем использовал класс-наследник от...

Динамический массив ,элементами которого являются объекты класса динамический массив
Доброго времени суток, захотел создать динамический массив ,элементами которого являются объекты класса динамический массив, если...

Создать динамический класс Book, содержащей динамический массив Authors
всем привет. может кто-то набросать код для такой вот задачи: Создать динамический класс Book, содержащей динамический массив...

11
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
02.01.2014, 16:23
Скорее всего проблема с выделением памяти.Вы объявили размеры M,N,а память выделяете под фиксированный размер [20]
C++
1
2
  a = new float[20];//+3
    // Вводим запасы поставщиков
и
C++
1
2
3
float** C=new float*[20];//+3
    for (i=0;i<20 ;i++)//+3
    C[i]=new float[20];//+3
попробуйте
C++
1
2
3
float** C=new float*[N];//+3
    for (i=0;i<20 ;i++)//+3
    C[i]=new float[M];//+3
и
C++
1
2
  a = new float[N];//+3
    // Вводим запасы поставщиков
1
5 / 6 / 2
Регистрация: 26.10.2012
Сообщений: 126
02.01.2014, 17:50  [ТС]
С 20 это уже мои "экспиременты".
Я выделил памяти под размер, который будет на 100% больше чем то , который введен. А М и Н сделал как простые ограничения, и уже после к М или Н прибавлял 1 и просто смещал границу.
0
Заблокирован
02.01.2014, 19:24
Цитата Сообщение от Lotus34 Посмотреть сообщение
Имеется код, решающий транспортную задачу.
решение методом минимального элемента ? Он же не оптимальный.

Добавлено через 36 минут
А, ну по поводу проблемы, то вы запутались в индексациях.
C++
1
2
3
M++; 
 for( i=0;i<=N;i++)
 C[M][i]=0;//стоимость перевозки фиктивному потребителю равна нулю
откуда вы берете <=?
далее, M-столбцы, а вы меняете по строкам.
Дальше, вы изменили М++, а обращаетесь потом к M (а надо M-1)

C++
1
2
3
N++; 
for(int j=0;j<=M;j++)
 C[i][N]=0;
Тут у вас цикл по J, а меняете по I.
Остальные ошибки те же, что в том случае.
В итоге:
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
if(Sa==Sb)cout<<"Транспортная задача - закрытая.";
     else
     {
       cout<<"Транспортная задача - открытая. \n";
 
        if(Sa>Sb)
         {
           cout<<"Преобразуем задачу в закрытую путём добавления фиктивного потребителя ";
 
             M++; 
             for( i=0;i<N;i++)
                C[i][M-1]=0;//стоимость перевозки фиктивному потребителю равна нулю
             b[M+1]=Sa-Sb;//спрос фиктивного потребителя
           }
        else
         {
           cout<<"Преобразуем задачу в закрытую путём добавления фиктивного поставщика ";
             N++; 
           
             for(int j=0;j<M;j++)
                   C[N-1][j]=0;//стоимость перевозки от фиктивного поставщика равна нулю
                   a[N+1]=Sb-Sa;//запас фиктивного поставщика
          }
       }
        cout<<endl;
         for(i=0;i<N;i++){
          for(j=0;j<M;j++)
          {
              cout<<C[i][j]<<" ";
          }
          cout<<endl;
         }
И от глобальных переменных в такой реализации лучше избавиться.
1
5 / 6 / 2
Регистрация: 26.10.2012
Сообщений: 126
02.01.2014, 20:01  [ТС]
Данный метод использую так как, задание было с нахождение опорного плана именно методом минимального элемента.
А поп поводу ошибок, спасибо, буду думать, исправлять.

Дальше, планирую через потенциалы привести к оптимальному, но это уже другая история)
0
Заблокирован
02.01.2014, 22:19
Цитата Сообщение от Lotus34 Посмотреть сообщение
Дальше, планирую через потенциалы привести к оптимальному, но это уже другая история)
Я когда то программировал этот метод, с зацикливанием пришлось повозиться
0
5 / 6 / 2
Регистрация: 26.10.2012
Сообщений: 126
03.01.2014, 12:09  [ТС]
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Я когда то программировал этот метод, с зацикливанием пришлось повозиться
Я готов к таким трудностям, буду стараться, для себя все же, а не для какого либо препода)
0
5 / 6 / 2
Регистрация: 26.10.2012
Сообщений: 126
04.01.2014, 12:58  [ТС]
Ну вот, поправил код, а теперь при закрытой задаче он добавляет нормально строку, но не идет дальше и не считает(
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
#include <iostream>
#include <stdio.h>
#include <windows.h>
using namespace std;
int i,j;
int M,N;
int n,m;//Размерность задачи
float *a;  //адрес массива запасов поставщиков
float *b;  //адрес массива потребностей потребителей
float **C; //адрес массива(двумерного) стоимости перевозки
float **X;//адрес массива(двумерного) плана доставки
 
//void zapolnenie()
//{
//}
 
 
 
int main()
{
    SetConsoleCP(1251);
SetConsoleOutputCP(1251);
    N=n;
    M=m;
    cout<<"Введите колличество поставщиков:  ";// Вводим колличество поствщиков
    cin>>N;
        cout<<"\n";
    cout<<"Введите колличество потребителей: ";// Вводим колличество потребителей
    cin>>M;
    cout<<"\n";
    a = new float[N+3];//+3
    // Вводим запасы поставщиков 
 
 
    for(i=0;i<N;i++)
    {
        cout<<"Введите запасы "<<i+1<< " поставщика: ";
        cin>>a[i];
    }
        cout<<"\n";
 
    // Вводим запасы потребителей
    b=new float[M+3];//+3
 
    for(j=0;j<M;j++)
    {
        cout<<"Введите потребность "<<j+1<< " потребителя: ";
        cin>>b[j];
    }
        cout<<"\n";
float** C=new float*[N+3];
for (i=0;i<N+3; i++)
C[i]=new float[M+3];//+3
 
    // Вводим массив стоимости.
    
         for(i=0;i<N;i++)
         
          for(j=0;j<M;j++)
          {
              cout<<"Введите стоимость перевозки от "<<i+1<<" поставщика к "<<j+1<<"  потребителю:  ";
              cin>>C[i][j];
          }
 //Двумерный массив для Доставки:
        X=new float*[N+1+2];//выделяем память под массив адресов начала строк
        for(int i=0;i<N+1+2;i++)
           X[i]=new float[M+1+2];//выделяем память для каждой строки
       /*
        В последней строке(столбце) массива Х будем записывать
        сумму заполненных клеток в соответствующем столбце(строке)
       */
        for(int i=0;i<N+1;i++)
          for(int j=0;j<M+1;j++)
            {
               X[i][j]=-1;//вначале все клетки не заполнены
               if(i==N)X[i][j]=0;//сумма заполненных клеток в j-м столбце
               if(j==M)X[i][j]=0;//сумма заполненных клеток в i-й строке
            }
 
//  zapolnenie();
float Sa=0;
float Sb=0;
for(int i=0;i<N;i++)//находим суммарные запасы
{
    Sa=Sa+a[i];
}
 
for( j=0;j<M;j++)//находим суммарную потребность
{
    Sb=Sb+b[j];
}
 
 
if(Sa==Sb)cout<<"Транспортная задача - закрытая.";
     else
     {
       cout<<"Транспортная задача - открытая. \n";
 
        if(Sa>Sb)
         {
           cout<<"Преобразуем задачу в закрытую путём добавления фиктивного потребителя ";
 
             M++; 
             for( i=0;i<N;i++)
                C[i][M-1]=0;//стоимость перевозки фиктивному потребителю равна нулю
             b[M+1]=Sa-Sb;//спрос фиктивного потребителя
           }
        else
         {
           cout<<"Преобразуем задачу в закрытую путём добавления фиктивного поставщика ";
             N++; 
           
             for(int j=0;j<M;j++)
                   C[N-1][j]=0;//стоимость перевозки от фиктивного поставщика равна нулю
                   a[N+1]=Sb-Sa;//запас фиктивного поставщика
          }
       }
        cout<<endl;
         for(i=0;i<N;i++){
          for(j=0;j<M;j++)
          {
              cout<<C[i][j]<<" ";
          }
          cout<<endl;
         }
//-----------------Метод минимального элемента:
        int im;
        int jm;
        int kk=0;
        float Sij=0;
        do
        {
           int Cmin=-1;
           for(int i=0;i<N;i++)
             for(int j=0;j<M;j++)
               if(X[N][j]!=b[j])//если не исчерпана Потребность Bj
                 if(X[i][M]!=a[i])//если не исчерпан Запас Аі
                    if(X[i][j]<0)//если клетка ещё не заполнена
                      {
                        if(Cmin==-1)//если это первая подходящая ячейка
                           {
                            Cmin=C[i][j];
                            im=i;
                            jm=j;
                           }
                        else //если это не первая подходящая ячейка
                          if(C[i][j]<Cmin)//если в ячейке меньше,чем уже найдено
                            {
                              Cmin=C[i][j];
                              im=i;
                              jm=j;
                             }
                        }
                
               X[im][jm]=min(a[im]-X[im][M],b[jm]-X[N][jm]);//выбираем поставку
               X[N][jm]=X[N][jm]+X[im][jm];//добавляем поставку jm-му потребителю
               X[im][M]=X[im][M]+X[im][jm];//добавляем поставку im-му поставщику
               Sij=Sij+X[im][jm]; //Подсчёт суммы добавленых поставок
               
              
        } while(Sij<max(Sa,Sb));//условие продолжения
 
        int L=0;
        for(int i=0;i<N;i++)
          for(int j=0;j<M;j++)
            if(X[i][j]>=0)L++;//подсчёт заполненных ячеек
        int d=M+N-1-L;//если d>0,то задача - вырожденная,придётся добавлять d нулевых поставок
        int d1=d;//запоминаем значение d
            cout<<"\n";
        cout<<" Начальный опорный план: \n";
            cout<<"\n";
         for(int i=0;i<N;i++)
         {
          for(int j=0;j<M;j++)
          { 
              if (X[i][j]==-1)
                  X[i][j]=0;
 
              cout<<X[i][j]<<" \t ";
          }
 
 
 
 
            cout<<"\n";
        }
         int Sum=0;
 for(int i=0;i<N;i++)
         {
          for(int j=0;j<M;j++)
          {   
              Sum+=X[i][j]*C[i][j];
          }
 }
    cout<<"\n";
 cout<<"Сумма перевозок равно:   "<<Sum;
cout<<"\n";
 
//       return 0;
system("pause");
}
Добавлено через 7 минут
Насколько я понимаю, проблема с массивом X и я видимо снова накосячил с индексацией.
0
Заблокирован
04.01.2014, 14:50
Цитата Сообщение от Lotus34 Посмотреть сообщение
Насколько я понимаю, проблема с массивом X и я видимо снова накосячил с индексацией.
Не думаю, что тут ошибка в индексации.
Вы для поставок создаете отдельный массив X?
Мне не нравиться ваш выход из цикла. И не совсем ясна вот эта строчка:
C++
1
X[im][jm]=min(a[im]-X[im][M],b[jm]-X[N][jm]);
Вы должны не просто присвоить меньшее из значений, а "обнулить" его.
C++
1
2
3
X[N][jm]=X[N][jm]+X[im][jm];//добавляем поставку jm-му потребителю
X[im][M]=X[im][M]+X[im][jm];//добавляем поставку im-му поставщику
 Sij=Sij+X[im][jm]; //Подсчёт суммы добавленых поставок
Что вы хотите тут сделать?
0
5 / 6 / 2
Регистрация: 26.10.2012
Сообщений: 126
04.01.2014, 15:21  [ТС]
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Что вы хотите тут сделать?
Ну, если честно, то данный фрагмент не моих рук дело. Данное задание было "парным", но второй член команды решился взять реализацию на с++ на себя, т.к я не очень в си и хотел реализовать через маткад.
Но его идея прогорела и мне достался на треть рабочий код, который только считал закрытые задачи 2 на 2.
Все начало кода , все моменты с внесением данных я поправил и код начал считать закрытые задачи любого размера.
Потом, с вашей помощью, код начал подводить задачи с открытого типа к закрытому, но дальше не считает.
Мне , если честно, самому жуть как не нравиться , но когда я начал пытаться сделать с нуля, то запутался вконец и перестало работать абсолютно все, ну я и решил помучатся с более или менее рабочим куском кода от моего товарища.
0
Заблокирован
04.01.2014, 16:02
Цитата Сообщение от Lotus34 Посмотреть сообщение
Мне , если честно, самому жуть как не нравиться , но когда я начал пытаться сделать с нуля, то запутался вконец и перестало работать абсолютно все, ну я и решил помучатся с более или менее рабочим куском кода от моего товарища.
Советую написать заново, алгоритм метода довольно простой.
Но можно попробывать переделать этот. Так что пробуем переделать?

Цитата Сообщение от Lotus34 Посмотреть сообщение
Но его идея прогорела и мне достался на треть рабочий код, который только считал закрытые задачи 2 на 2.
Все начало кода , все моменты с внесением данных я поправил и код начал считать закрытые задачи любого размера.
странно, если он был рабочий, то привидением к закрытой задачи его "не испортишь".

Добавлено через 13 минут
Вот так правильнее будет заполнять опорный план:
C++
1
2
3
4
5
6
7
8
9
10
11
12
 if(a[im]>=b[jm]){
 
                   a[im]-=b[jm];
                   X[im][jm]=b[jm];
                   b[jm]=0;
               }
               else if(a[im]<b[jm]){
 
                   b[jm]-=a[im];
                   X[im][jm]=a[im];
                   a[im]=0;
               }
(если я правильно понял назначение X)

теперь останется только повозиться с условиями выбора максимума и выхода из цикла.

И какая разница первая ячейка или нет?

Добавлено через 8 минут
Условия, наверное, можно как-то так совместить:
C++
1
2
3
4
5
6
         if(X[N][j]!=0 && X[i][M]!=0 && X[i][j]==-1 && C[i][j]<Cmin)
                            {
                              Cmin=C[i][j];
                              im=i;
                              jm=j;
                             }
Добавлено через 9 минут
нет, условия будут немного не такие. Вы же храните поставки в разных массивах:
C++
1
if(b[j]!=0 && a[i]!=0 && X[i][j]==-1 && C[i][j]<Cmin)
1
Почетный модератор
12274 / 5340 / 268
Регистрация: 05.04.2011
Сообщений: 14,086
Записей в блоге: 2
04.01.2014, 19:03
Lotus34, не нужно цитировать все предыдущие сообщения собеседника, тем более полностью. Пользуйтесь кнопкой "Ответить" внизу темы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.01.2014, 19:03
Помогаю со студенческими работами здесь

Создать динамический класс Book, содержащий динамический массив Authors
Мне нужно написать программу,а я не знаю как ее написать. Знаю, тут люди за кого-то не делают, укажите хотя бы направление. вот сама...

Скопировать динамический массив в другой массив только с положительными элементами из первого
Пользователь вводит размер массива и сам массив. Программа копирует в другой массив только положительные элементы из первого. Оба массива...

Можно ли в классе создавать массив переменной длинны. Например динамический массив?
Динамические массивы привлекают больше. :)

Написать функцию принимающую массив и возвращающую указатель на динамический массив
Написать функцию принимающую массив и возвращающую указатель на динамический массив содержащий первые n нaибольших чисел. Как сделать...

Заполнить динамический массив из файла и записать массив обратно в файл
Подскажите пожалуйста функцию которая будет заполнять Динамический массив из файла и обратную которая этот массив запишет в файл=)


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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