int main(int argc, char *argv[]) { clock_t start, end, elapsed; FILE *entrada, *entrada2, *copia, *consulta, *saida; Words *words=NULL, *aux=NULL; char linha[1024],linha2[1024]; char delimiters[] = " .,;:!?'\n'-*"; char *token=NULL, *cp, c, n,aspas=(char)39,tab=(char)9; int i=0, ok=0,okay=0; if (argc != 5) //numero de parametros corretos { printf("Numero incorreto de parametros.\n Sintaxe: copia arq_origem arq_destino\n"); return 1; } entrada = fopen(argv[1], "r"); //abre o primeiro arquivo (arquivo de entrada) copia = fopen("facil.txt", "w"); //arquivo auxiliar consulta = fopen(argv[2], "r"); //abre o arquivo de consulta saida = fopen (argv[3], "w"); //abre ou cria ou arquivo de saida if(!entrada) //caso arquivos não existam { printf("ERRO\n"); return 1; } if(!consulta) { printf("ERRO\n"); return 1; } while(!feof(entrada)) //cria arquivo auxiliar a ser usado sem pontos, e caracteres separadores especiais { c=fgetc(entrada); if((c==',')||(c==':')||(c==';')||(c=='.')||(c=='-')||(c==EOF)||(c=='!')||(c=='?')||(c=='"')||(c=='*')||(c==aspas)||(c=='(')||(c==')')||(c=='_') || c==tab) c=' '; fputc(tolower(c),copia); } fclose(entrada); fclose(copia); entrada = fopen("facil.txt", "r"); entrada2 = fopen("facil.txt", "r"); if(!entrada) printf("ERRO\n"); ///AQUI COLOCA OS ELEMENTOS NA ABP else { while(fgets(linha,1024, entrada)) { stolower(linha); //função que transforma tudo para minusculo cp = strdup(linha); token = strtok (cp, delimiters); //pega tokens (usa cp como auxiliar para caso o ponteiro fique iinvalido em algum momento) while(token!=NULL) { words = abp(words,token); //insere na abp token = strtok (NULL, delimiters); //pega proximo token } } } words = abp(words, "(NULL)"); //insere a palavra "(NULL)" na abp, para ser apontada pela ultima palavra do texto aux = words; //ponteiro aux fixo no inicio da ABP fseek(entrada, 0, SEEK_SET); n=fscanf(entrada2,"%s",linha2);//inicia o arquivo auxiliar uma palavra na frente ///AQUI COLOCA OS ELEMTTOS NO CAMPO LISTA DO NÓ DA ABP while(n != EOF) { words = aux; n=fscanf(entrada2,"%s",linha2); c=fscanf(entrada,"%s",linha); if(n == EOF) { words=busca(words,linha); //caso seja a ultima palavra do texto, busca ela na árvore words->vizinhos=insere_lista(words->vizinhos,"(NULL)"); //insere ela apontando também para ("NULL") break; } words=busca(words,linha); //busca a palavra no texto words->vizinhos=insere_lista(words->vizinhos,linha2); //insere ela apontando para sua sucessora } // printf("iuti"); fclose(entrada2); fclose(entrada); moda(aux,aux); //calcula a medida estatística para cada elemento da lista ordena(aux); //ordena a lista pelo valor de sua "moda" ///AQUI FAZ A BUSCA E GERA SAIDA start=clock(); fseek(consulta,0,SEEK_SET); while(fgets(linha,1023,consulta)) { words=aux; //volta para o inicio da árvore strcpy(linha, strtok(linha,delimiters)); //paga pegar a linha correta words=busca(words,linha); //vai para o lugar da arvore daquela palavra if(words!=NULL) { fputs("Consulta: ", saida); fputs(words->id, saida); fputs("\n", saida); i=0; while(words->vizinhos!=NULL && i<atoi(argv[4])) { fprintf(saida,"Sugestao: %s",words->vizinhos->id); //printa tudo bonitinho okay=strlen(words->vizinhos->id); for(ok=0; ok<30-okay; ok++) fprintf(saida," "); fprintf(saida,"(%lf)\n",words->vizinhos->moda); words->vizinhos = words->vizinhos->prox; i++; } fputs("\n", saida); } } fputs("\n", saida); end=clock(); //lê o tempo final elapsed = 1000 * (end - start) / (CLOCKS_PER_SEC); fprintf(saida,"Gasto: %ld ms", elapsed); //mostra o tempo final em ms fclose(consulta); fclose(saida); //Desenha(aux,1); deltree(aux); return 0; }
static void Bitmap_copyPixelsFromBuffer(JNIEnv* env, jobject, const SkBitmap* bitmap, jobject jbuffer) { SkAutoLockPixels alp(*bitmap); void* dst = bitmap->getPixels(); if (NULL != dst) { android::AutoBufferPointer abp(env, jbuffer, JNI_FALSE); // the java side has already checked that buffer is large enough memcpy(dst, abp.pointer(), bitmap->getSize()); <<<<<<< HEAD
static void Bitmap_copyPixelsToBuffer(JNIEnv* env, jobject, const SkBitmap* bitmap, jobject jbuffer) { SkAutoLockPixels alp(*bitmap); const void* src = bitmap->getPixels(); if (NULL != src) { android::AutoBufferPointer abp(env, jbuffer, JNI_TRUE); // the java side has already checked that buffer is large enough memcpy(abp.pointer(), src, bitmap->getSize()); } }
static void Bitmap_copyPixelsFromBuffer(JNIEnv* env, jobject, jlong bitmapHandle, jobject jbuffer) { SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle); SkAutoLockPixels alp(*bitmap); void* dst = bitmap->getPixels(); if (NULL != dst) { android::AutoBufferPointer abp(env, jbuffer, JNI_FALSE); // the java side has already checked that buffer is large enough memcpy(dst, abp.pointer(), bitmap->getSize()); bitmap->notifyPixelsChanged(); } }
/*Função recursiva para inserir em uma ABP*/ Words* abp(Words *a,char *x) { if(a == NULL) //malloca espaço, e cria o nodo { a = (Words*) malloc(sizeof(Words)); strcpy(a->id,x); a->vizinhos=NULL; a->esq = NULL; a->dir = NULL; a->freq=1; } else { if(strcmp(x,a->id)>0) //para recursão a esquerda a->esq=abp(a->esq,x); else if(strcmp(x,a->id)<0) //para recursão a direita a->dir=abp(a->dir,x); else if(strcmp(x,a->id)==0) //para palavras iguais, adiciona 1 no seu contador a->freq = a->freq + 1; } return a; }