Добрый день. Нужна консультация.
есть массив значений
int mass[200][300];
обработка его пошаговая обработка через циклы занимает очень много времени, а именно:
1. обнулить
2. сохранить в файл
3. считать из файла.
есть возможность делать эти действия не через цикл?
1. forzub - 29 Июня, 2014 - 07:44:28 - перейти к сообщению
2. Kibor - 29 Июня, 2014 - 08:26:27 - перейти к сообщению
Не. Обнулять через цикл...
Записывать... можно в бинарном режиме, но только если число int от 0 до 255
Его надо переводить в char и записывать и считывать в нем.
Работа в бинарном режиме
Записывать... можно в бинарном режиме, но только если число int от 0 до 255
Его надо переводить в char и записывать и считывать в нем.
Работа в бинарном режиме
CODE:
int mass[200][300];
char massC[60000];
int u=0;
int g=0;
for (int a=0; a<200; a++)
{
for (int a1=0; a1<300; a1++)
{
mass[a][a1]=g;
massC[u]=formatic(mass[a][a1]);
g++; u++;
if (g==256)g=0;
}
}
fopen ("C:\calc.txt", "wb");
fwriteb(#massC[0], 60000);
fclose();
char massC1[60000];
fopen ("C:\calc.txt", "rb");
freadb(#massC1[0], 60000);
fclose();
int mass1[200][300];
u=0;
for (a=0; a<200; a++)
{
for (a1=0; a1<300; a1++)
{
mass1[a][a1]=formatci(massC1[u]);
messagebox (mass1[a][a1]);
u++;
}
}
char massC[60000];
int u=0;
int g=0;
for (int a=0; a<200; a++)
{
for (int a1=0; a1<300; a1++)
{
mass[a][a1]=g;
massC[u]=formatic(mass[a][a1]);
g++; u++;
if (g==256)g=0;
}
}
fopen ("C:\calc.txt", "wb");
fwriteb(#massC[0], 60000);
fclose();
char massC1[60000];
fopen ("C:\calc.txt", "rb");
freadb(#massC1[0], 60000);
fclose();
int mass1[200][300];
u=0;
for (a=0; a<200; a++)
{
for (a1=0; a1<300; a1++)
{
mass1[a][a1]=formatci(massC1[u]);
messagebox (mass1[a][a1]);
u++;
}
}
3. forzub - 29 Июня, 2014 - 08:35:48 - перейти к сообщению
в данной ситуации меня вполне устроил бы массив из переменных типа 1 bit
появилась идея обнулять через функцию loadimage()
загружая изображение размером 1 пиксель, соответственно согласно описанию, все остальное забивается нулями. а потом забить и этот пиксель в нуль.
так сработает?
сколько char (байт) занимает 1 int?
есть int m[200][300]
можно ли сделать массив char aa[XX], где ХХ это size(int)*(200*300 ), а потом "наложить" его на массив m (сделать указатель на начало m[][]) и потом работать с ним как с char?
появилась идея обнулять через функцию loadimage()
загружая изображение размером 1 пиксель, соответственно согласно описанию, все остальное забивается нулями. а потом забить и этот пиксель в нуль.
так сработает?
сколько char (байт) занимает 1 int?
есть int m[200][300]
можно ли сделать массив char aa[XX], где ХХ это size(int)*(200*300 ), а потом "наложить" его на массив m (сделать указатель на начало m[][]) и потом работать с ним как с char?
4. Kibor - 29 Июня, 2014 - 08:46:31 - перейти к сообщению
forzub пишет:
появилась идея обнулять через функцию loadimage()
загружая изображение размером 1 пиксель, соответственно согласно описанию, все остальное забивается нулями. а потом забить и этот пиксель в нуль.
загружая изображение размером 1 пиксель, соответственно согласно описанию, все остальное забивается нулями. а потом забить и этот пиксель в нуль.
не 1 пик, а загружать черное изображение 200/300... это 0.
забивается -1.
в int 4 байт..
forzub пишет:
можно ли сделать массив char aa[XX], где ХХ это size(int)*(200*300 ), а потом "наложить" его на массив m (сделать указатель на начало m[][]) и потом работать с ним как с char?
нет. копировать только.
работайте сразу с char при случае если надо от 0 до 255.
5. forzub - 29 Июня, 2014 - 09:01:07 - перейти к сообщению
с черным тоже собственно тоже выход
а вообще не плохо было бы, что бы как-то так ) жаль не работает )
т.е. в итоге имеем: или быстро обнуляем, но долго читаем и пишем или быстро читаем, но медленно обнуляем...
(Добавление)
Я так подумал... наверное проще всего делать это через изображения ))) сохранять как изображения и загружать так же )))
а вообще не плохо было бы, что бы как-то так ) жаль не работает )
CODE:
int a[5];
a[0]=1;
a[0]=2;
a[0]=3;
a[0]=4;
a[0]=5;
print(#a[0]);
function print(char #b[0])
{
fopen ("D:\!bot\calc.txt", "wb");
fwriteb(#b[0], 20);
fclose();
}
int a[5];
a[0]=1;
a[0]=2;
a[0]=3;
a[0]=4;
a[0]=5;
print(#a[0]);
function print(char #b[0])
{
fopen ("D:\!bot\calc.txt", "wb");
fwriteb(#b[0], 20);
fclose();
}
т.е. в итоге имеем: или быстро обнуляем, но долго читаем и пишем или быстро читаем, но медленно обнуляем...
(Добавление)
Я так подумал... наверное проще всего делать это через изображения ))) сохранять как изображения и загружать так же )))
6. Kibor - 29 Июня, 2014 - 09:59:29 - перейти к сообщению
forzub пишет:
Я так подумал... наверное проще всего делать это через изображения ))) сохранять как изображения и загружать так же )))
легко... так как масив 2мерн...