Esempio n. 1
0
File: odbc.c Progetto: kevinarpe/kx
K eval(K x,K y,K z){K*k;S*b,s;SQLULEN w;SQLLEN*nb;SQLINTEGER*wb;H*tb,u,t,j=0,p,m;F f;C c[128];I n=xj<0;D d=d1(n?-xj:xj);U(d)x=y;Q(z->t!=-KJ||xt!=-KS&&xt!=KC,"type")
 if(z->j)SQLSetStmtAttr(d,SQL_ATTR_QUERY_TIMEOUT,(SQLPOINTER)(SQLULEN)z->j,0);
 if(xt==-KS)Q1(SQLColumns(d,(S)0,0,(S)0,0,xs,S0,(S)0,0))else{I e;K q=kpn(xG,xn);ja(&q,"\0");e=SQLExecDirect(d,q->G0,xn);r0(q);Q1(e)}
 SQLNumResultCols(d,&j);P(!j,(d0(d),knk(0)))
 b=malloc(j*SZ),tb=malloc(j*2),wb=malloc(j*SZ),nb=malloc(j*SZ),x=ktn(KS,j),y=ktn(0,j);// sqlserver: no bind past nonbind
 DO(j,Q1(SQLDescribeCol(d,(H)(i+1),c,128,&u,&t,&w,&p,&m))xS[i]=sn(c,u);
if(t>90)t-=82;
Q(t<-11||t>12,xS[i])wb[i]=ut[tb[i]=t=t>0?t:12-t]==KS&&w?w+1:wt[t];if(ut[t]==KS&&(n||!wb[i]||wb[i]>9))tb[i]=13)
 DO(j,kK(y)[i]=ktn(ut[t=tb[i]],0);if(w=wb[i])Q1(SQLBindCol(d,(H)(i+1),ct[t],b[i]=malloc(w),w,nb+i)))
 for(;SQL_SUCCEEDED(SQLFetch(d));)DO(j,k=kK(y)+i;u=ut[t=tb[i]];s=b[i];n=SQL_NULL_DATA==(int)nb[i];
if(!u)jk(k,n?ktn(ct[t]?KC:KG,0):wb[i]?kp(s):gb(d,(H)(i+1),t));
else ja(k,n?nu(u):u==KH&&wb[i]==1?(t=(H)*s,(S)&t):u==KS?(s=dtb(s,nb[i]),(S)&s):u<KD?s:u==KZ?(f=ds(s)+(vs(s+6)+*(I*)(s+12)/1e9)/8.64e4,(S)&f):(w=u==KD?ds(s):vs(s),(S)&w))) 
 if(!SQLMoreResults(d))O("more\n");DO(j,if(wb[i])free(b[i]))R free(b),free(tb),free(wb),free(nb),d0(d),xT(xD(x,y));}
Esempio n. 2
0
int decodificador(int n, str *hamm, char *out) {

	int i, j, j2, m, tam, c, k, dec;
	int x[3];
	int bin[4][3];

	i = 0; c = 0; k = 0; dec = 0; tam = 7;
	
	while (i < n) {
		for (j = 0; j < tam; j++, k++)
			hamm[k].num = j+1;			
	
		i = i + 7;
	}

	i = 0; k = 0;

	while (i < n) {

		m = 0;
						
		for (j = 0; j < tam; j++) {
			if (hamm[k].bit == '1') {
				dtb (hamm[k].num, m, bin);
				m++;
			}

			k++;
		}

		for (j = 0; j < 3; j++) {

			x[j] = bin[0][j];

				for (j2 = 1; j2 < m; j2++)
					x[j] = x[j] ^ bin[j2][j];
		}
	
		for (j = 0; j < 3; j++) {

			if (x[j] == 1) {

				dec = btd(x);

				if (hamm[(i+dec)-1].bit == '1')
					hamm[(i+dec)-1].bit = '0';
				else
					hamm[(i+dec)-1].bit = '1';
 
				j = 3;
			}
		}

		for (j = 0, j2 = i; j < tam; j++, j2++) { 
			
			if (pot2(hamm[j2].num) != 1) {
				out[c] = hamm[j2].bit;
				c++;
			}
		}

		i = i+7;
	}

	return c;
}
Esempio n. 3
0
File: triePat.c Progetto: gvs11/BCC
int main (int argc, char *argv[]){

	ApontadorT arvT;
	ApontadorP arvP;
	int elem, bit, tipo;
	int chave[tam];
	int chave_busca[tam];
	char op;

	arvT = inicializa_trie (arvT);
	arvP = inicializa_pat (arvP);
	tipo = 0;
	
	while (op != 'f') {
	
		scanf ("%c" , &op);

		if (op == 'i')
		{
			getchar();
			scanf ("%d" , &elem);
		}

		if (op == 'b')
		{
			getchar();
			scanf ("%d" , &elem);
			getchar();
			scanf ("%d" , &bit);
		}
		
		if (op == 'f')
			elem = 1;

		switch (op)
		{
			case ('i'):
				
				dtb (elem, chave);

				if (!tipo) {

					if (confere_trie (arvT, elem)) {
						arvT = insere_trie (arvT, elem, 0, chave);
						getchar();
						imprime_trie (arvT);
						printf ("\n");
					}

				}
				else { 
					if (confere_pat (arvP, elem)) {
						arvP->esq = insere_pat (arvP, arvP->esq, elem, chave, arvP->esq->bit); 
						getchar();
						imprime_pat (arvP->esq);
						printf ("\n");
					}
				}

				break;
		
			case ('b'):
				
				dtb (elem, chave);
				busca_chave (chave, chave_busca, bit);

				if (!tipo)
					busca_trie (arvT, 0, elem, bit, chave_busca);
				else		
					busca_pat (arvP->esq, 0, elem, bit, chave_busca);					

				break;
		
			case ('t'):

				transforma (arvP, arvT);
				arvT = inicializa_trie (arvT);
				tipo = 1;

				break;
	
			case ('f'):
				
				break;

			case ('e'):

				break;
		}   
	}	
		
	return 0;  
}