struct noArvore* procura(struct noArvore *ptr,int info)
{
    if(ptr!=NULL)
        if(info < ptr->info)
            ptr=procura(ptr->esquerda,info);
        else if( info > ptr->info)
            ptr=procura(ptr->direita,info);
    return(ptr);
}/*Fim da procura()*/
Node * procura (Node * raiz, int num){
    if (raiz != NULL){
        if (raiz->data == num) {
            return raiz;
        } else if (num > raiz->data){
            return procura(raiz->right, num);
        } else {
            return procura(raiz->left, num);
        }
    }
    return NULL;
}
Beispiel #3
0
int main(){
	Aluno a1 = {10885 , "Alcino", 18.5};
	Aluno a2 = {77782, "Mariana", 9.5};
	Aluno a3 = {79175, "Vitor", 6.5};

	Turma t = NULL;

	insere(&t, a2);
	insere(&t, a1);
	insere(&t, a3);

	imprime(t);

	/*
	Teste das novas funções
	*/
	Aluno * aux;
	aux = procura(t, 77782);
	printf("%s\n", aux->nome);
	//Procura a Mariana e imprime o seu nome

	a2.nota = 10.5;

	printf("Nota da mariana antes do update: %f\n", aux->nota);
	update(t, a2);
	printf("Nota da mariana depois do update: %f\n", aux->nota);

	printf("Nº de aprovados: %d\n", aprovados(t));
	freet(t);


	return 0;
}
Beispiel #4
0
int update(Turma t, Aluno a){
	//Atualiza o Aluno colocando o novo aluno recebido como parametro.
	Aluno * aux;
	aux = procura(t, a.numero);
	if(aux){
		*aux = a;
		return 0;
	}
	else return 1;
}
main()
{
    bool ht_inc;
    int info ;
    int escolha;
    struct noArvore *raiz = (struct noArvore *)malloc(sizeof(struct noArvore));
    raiz =  NULL;

    while(1)
    {
    	printf("Arvore AVL\n");
    	printf("Menu: \n");
        printf("1.Insere\n");
        printf("2.Mostrar\n");
        printf("3.Sair\n");
        printf("Entre com sua escolha: ");
        scanf("%d",&escolha);
        switch(escolha)
        {
        case 1:
            printf("Entre com o numero a ser inserido: ");
            scanf("%d", &info);
            if( procura(raiz,info) == NULL )
                raiz = insere(info, raiz, &ht_inc);
            else
                printf("\nValor duplicado ignorado.\n");
            break;
        case 2:
            if(raiz==NULL)
            {
                printf("\nArvore vazia.\n");
                continue;
            }
            printf("Arvore balanceada: \n");
            mostrar(raiz, 1);
            printf("\n\n");
            printf("Em ordem: ");
            ordenado(raiz);
            printf("\n");
            break;
        case 3:
            exit(1);
        default:
            printf("Escolha invalida\n");
        }/*Final do menu*/
    }/*Final do enquanto*/
}/*Fim do menu()*/
Beispiel #6
0
void resolve()
{
	int topo, passos, x, y;
	item atual;
	item pilha[32];
	topo = 0; passos = 0; x = 0; y = 0;
	atual.pos.x = 0; atual.pos.y = 0;
	atual = procura( atual, &x, &y );
	while ( ganhou() ) {
		getchar();
		printf("X = %d Y = %d Mov = %d x = %d y = %d P = %d \n", atual.pos.x, atual.pos.y, atual.mov, x, y, passos);
		desenha();	
		while ( atual.mov <= 4 ) {
			if ( podemov(atual) ) {
				printf("Empilhando - \n");
				empilha( pilha, &topo, atual );
	 			atualizatab( atual, &atual );
	 			x = 0;
	 			y = 0;
	 			passos++;
	 			getchar();
				printf("X = %d Y = %d Mov = %d x = %d y = %d P = %d \n", atual.pos.x, atual.pos.y, atual.mov, x, y, passos);
				desenha();		
			}
			else atual.mov++;
		}
		if ( atual.mov > 4 ) {
			if ( x >= 6 && y >= 4 ) {
				if ( topo == 0 ) { 
					printf("Sem Solucao.");
					break;
				}
				else {
					printf("Backtrack - \n");
					atual = topodapilha( pilha, topo );
					desatualizatab( atual ); 
					x = atual.pos.x;
					y = atual.pos.y;
					atual.mov++;
					desempilha( &topo );
					passos--;
				}
		}				 
	}
	}
	imprimesol(pilha, topo);
}
Beispiel #7
0
void main(){
    procura();
}