void remover2(long long int B[],long long int i) //Shifts down the tree swapping with the children whenever required.
{
	long long int temp;
	if(i>count2)
		return;
	if(i*2<=count2 && B[i*2]<B[i*2+1])
	{
		if(B[i*2]<B[i])
		{
			temp=B[i*2];
			B[i*2]=B[i];
			B[i]=temp;
			remover2(B,i*2);
		}
	}
	else if(i*2+1<=count2)
	{
		if(B[i*2+1]<B[i])
		{
			temp=B[i*2+1];
			B[i*2+1]=B[i];
			B[i]=temp;
			remover2(B,i*2+1);
		}
	}
}
void deletetop2(long long int B[])
{
//	printf("%d\n",B[1]);
	if(count2==1)
	{
		B[1]=MAX;
		count2=0;
		return;
	}
	B[1]=B[count2];
	B[count2]=MAX;
	count2--;
	remover2(B,1);
}
예제 #3
0
main(){	
   incluir_teste();
   mostrar();
/*  
   printf("Digite a matricula procurada: ");
   scanf("%d",&matricula);

   int posicao = buscar(matricula);
		
   system("cls");
   if(posicao != -1){
   	   printf("Item procurado:\n");
       printf("Matricula: %d\n",aluno[posicao].matricula); 
	   printf("Nome: %s\n",aluno[posicao].nome);
	   printf("Idade: %d",aluno[posicao].idade);
   }else{
   	   printf("Nenhum dado encontrado");
   }
*/
	int i;
	for(i = 0;i < 2;i++){
	int mat;
	printf("Digite a matricula a remover: ");
	scanf("%d",&mat);
		
	int pos_aluno = buscar(mat);
		
	remover2(pos_aluno);
	}
		
	int id_maior = obtem_nota("maior");
	
	printf("  ALUNO COM MAIOR NOTA\n");
	printf("------------------------\n");	
	printf("    Matricula:   %d   \n",aluno[id_maior].matricula);
	printf("------------------------\n");
	printf("    Nome:        %s\n",aluno[id_maior].nome);
	printf("------------------------\n");
	printf("    Idade:       %d\n",aluno[id_maior].idade);
	printf("------------------------\n");
	printf("    Nota:        %d\n",aluno[id_maior].nota);
}