Logo Hardware.com.br
Manito2015
Manito2015 Novo Membro Registrado
4 Mensagens 0 Curtidas

Como fazer uma tabela organizada com bubble sorte ou outro algoritmo de ordenação?

#1 Por Manito2015 09/02/2019 - 20:56
Esse é o código do minha tabela mas preciso ordena ela mas não tenho ideia de como, se puder ajudar e com o bubble sorte melhor ainda

Algoritmo "semnome"
//
//
// Descrição : Aqui você descreve o que o programa faz! (função)
// Autor(a) : Nome do(a) aluno(a)
// Data atual : 08/02/2019
Var
MATRIZ:vetor[0..5,0..8] de caracter
CONTADOR1: inteiro
CONTADOR2: inteiro
TROCA:inteiro

Inicio
CONTADOR1 <- 0
CONTADOR2 <- 0

MATRIZ[0,0] <- "Nº PACIENTE|"
MATRIZ[0,1] <- "NOME|"
MATRIZ[0,2] <- "SEXO|"
MATRIZ[0,3] <- "DATA NASCIMENTO|"
MATRIZ[0,4] <- "RG |"
MATRIZ[0,5] <- "CPF |"
MATRIZ[0,6] <- "TELEFONE |"
MATRIZ[0,7] <- "ENDEREÇO |"
MATRIZ[0,8] <- "CEP |"

