Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » считывание и сортировка из текстового файла

Страниц (1): [1]
 

1. Inject - 16 Сентября, 2022 - 13:49:48 - перейти к сообщению
Добрый день, есть текстовый файл такого плана [img](для просмотра ссылки Вам необходимо авторизоваться) /img]
необходимо рассортировать каждый набор чисел заключённый в двоеточие ,каждой строки в отдельные переменные
может у кого есть уже готовый скрипт с похожим функционалом
2. Zireael - 16 Сентября, 2022 - 17:46:12 - перейти к сообщению
Числа всегда одинаковой длины? Так может быть или не может:?
 Цитата:
:5352:65:267:
:535:651:2:
:53500:1:2655:

(Добавление)
Для приведенного примера так будет правильно?:
 Цитата:
:5350:65:265:
:5352:65:267:
:5851:64:288:

Т. е. сначала сортировать по первому числу, если совпадает, то по второму, если тоже совпадает, то по третьему. Так?
3. Inject - 16 Сентября, 2022 - 22:56:15 - перейти к сообщению
 Zireael пишет:
Числа всегда одинаковой длины? Так может быть или не может:?
 Цитата:
:5352:65:267:
:535:651:2:
:53500:1:2655:

(Добавление)
Для приведенного примера так будет правильно?:
 Цитата:
:5350:65:265:
:5352:65:267:
:5851:64:288:

Т. е. сначала сортировать по первому числу, если совпадает, то по второму, если тоже совпадает, то по третьему. Так?



Меняется длинна только 3 числа с двухзначного до трёхзначного
да всё верно
4. Zireael - 17 Сентября, 2022 - 05:03:07 - перейти к сообщению
CODE:
string PathToFile = "C:\test.txt"; // путь к файлу

string array[99999];
int result[99999][3];
string tmp[3];

if(fopen(PathToFile, "r")) // открыть файл
{
int count = freadlineall(#array[0], 99999); // прочитать по строкам
fclose(); // закрыть файл
messagebox("Всего строк прочитано: "+format(count));

if(count>0)
{
// записать числа в двухмерный массив
for(int i=0; i<count; i++)
{
if(regexsearch(3, #tmp[0], array[i], "\d+")==3)
{
result[i][0] = formatsn(tmp[0]);
result[i][1] = formatsn(tmp[1]);
result[i][2] = formatsn(tmp[2]);
}
else messagebox("В строке нет трёх чисел");
}

sort_array(#result[0][0], count, sizearray(result[])); // сортировка


///////// вывод массива в textout (можно убрать)
int textoutY=100;
textbkcolor(16777215, 255);
for (int n=0; n<count; n++)
{
textout(n, 500, textoutY, format(result[n][0])+" "+format(result[n][1])+" "+format(result[n][2]), 1);
textoutY=textoutY+20;
}
/////////////

messagebox(format(result[0][0])+" "+format(result[0][1])+" "+format(result[0][2]));
messagebox(format(result[1][0])+" "+format(result[1][1])+" "+format(result[1][2]));
messagebox(format(result[2][0])+" "+format(result[2][1])+" "+format(result[2][2]));
}
}
else messagebox("Файл не открылся");


function sort_array(int #m, int row, int column)
{
int min, imin, z;
for(int i=0; i<row-1; i++)
{
min=m[i][0]; imin=i;
for(int j=i+1; j<row; j++)
{
if(m[j][0] < min){min=m[j][0];imin=j;}
else
{
if(m[j][0] == min)
{
for(int k=1; k<column; k++){if(m[j][k] != m[imin][k])break;}
if(m[j][k] < m[imin][k]){min=m[j][0];imin=j;}
}
}
}
for(int l=0; l<column; l++){z=m[i][l]; m[i][l]=m[imin][l]; m[imin][l]=z;}
}
}
5. Inject - 17 Сентября, 2022 - 13:57:53 - перейти к сообщению
 Zireael пишет:
CODE:
string PathToFile = "C:\test.txt"; // путь к файлу

string array[99999];
int result[99999][3];
string tmp[3];

if(fopen(PathToFile, "r")) // открыть файл
{
int count = freadlineall(#array[0], 99999); // прочитать по строкам
fclose(); // закрыть файл
messagebox("Всего строк прочитано: "+format(count));

if(count>0)
{
// записать числа в двухмерный массив
for(int i=0; i<count; i++)
{
if(regexsearch(3, #tmp[0], array[i], "\d+")==3)
{
result[i][0] = formatsn(tmp[0]);
result[i][1] = formatsn(tmp[1]);
result[i][2] = formatsn(tmp[2]);
}
else messagebox("В строке нет трёх чисел");
}

sort_array(#result[0][0], count, sizearray(result[])); // сортировка


///////// вывод массива в textout (можно убрать)
int textoutY=100;
textbkcolor(16777215, 255);
for (int n=0; n<count; n++)
{
textout(n, 500, textoutY, format(result[n][0])+" "+format(result[n][1])+" "+format(result[n][2]), 1);
textoutY=textoutY+20;
}
/////////////

messagebox(format(result[0][0])+" "+format(result[0][1])+" "+format(result[0][2]));
messagebox(format(result[1][0])+" "+format(result[1][1])+" "+format(result[1][2]));
messagebox(format(result[2][0])+" "+format(result[2][1])+" "+format(result[2][2]));
}
}
else messagebox("Файл не открылся");


function sort_array(int #m, int row, int column)
{
int min, imin, z;
for(int i=0; i<row-1; i++)
{
min=m[i][0]; imin=i;
for(int j=i+1; j<row; j++)
{
if(m[j][0] < min){min=m[j][0];imin=j;}
else
{
if(m[j][0] == min)
{
for(int k=1; k<column; k++){if(m[j][k] != m[imin][k])break;}
if(m[j][k] < m[imin][k]){min=m[j][0];imin=j;}
}
}
}
for(int l=0; l<column; l++){z=m[i][l]; m[i][l]=m[imin][l]; m[imin][l]=z;}
}
}




Спасибо большое!

Powered by ExBB FM 1.0 Final