void insereDicionario (celula *ini, string palavra) {
    string npalavra = normalizar (palavra);
    celula *p, *q;
    int dif;
    p = ini->prox;
    q = ini;
    while (p != NULL) {
        /* q representa a celula anterior e p representa a celula
        // que tem a palavra a ser inserida na lista*/
        dif = (strcmp (p->conteudo, npalavra));
        if (dif > 0) {
            celula *nova;
            nova = malloc (sizeof (celula));
            nova->conteudo = npalavra;
            nova->prox = q->prox;
            q->prox = nova;
            break;
        } else if (dif == 0)
            break;
        p = p->prox;
        q = q->prox;
    }
    if (p == NULL) {
        celula *nova;
        nova = malloc (sizeof (celula));
        nova->conteudo = npalavra;
        nova->prox = q->prox;
        q->prox = nova;
    }
}
示例#2
0
void calcular_base_ortonormal(Matriz& matriz, Matriz& matriz_ortonormal, int alfa){ //deja en matriz_ortonormal una matriz de alfa columnas
  double autovalor;
  int m = matriz_ortonormal.dimensionColumnas();

  for (int i = 0; i < alfa; ++i) { //repito alfa veces (hay que experimentar con dicho valor)

    vector<double>& aux = matriz_ortonormal[i];

    Matriz::cargarVector(aux);

    matriz.mostrar2();

    autovalor = metodoPotencia(matriz, aux); //calculo el i-ésimo autovalor, en aux queda el autovector
    std::cout << "autovalor: " << i << " vale: " << std::scientific << autovalor << std::endl;

    /* Deflación */
    Matriz auxiliar(m, m);
    std::cout << "-----------------------------------" << std::endl;

    normalizar(aux);

    auxiliar.multiplicarVectoresDameMatriz(aux, aux);
    auxiliar.multiplicarEscalar(autovalor);
    matriz.menos(auxiliar);

    matriz.mostrar2();

    while (true) {}
  } 
  /* Tengo en matriz_ortonormal la matriz con base de autovectores de matriz */
}
示例#3
0
int validar_clave(char* clave){
	int det, det_1, det_2, inv_det;
	char matrix[10];

	if(strlen(clave) != 9)
		return 1;

	normalizar(clave, matrix);

	// calculamos el determinante
	det_1 = matrix[0]*matrix[4]*matrix[8] + matrix[1]*matrix[5]*matrix[6] + matrix[2]*matrix[3]*matrix[7];
	det_2 = matrix[2]*matrix[4]*matrix[6] + matrix[5]*matrix[7]*matrix[0] + matrix[8]*matrix[1]*matrix[3];

	det = det_1 - det_2;

	if(det == 0)
		return 1;

	if(det < 0)
		det = (det % 41)+41;
	else
		det = det % 41;

	inv_det = euclides(0, 1, 0, 41, 0, 1, det);
	if(inv_det == 0){
		return 1;
	}

	return 0;
}
示例#4
0
int main ()
{
    srand(time(NULL));

    int i;
    int x;
    int *vetor;

    printf("Digite o tamanho do vetor: ");
    scanf("%d",&x);
    vetor = calloc(x,sizeof(int));

    printf("\n");

    for(i = 0; i < x; i++)
    {
        scanf("%d",&vetor[i]);
    }

    printf("\n");

    normalizar(vetor, x);

system("pause");
return 0;
}
示例#5
0
int main ()
{
    srand(time(NULL));
    int x;
    int *vetor;

    x = rand()%10;
    printf("Tamanho do vetor = %d\n\n",x);
    normalizar (vetor, x);
    printf("\n");

system("pause");
return 0;
}
示例#6
0
文件: tipos.cpp 项目: fkfc/lobots
void normal (float ax,float ay,float az,float bx,float by,float bz,float cx,float cy,float cz,float *x, float *y, float *z)
{
    float dx, dy, dz, ex, ey, ez;

    dx = ax - bx; //calcula os vetores iniciais
    dy = ay - by;
    dz = az - bz;
    
    ex = bx - cx;
    ey = by - cy;
    ez = bz - cz;

    *x = (dy * ez) - (dz * ey); //vetor normal
    *y = (dz * ex) - (dx * ez);
    *z = (dx * ey) - (dy * ex);


    normalizar(x,y,z);
}