Ir ao conteúdo

Posts recomendados

Postado
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
  • Membro VIP
Postado

@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
Postado

@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
  • Membro VIP
Postado

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.

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!