GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.1 (1)   Поиск:  
 Автор Тема: парсер *.csv и управление миром
гость
109.70.100.*
парсер *.csv и управление миром
Добавлено: 03 окт 19 11:16
тот кто в состоянии написать парсер *.csv на С++ - может завладеть миром, как Владимир Владимирович и Дональд Трамп

дьявол в деталях
[Ответ][Цитата]
гость
188.170.193.*
На: парсер *.csv и управление миром
Добавлено: 03 окт 19 12:09
Цитата:
Автор: гость

тот кто в состоянии написать парсер *.csv на С++ - может завладеть миром, как Владимир Владимирович и Дональд Трамп

дьявол в деталях

Я уже давно написал этот дебильный парсер, но я не могу завладеть миром. Да, С++ дает мне возможность внести в мир значительные необратимые изменения, но я не хочу этого.

Путин не владеет ни РФ, ни тем более миром, вы ошиблись. Это ноль без палочки, просто человек на должности, который соблюдает интересы экономических группировок, поделивших РФ. Если вдруг Путин изменится и начнет реально (а не на словах) наводить порядок в стране (например, в той же лесной промышленности устранить воровство леса в Китай) - его очень быстро уберут (будет выглядеть как самостоятельный уход) и на досрочных выборах выберут Путина №2. Реальная власть в РФ - это воры.
[Ответ][Цитата]
гость
109.70.100.*
На: парсер *.csv и управление миром
Добавлено: 04 окт 19 5:49
Цитата:
Автор: гость
Я уже давно написал этот дебильный парсер
где код?
Цитата:
Автор: гость
Да, С++ дает мне возможность внести в мир значительные необратимые изменения
доказательства
[Ответ][Цитата]
гость
162.247.73.*
На: парсер *.csv и управление миром
Добавлено: 04 окт 19 12:00
Цитата:
Автор: гость

тот кто в состоянии написать парсер *.csv на С++ - может завладеть миром, как Владимир Владимирович и Дональд Трамп

дьявол в деталях
Владеет миром - написавщий многослойный персптрон на С++
[Ответ][Цитата]
гость
188.170.193.*
На: парсер *.csv и управление миром
Добавлено: 04 окт 19 12:16
Цитата:
Автор: гость
где код?

А зачем он вам? Ну вот, есть простейший, довольны? Это для фиксированного числа строк и столбцов, но мог бы написать и не для фиксированного.
//C++ Builder, на форме список и кнопка.


void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
float duration; clock_t start, finish; //переменные для замера времени
AnsiString path = "D:\\dataset.csv"; //путь файла .csv
int flen=0;// длина файла
int i=0; //счетчик цикла
int a=100001; //количество строк в таблице
int b=52; //количество столбцов в таблице
int max = 20; //максимальное количество символов в ячейке
int m=0; //счетчик символов во вспомогательном массиве
int s=0; //счетчик записей
int f =0; //счетчик строк

//вспомогательный массив для считывания в него 1 записи
char *vsp = new char [max]; for (i = 0; i < max; i++) { vsp = 100;}

start = clock();
// двумерный массив для считывания в него информации
AnsiString **mass = new AnsiString* [a]; for (i = 0; i < a; i++) { mass[i] = new AnsiString[b]; }

//=========считывание файла в массив======
FILE *F;
F = fopen(path.c_str(),"r");
flen = filelength(fileno(F));
char *String = new char [flen];
fread ( &String[0], 1, flen, F);
fclose(F);
//=================================================


//======считывание символов из массива символов в массив AnsiString=====
for(i=0; i < flen; i++)
{
vsp[m]=String[i];
if (String[i]==44) { vsp[m]=0; m=-1; mass[f][s] = AnsiString(vsp); i1++; s++;}

if (String[i]==10)
{
vsp[m]=0; mass[f][s] = AnsiString(vsp); s=0; m=-1; f++; i1++;
}
m++;
}
// удаление мусора
delete [] String; delete [] vsp; for (i = 0; i < a; i++) delete[]mass[i]; delete[]mass;

finish = clock();
duration = (float)(finish - start) / CLOCKS_PER_SEC;

//вывод информации в список
ListBox1->Items->Add("размер файла " + IntToStr(flen));
ListBox1->Items->Add("время выполнения программы " + FloatToStr(duration));
}


Цитата:
[i]Автор: гость
доказательства

Доказать можно единственным способом - внести эти изменения, а потом все будут расхлебывать (и я тоже), мне это не нужно.
[Ответ][Цитата]
гость
185.220.101.*
На: парсер *.csv и управление миром
Добавлено: 05 окт 19 7:12
Изменено: 05 окт 19 18:02, автор изменений: admin
vector<vector<double>> csvParse(string path, char token)
{
ifstream read(path);
vector<string> lines;
string line;
while (getline(read, line)) lines.push_back(line);
vector<vector<double>> result;
for (int i = 0; i < lines.size(); ++i)
{
stringstream test(lines[i]);
vector<double> seglist;
string segment;
while (getline(test, segment, token))
{
double val = 0;
val = stod(segment);
seglist.push_back(val);
}
result.push_back(seglist);
}
return result;
}
[Ответ][Цитата]
cortl
Сообщений: 154
На: парсер *.csv и управление миром
Добавлено: 06 окт 19 20:59
Изменено: 06 окт 19 23:21
2 гость 185.220.101.*

