示例#1
0
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);

}
示例#2
0
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;
}
示例#3
0
/**
 * 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);

    }
}