void entoce(char *data, char *cedrof) { // Estrutura organizada com os dados struct TDDCData *trade = createlist(); // Separa os dados na estrutura splitcolumns(data, 9, trade); // Dados conhecidos: // T: = Tick de cota��o // B: = Mini book 5 melhores // N: = Negocios realizados // D: = Livro completo // Verifica qual tipo de dado � if (trade->value[0] == 'T') { // Tick de trade entick(trade, cedrof); } else if (trade->value[0] == 'N') { // Altera N para T trade->value[0] == 'T'; // Negocios realizados entrade(trade, cedrof); } // Destroi a lista destroylist(trade); }
void main() {sqlist L; int i,j,k,b,n,e,m,a,cur_e,pre_e,next_e,s; initlist(L); cout<<"初始化后的基值地址:"<<L.elem<<" L.length=:"<<L.length<<" L.listsize=:"<<L.listsize<<endl; cout<<"新建一顺序表."<<endl; cout<<"当前表是否为空表"<<listempty(L)<<endl; cout<<"定义该线性表长度:"<<endl; cin>>a; cout<<"分别输入线性表的各个元素,按ENTER"<<endl; for(k=1;k<=a;k++){ cin>>j; i=listinsert(L,k,j);} for(b=1;b<=a;b++) cout<<L.elem[b-1]<<endl; listlength(L); cout<<"当前表长:"<<L.length<<endl; cout<<"输入要取的数的位置n(n<=a)"<<endl; cin>>n; getelem(L,n,e); //cout<<L.elem[n-1]<<endl; cout<<e<<endl; cout<<"与该数相等的的一个数的位序为:"<<locateelem(L,e,compare)<<endl; cout<<"输入要取前驱的数的位置m(<=a)"<<endl; cin>>m; getelem(L,m,cur_e); if(priorelem(L,cur_e,pre_e)) cout<<"cur_e的前驱为:"<<pre_e<<endl; else cout<<"该元素没前驱"<<endl; nextelem(L,cur_e,next_e); if(nextelem(L,cur_e,next_e)) cout<<"cur_e的后继为:"<<next_e<<endl; else cout<<"该元素没后继"<<endl; cout<<"奇数在前,偶数在后,并输出"<<endl; move(L); for(s=1;s<=a;s++) cout<<L.elem[s-1]<<endl; cout<<"输入要删元素的位序m(<=a)"<<endl; cin>>m; listdelete(L,m,e); cout<<"被删的元素为:"<<e<<endl; cout<<"删除元素后表长为"<<L.length<<endl; //listtraverse(L,visit); cout<<"置为空表"<<clearlist(L)<<endl; cout<<"销毁线性表"<<destroylist(L)<<endl; }
/** * Aqui pega um arquivo, e lê até o final, simulando uma cotacao */ void test(char *_sfile) { // Descritor do arquivo de ativos FILE *fsymbols; // Abre o arquivo fsymbols = fopen(_sfile, "r"); extern char *cedrobooks; extern int addcountc; extern int addcountv; // Verifica se foi possivel abrir if (fsymbols == NULL) { } else { // Variavel para leitura da linha char *line; line = malloc(1000); // Montagem do comando char *cmd; cmd = malloc(1000 + 4); // Lê dados while ((fgets(line, 1000, fsymbols)) != NULL) { printf("Line:%s\r\n", line); // Analisa a primeira letra da mensagem. // para ver que tipo de mensagem é if (line[0] == 'T') { // Mensagens Tick ( T: ) e Negocios ( N: ) // Variavel que conterá a mensagem convertida para o formato cedro char *cedrofmt = malloc(sizeof (char) *1000); // Utiliza a funcao da biblioteca Ailib que ja faz as conversoes entoce(line, cedrofmt); // Certo, como o dado foi convertido escrevemos // a mensagem no buffer central if (cedrofmt != NULL) { writeln("/home/donda/ddc/buffer/test.tbf", cedrofmt, "a+"); } // Limpa a variavel da memoria free(cedrofmt); } else if (line[0] == 'N') { // Mensagens Tick ( T: ) e Negocios ( N: ) // Variavel que conterá a mensagem convertida para o formato cedro char *cedrofmt = malloc(sizeof (char) *1000); // Utiliza a funcao da biblioteca Ailib que ja faz as conversoes entoce(line, cedrofmt); // Certo, como o dado foi convertido escrevemos // a mensagem no buffer central if (cedrofmt != NULL) { writeln("/home/donda/ddc/buffer/test.tbf", cedrofmt, "a+"); } printf("Line:%s\r\n", line, cedrofmt); sleep(1); // Limpa a variavel da memoria free(cedrofmt); } else if (line[0] == 'D') { // Mensagem de livro dinamico // faz um tratamento diferente já que o separador // de dados é o : e nao o TAB // Estrutura para analise struct TDDCData *dbook = createlist(); // Popula a estrutura ( 58 é o codigo asci para o : splitcolumns(line, 58, dbook); // Estrutura temporaria varredura dos dados da estrutura struct TDDCData *tmp = dbook; // Flag que ira manipular o tipo de mensagem int book_type = 0; // Mensagem montada char *bookcedro = malloc(sizeof (char) *1000); // Posicao para msgs tipo U char *position = malloc(sizeof (char) *1000); // Varre a estrutura while (tmp) { // Indice 1, onde contem que tipo de mensagem // do livro é. Verifica que tipo é para iniciar // a mudanca if (tmp->index == 1) { // Tipo C, selecao do ativo if (tmp->value[0] == 'C') { // Vai para o proximo dado tmp = tmp->next; // Copia o ativo para a variavel global // que controla o ativo selecionado strcpy(cedrobooks, tmp->value); // Altera flag de tipo de msg para -1, // assim nao sera impresso no buffer essa // linha book_type = -1; // Zera o contador de linhas para tipo A addcountc = 0; addcountv = 0; break; } else if (tmp->value[0] == 'U') { // Mensagem de atualizacao, montamos // o cabecao da mensagem com o ativo // que esta na variavel global. sprintf(bookcedro, "M:%s:U", cedrobooks); // Altera a falg que identifica que tipo de mensagem é book_type = 1; } else if (tmp->value[0] == 'D') { // Mensagem de delecao, montamos // o cabecao da mensagem com o ativo // que esta na variavel global. sprintf(bookcedro, "M:%s:D", cedrobooks); // Altera a flag que identifica que tipo de mensagem é book_type = 2; } else if (tmp->value[0] == 'A') { // Mensagem de adição, vai para o proximo indice // e ve qual é a direcao tmp = tmp->next; if (tmp->value[0] == 'A') { // Direcao compra sprintf(bookcedro, "M:%s:A:%d", cedrobooks, addcountc); addcountc++; } else if (tmp->value[0] == 'V') { // Direcao venda sprintf(bookcedro, "M:%s:A:%d", cedrobooks, addcountv); addcountv++; } // Altera a flag book_type = 3; } } // Indice 2 if (tmp->index == 2) { // Se msg do tipo U, entao copia a direcao para // a variavel temporaria, para depois utiliza-la if (book_type == 1) { strcpy(position, tmp->value); } else if (book_type == 2 || book_type == 3) { // Mensagem do tipo delecao ou adicao, apenas concatena sprintf(bookcedro, "%s:%s", bookcedro, tmp->value); } } // Demais indices if (tmp->index >= 3) { // Para msgs do tipo U concatena valores if (book_type == 1) { sprintf(bookcedro, "%s:%s", bookcedro, tmp->value); // Se for o indice 4, então coloca junto a posicao // que esta na variavel if (tmp->index == 4) { sprintf(bookcedro, "%s:%s", bookcedro, position); } } else if (book_type == 2 || book_type == 3) { // Mensagem do tipo delecao ou adicao, apenas concatena sprintf(bookcedro, "%s:%s", bookcedro, tmp->value); } } // Vai para o proximo indice tmp = tmp->next; } // Finalisa msg strcat(bookcedro, ":5"); // Escreve no buffer if (book_type > 0) { writeln("/home/donda/ddc/buffer/test.tbf", bookcedro, "a+"); } // Limpa variaveis free(bookcedro); free(position); // Destroi a lista destroylist(dbook); tmp = NULL; } } // Limpa variaveis da memoria free(line); free(cmd); // Fecha arquivo de ativos fclose(fsymbols); } }