>> vector<string> lines;
>> string line;
>> while (getline(read, line)) lines.push_back(line);
Зачем создавать копию данных из файла в памяти если вы не планируете её использовать в дальнейшем? Работайте с файлом.

С list-ом было бы быстрее.

В ячейках csv необязательно хранятся double, в общем случае (w)string.
А если не брать во внимание языки, не укладывающиеся в ascii, можно c char* побаловаться.

>> double val = 0; << и другие
Многократное выделение и освобождение памяти в цикле. Фрагментация.

>> = 0 << в той же строке лишний тормоз.
[Ответ][Цитата]
TimKruz
Сообщений: 291
На: парсер *.csv и управление миром
Добавлено: 08 окт 19 9:28
Цитата:
Автор: гость

написать парсер *.csv на С++


А таки почему на C++? Почему не C, без объектов?
Почему вообще речь о каком-то мейнстриме, когда труЪ пишут всё на Ассемблере?
[Ответ][Цитата]
гость
109.70.100.*
На: парсер *.csv и управление миром
Добавлено: 08 окт 19 9:42
Цитата:
Автор: TimKruz
А таки почему на C++? Почему не C, без объектов?
Почему вообще речь о каком-то мейнстриме, когда труЪ пишут всё на Ассемблере?
Согласен, Си это тру, Ассемблер это слишком тру, труЪ как Вы сказали, всему нужна мера. На самом деле чистый Си это идеал, всё остальное с душком политического гавнеца, какаято демагогия в контексте ЯП.
[Ответ][Цитата]
TimKruz
Сообщений: 291
На: парсер *.csv и управление миром
Добавлено: 08 окт 19 11:07
Изменено: 08 окт 19 11:18
гость 109.70.100.*, не вижу причин считать Си идеалом... Защиты от ошибок нет, но и возможностей расширения языковых средств тоже нет, текст в большинстве случаев нечитабелен для людей, используется много спец-символов и т.д.

Преимущество Си только в том, что у него есть компиляторы под любую платформу и библиотеки готового кода для решения чуть менее, чем любой задачи. У других ЯП компилятор как правило существует для ограниченного круга платформ, а база готового кода не настолько обширна, соответственно многое приходится делать вручную, а программисты по своей сути лентяи (любая прикладная программа решает единственную реальную проблему - "мне лень делать это вручную").

Из личного интереса набросал простенький парсер CSV на FreePascal:
program CSVParser;
uses
Classes;
var
CSVData: TStringList;
Buffer, Element: String;
StartFrom, I: Integer;
begin
CSVData := TStringList.Create;
repeat
ReadLn(Buffer);
StartFrom := 1;
for I := 1 to Length(Buffer) do
if Buffer[I] = ',' then
begin
Element := Copy(Buffer, StartFrom, I - StartFrom);
if Length(Element) > 0 then
CSVData.Add(Element);
StartFrom := I + 1;
end;
until EoF(Input);

WriteLn('Всего элементов: ', CSVData.Count);
for Element in CSVData do
WriteLn(Element + ';');
CSVData.Free;
end.

(как работает см. на ideone по ссылке выше)
[Ответ][Цитата]
гость
141.255.162.*
На: парсер *.csv и управление миром
Добавлено: 13 окт 19 7:39
Цитата:
Автор: TimKruz

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

Преимущество Си только в том, что у него есть компиляторы под любую платформу и библиотеки готового кода для решения чуть менее, чем любой задачи. У других ЯП компилятор как правило существует для ограниченного круга платформ, а база готового кода не настолько обширна, соответственно многое приходится делать вручную, а программисты по своей сути лентяи (любая прикладная программа решает единственную реальную проблему - "мне лень делать это вручную").

Из личного интереса набросал простенький парсер CSV на FreePascal:
program CSVParser;
uses
Classes;
var
CSVData: TStringList;
Buffer, Element: String;
StartFrom, I: Integer;
begin
CSVData := TStringList.Create;
repeat
ReadLn(Buffer);
StartFrom := 1;
for I := 1 to Length(Buffer) do
if Buffer[I] = ',' then
begin
Element := Copy(Buffer, StartFrom, I - StartFrom);
if Length(Element) > 0 then
CSVData.Add(Element);
StartFrom := I + 1;
end;
until EoF(Input);

WriteLn('Всего элементов: ', CSVData.Count);
for Element in CSVData do
WriteLn(Element + ';');
CSVData.Free;
end.

(как работает см. на ideone по ссылке выше)
паскаль всётаки уже не то
[Ответ][Цитата]
 Стр.1 (1)