*Решено* | Обработка массивов в С++
У меня возникла такая проблема, есть огромный массив символьного типа (считан из текстового файла, количество элементов может превышать 3млн). Массив представляет из себя вперемешку цифры и буквы (например: пр 126,45 24,5 в а), необходимо вычленнить из массива цифры и свормировать из них новый массив типа Float. Помогите плз, как сократить время на обработку, в идеале избегая рекурсий (очень долго получается), или может кто знает как считать из файла только цифры. Заранее благодарен.
|
Shad0VV
2 вопроса: 1) "пр 126,45 24,5" <- это разве char ? можно точно структуру исходного массива и при выполнении каких действий возникают тормоза 2) где тут можно рекурсии впихнуть ? вижу только 2 вложенных цикла... |
char *data; OpenDialog1->Execute() ; H=FileOpen(OpenDialog1->FileName, fmOpenRead); L=FileSeek(H,0,2); FileSeek(H,0,0); data=new char[L+1]; memset(data,0,L+1); FileRead(H,data,10); Это фрагмент кода, считывание производится в массив типа char, а 2 вложенных цикла - для определения где цифра а где нет на 64битном атлоне 3000+ выполнялись 2 минуты, потом я вырубил. Я просто не знаю как иначе считать информацию из такого файла, только через *char |
double rez,p1,p2;
char *data; int k,H,L,BR; float a; OpenDialog1->Execute() ; H=FileOpen(OpenDialog1->FileName, fmOpenRead); L=FileSeek(H,0,2); FileSeek(H,0,0); data=new char[L+1]; memset(data,0,L+1); --- FileRead(H,data,L); прошу прощения, 10ку ставил для проверки считывания сразу double |
Shad0VV
PHP код:
|
я бы по-другому сделал
Код:
// чтение файла |
поправка: while(std::cin) заменить на for(;;)
|
Благодарю за помощь. Очень признателен.
|
Время: 20:08. |
Время: 20:08.
© OSzone.net 2001-