escreval(">>>CADASTRO PACIENTE<<<")
escreval("")
escreval("Nº PACIENTE:")
leia(MATRIZ[1,0]
escreval("NOME COMPLETO:")
leia(MATRIZ[1,1]
escreval("SEXO:")
leia(MATRIZ[1,2]
escreval("DATA NASCIMENTO:")
leia(MATRIZ[1,3]
escreval("RG:")
leia(MATRIZ[1,4]
escreval("CPF:")
leia(MATRIZ[1,5]
escreval("TELEFONE:")
leia(MATRIZ[1,6]
escreval("ENDEREÇO:")
leia(MATRIZ[1,7]
escreval("CEP:")
leia(MATRIZ[1,8]
limpatela

escreval(">>>CADASTRO PACIENTE<<<")
escreval("")
escreval("Nº PACIENTE:")
leia(MATRIZ[2,0]
escreval("NOME COMPLETO:")
leia(MATRIZ[2,1]
escreval("SEXO:")
leia(MATRIZ[2,2]
escreval("DATA NASCIMENTO:")
leia(MATRIZ[2,3]
escreval("RG:")
leia(MATRIZ[2,4]
escreval("CPF:")
leia(MATRIZ[2,5]
escreval("TELEFONE:")
leia(MATRIZ[2,6]
escreval("ENDEREÇO:")
leia(MATRIZ[2,7]
escreval("CEP:")
leia(MATRIZ[2,8]
limpatela

escreval(">>>CADASTRO PACIENTE<<<")
escreval("")
escreval("Nº PACIENTE:")
leia(MATRIZ[3,0]
escreval("NOME COMPLETO:")
leia(MATRIZ[3,1]
escreval("SEXO:")
leia(MATRIZ[3,2]
escreval("DATA NASCIMENTO:")
leia(MATRIZ[3,3]
escreval("RG:")
leia(MATRIZ[3,4]
escreval("CPF:")
leia(MATRIZ[3,5]
escreval("TELEFONE:")
leia(MATRIZ[3,6]
escreval("ENDEREÇO:")
leia(MATRIZ[3,7]
escreval("CEP:")
leia(MATRIZ[3,8]
limpatela

escreval(">>>CADASTRO PACIENTE<<<")
escreval("")
escreval("Nº PACIENTE:")
leia(MATRIZ[4,0]
escreval("NOME COMPLETO:")
leia(MATRIZ[4,1]
escreval("SEXO:")
leia(MATRIZ[4,2]
escreval("DATA NASCIMENTO:")
leia(MATRIZ[4,3]
escreval("RG:")
leia(MATRIZ[4,4]
escreval("CPF:")
leia(MATRIZ[4,5]
escreval("TELEFONE:")
leia(MATRIZ[4,6]
escreval("ENDEREÇO:")
leia(MATRIZ[4,7]
escreval("CEP:")
leia(MATRIZ[4,8]
limpatela

escreval(">>>CADASTRO PACIENTE<<<")
escreval("")
escreval("Nº PACIENTE:")
leia(MATRIZ[5,0]
escreval("NOME COMPLETO:")
leia(MATRIZ[5,1]
escreval("SEXO:")
leia(MATRIZ[5,2]
escreval("DATA NASCIMENTO:")
leia(MATRIZ[5,3]
escreval("RG:")
leia(MATRIZ[5,4]
escreval("CPF:")
leia(MATRIZ[5,5]
escreval("TELEFONE:")
leia(MATRIZ[5,6]
escreval("ENDEREÇO:")
leia(MATRIZ[5,7]
escreval("CEP:")
leia(MATRIZ[5,8]
limpatela

para CONTADOR de 0 ate 5 faca
para CONTADOR2 de 0 ate 8 faca
escreva (MATRIZ[CONTADOR1,CONTADOR2]," |")
fimpara
escreval("")
fimpara
Fimalgoritmo
Olavo França
Olavo França Ubbergeek Registrado
2.7K Mensagens 559 Curtidas
#6 Por Olavo França
14/02/2019 - 15:03
Boa tarde pessoal...
Também fiquei curioso e fiz um teste do método Bubble Sort, e fiz uma pequena adaptação (Usei uma segunda variável - Aux_II), usando Visual Basic.
Aqui vai o código com uma ligeira "pequena" modificação.

Public Class Sorte
Dim RandArray() As Integer

Private Sub BtnSorte_Click(sender As Object, e As EventArgs) Handles BtnSorte.Click

If TxtBxTamanho.TextLength = 0 Or Val(TxtBxTamanho.Text) < 0 Then
TxtBxTamanho.Clear()
TxtBxTamanho.Focus()
MsgBox("Entre com um valor positivo.", MsgBoxStyle.Information)
Else
TxtBxOriginal.Clear()
TxtBxSorteado.Clear()

Dim Tamanho As Integer = TxtBxTamanho.Text
Dim TesteSeOrdenado As Boolean
Dim Aux, Aux_II As Integer
ReDim RandArray(0 To CInt(Tamanho))

' Atribui os valores na ordem inversa (pior caso), ou seja, ordem decrescente
For Olha As Integer = 0 To Tamanho
RandArray(Olha) = Tamanho - Olha
TxtBxOriginal.Text += RandArray(Olha) & vbNewLine
Next

Aux_II = Tamanho

For Olha As Integer = 0 To Tamanho
TesteSeOrdenado = True

' A variável Aux_II é decrementada em menos 1, para o próximo for (For Compara), pois, quando termina o mesmo,
' o maior valor já está na última posição,
' (não sendo necessário fazer a comparação até a última posição do vetor novamente).

Aux_II -= 1

For Compara As Integer = 0 To Aux_II
If RandArray(Compara) > RandArray(Compara + 1) Then
Aux = RandArray(Compara + 1)
RandArray(Compara + 1) = RandArray(Compara)
RandArray(Compara) = Aux
TesteSeOrdenado = False
End If
Next
If (TesteSeOrdenado) Then
Exit For
End If
Next

' Imprime o vetor na ordem crescente.

For Olha = 0 To Tamanho
TxtBxSorteado.Text += RandArray(Olha) & vbNewLine
Next
End If
End Sub
End Class


Fiz o teste para o pior caso, ou seja, o maior número está na primeira posição e o menor número está na última posição.
Fico imaginando o código com maior eficiência, deve ser muito mais elaborado.
Mobo Gigabyte B660M DS3H DDR4 - CPU Core i7 - 12700F 2.1 GHz - RAM 2x8GB + 2x16GB = 48GB 3200MHz DDR4 -
Corsair CX650M - 650 Watts -  GTX 1660 Super OC 6GB GDDR6
, SSD Sata de 500GB, NVMe de 1TB e HD de 2TB - Windows 11 Pro - 64 bits.
Não acreditar em Deus, é duvidar da própria existência de tudo....bom_trabalho.gifi
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal