Ir ao conteúdo
  • Cadastre-se

VisualG Tabela de torneios com vetores, como fazer?


Posts recomendados

algoritmo "TORNEIO DE FUTEBOL"
var
   vet: vetor [1..3] de caractere
   time: caractere
   x:inteiro
inicio
   para x<- 1 ate 3 faca
      escreva("Nome do ",x,"º time: ")
      leia(vet[x])
   fimpara
   escreval("       TABELA DAS PARTIDAS       ")
   escreval("---------------------------------")
   escreval(vet[1]:15, "[ ] X [ ] ", vet[2]:15)
   escreval(vet[1]:15, "[ ] X [ ] ", vet[3]:15)
   escreval(vet[2]:15, "[ ] X [ ] ", vet[1]:15)
   escreval(vet[2]:15, "[ ] X [ ] ", vet[3]:15)
   escreval(vet[3]:15, "[ ] X [ ] ", vet[1]:15)
   escreval(vet[3]:15, "[ ] X [ ] ", vet[2]:15)
fimalgoritmo

 

Olá pessoal, eu depois de muito tempo estou tentando voltar a programação, uma vez que programava em Dbase III, por volta de 1980, estou tentando me atualizar e recomecei pelo Visualg, resolvi este exercício e gostaria de saber de está certo deste jeito ou tem alguma outra forma de se usar o vetor, para a demonstração da tabela. Grato desde já a quem puder me orientar. Abraços.

  • Curtir 2
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Frank Charles Peach, bem vindo de volta. :D

 

Sobre:

3 horas atrás, Frank Charles Peach disse:

resolvi este exercício e gostaria de saber de está certo deste jeito ou tem alguma outra forma de se usar o vetor, para a demonstração da tabela.

 

A definição de "certo" é muito relativa.... basicamente vai depender do enunciado e daquilo que está estudando. 

 

Como está utilizando vetores, provavelmente faria mais sentido utilizar um laço de repetição... Ex.:

 

   para c <- 1 ate 3 faca
      para v <- 1 ate 3 faca
         se (c <> v) entao
            escreval(vet[c]:15, "[ ] X [ ] ", vet[v])
         fimSe
      fimPara
   fimPara

 

Adendo: observe que não adianta muita coisa "inserir espaços à direita para o time visitante". Concorda?

 

Outra forma... deixando o espaçamento mais ajustado:

 

algoritmo "TORNEIO DE FUTEBOL"
var
   vTimes: vetor [1..3] de caractere
   i: inteiro
   x: inteiro
   c, v:inteiro

funcao calcularLargulaColuna(): inteiro
var
   maior: inteiro
   i: inteiro
inicio
   maior <- Compr(vTimes[1])

   para i <- 2 ate 3 faca
      se (Compr(vTimes[i]) > maior) entao
         maior <- Compr(vTimes[i])
      fimSe
   fimPara
   retorne maior
fimFuncao

inicio
   para i <- 1 ate 3 faca
      escreva("Nome do ", i, "º time: ")
      leia(vTimes[i])
   fimPara

   x <- calcularLargulaColuna() + 1

   escreval("       TABELA DAS PARTIDAS       ")
   escreval("---------------------------------")
   para c <- 1 ate 3 faca
      para v <- 1 ate 3 faca
         se (c <> v) entao
            escreval(vTimes[c]:x, "[ ] X [ ] ", vTimes[v])
         fimSe
      fimPara
   fimPara
fimalgoritmo

 

image.png

 

 

 

Outra forma seria alinhar à direita para o time da casa:

 

image.png

 

Se quiser tentar implementar:

 

   x <- calcularLargulaColuna() + 1

   escreval("       TABELA DAS PARTIDAS       ")
   escreval("---------------------------------")
   para c <- 1 ate 3 faca
      para v <- 1 ate 3 faca
         se (c <> v) entao
            espacos <- calcularEspacos(x)
            escreval("":espacos, vTimes[c], " [ ] X [ ] ", vTimes[v])
         fimSe
      fimPara
   fimPara

 

Faltaria apenas criar o calcularEspacos(). Observe que está recebendo um parâmetro. A função deve retornar a quantidade de espaços à esquerda... de modo que o resultado sai como a imagem acima.

 

Qualquer dúvida, ou comentário, é só postar.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Simon Viegas Simon, boa noite, realmente eu ainda tenho muito o que aprender, ainda não me familiarizei com os laços de repetição um dentro do outro, mas vou seguir o que você me mandou passo a passo, achei muito legal a forma de se checar o tamanho do nome do time, assim sendo ficarei com a primeira opção que você me forneceu, conforme o enunciado sugerido pelo exercício. Fico muito grato pela atenção dispensada. Abraços.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Uma resumida...

 

Alteração para imprimir utilizando laços de repetição:

 

Para cada c (time da casa) imprimir o jogo com um v (time visitante). Por isso um para dentro do outro.

 

algoritmo "TORNEIO DE FUTEBOL"
var
   vet: vetor [1..3] de caractere
   time: caractere
   i, c, v: inteiro
inicio
   para i <- 1 ate 3 faca
      escreva("Nome do ", i:1,"º time: ")
      leia(vet[i])
   fimPara

   escreval("       TABELA DAS PARTIDAS       ")
   
   para c <- 1 ate 3 faca
      para v <- 1 ate 3 faca
         se (c <> v) entao
            escreval(vet[c]:15, "[ ] X [ ] ", vet[v])
         fimSe
      fimPara
   fimPara
fimAlgoritmo

 

image.png

 

 

 

 

Alteração para continuar deixando alinhado o placar no centro, mas deixando um espaçamento mínimo à esquerda:

 

O placar no centro vai ficar "um espaço a direita do nome mais comprido". 

 

algoritmo "TORNEIO DE FUTEBOL"
var
   vet: vetor [1..3] de caractere
   time: caractere
   i, c, v: inteiro
   maior, espacos: inteiro
inicio
   para i <- 1 ate 3 faca
      escreva("Nome do ", i:1,"º time: ")
      leia(vet[i])
   fimPara
   
   maior <- Compr(vet[1]) //inicializa o maior com o primeiro

   para i <- 2 ate 3 faca //para cada um dos outros times
      se (Compr(vet[i]) > maior) entao //se o comprimento dele é maior que o maior
         maior <- Compr(vet[i]) //o maior passa a esse ele
      fimSe
   fimPara
   
   espacos <- maior+1

   escreval("       TABELA DAS PARTIDAS       ")
   
   para c <- 1 ate 3 faca
      para v <- 1 ate 3 faca
         se (c <> v) entao
            escreval(vet[c]:espacos, "[ ] X [ ] ", vet[v])
         fimSe
      fimPara
   fimPara
fimAlgoritmo

 

image.png

 

 

 

Alteração para deixar o placar alinhado ao centro e deixando o time da casa alinhado à direita (próximo ao placar) :

 

algoritmo "TORNEIO DE FUTEBOL"
var
   vet: vetor [1..3] de caractere
   time: caractere
   i, c, v: inteiro
   maior, espacos: inteiro
inicio
   para i <- 1 ate 3 faca
      escreva("Nome do ", i:1,"º time: ")
      leia(vet[i])
   fimPara

   maior <- Compr(vet[1]) //inicializa o maior com o primeiro

   para i <- 2 ate 3 faca //para cada um dos outros times
      se (Compr(vet[i]) > maior) entao //se o comprimento dele é maior que o maior
         maior <- Compr(vet[i]) //o maior passa a esse ele
      fimSe
   fimPara

   escreval("       TABELA DAS PARTIDAS       ")

   para c <- 1 ate 3 faca
      para v <- 1 ate 3 faca
         se (c <> v) entao
            espacos <- maior-Compr(vet[c]) //maior comprimento menos o tamanho do texto
            escreval("":espacos, vet[c], " [ ] X [ ] ", vet[v])
         fimSe
      fimPara
   fimPara
fimAlgoritmo

 

O maior terá o tamanho do maior comprimento do nome do time... o espacos vai conter os espaços necessário para que, cada um dos time, passem a ter o mesmo comprimento do maior... como os espaços estão sendo adicionados à esquerda, vai alinha a direita.

 

Observe que dei um espaço antes de "[ ]", para não ficar colado.

 

image.png

 

 

Adendo: essas alterações não necessariamente são triviais, mas ao mesmo tempo não são coisas do outros mundo... boa parte do que demonstrei eu tive que quebrar a cabeça em algum momento... isso é normal, mas o que eu aprendi durante o tempo, fui "reutilizando"... mesmo que não seja exatamente igual o que já vi, mas a base ajuda a expandir as possibilidades.

 

Por exemplo: se quiser colocar um espaço mais à esquerda... para não deixar colado na parede, como faria? Oras! só dar mais um espaço em cada um. Algo como:

 

espacos <- maior-Compr(vet[c]) + 1

 

Por aí vai.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!