Ir ao conteúdo
  • Cadastre-se

VisualG É possível definir o tamanho do vetor utilizando constante em portugol?


Ir à solução Resolvido por kgin,

Posts recomendados

 

Esse código abaixo tem uma constante chamada MAX_PRODUTOS. Depois, essa constante é utilizada dentro do vetor numeros. Não sei se é possível fazer isso e, se é, como faço para colocar valores nesse vetor que utiliza a constante para definir o tamanho?

 

Algoritmo "Teste"

const MAX_ELEMENTOS = 5

Var

vetor numeros[MAX_ELEMENTOS] : inteiro

 

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

@Eli Almeidaa , boa tarde.

 

Você pode definir cada vetor.


 

Algoritmo "Teste"

const MAX_ELEMENTOS = 5

Var
	vetor numeros[MAX_ELEMENTOS] : inteiro

inicio 
	numeros <- [10 8 7 20 35]
fimalgoritmo

 

ou
 

Algoritmo "Teste"

const MAX_ELEMENTOS = 5

Var
    vetor numeros[MAX_ELEMENTOS] : inteiro

inicio
    numeros[0] <- 10
    numeros[1] <- 20
    numeros[2] <- 14
    numeros[3] <- 6
    numeros[4] <- 35
fimalgoritmo

 

Espero ter ajudado!

Abraço,

Diego

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

@Eli Almeidaa É possível sim. A sintaxe é a mesma da declaração de qualquer vetor. A diferença é que no lugar do número você vai colocar o nome da constante que nesse caso é MAX_ELEMENTOS. E para armazenar os valores no vetor não muda nada na forma que já deve conhecer.

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

@Diego Mendes Rodrigues , os dois códigos não funcionam, aparece esse erro :

 

Captura de tela 2023-09-14 171149visualg.jpg

 

5 horas atrás, Midori disse:

@Eli Almeidaa É possível sim. A sintaxe é a mesma da declaração de qualquer vetor. A diferença é que no lugar do número você vai colocar o nome da constante que nesse caso é MAX_ELEMENTOS. E para armazenar os valores no vetor não muda nada na forma que já deve conhecer.

@Midori, já tentei fazer isso, mas sempre dá erro. Você poderia mostrar um

exemplo de um vetor que usa constante para definir o tamanho e que funcione no visualg?

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

Algoritmo "Tipos_de_fruta"

const
   QUANTIDADE_FRUTAS = 5

var
   nome_frutas: vetor [1..QUANTIDADE_FRUTAS] de caractere
   contador:inteiro

inicio
   // Inicia o vetor!
   nome_frutas[1] <- "Abacaxi"
   nome_frutas[2] <- "Banana"
   nome_frutas[3] <- "Cereja"
   nome_frutas[4] <- "Damasco"
   nome_frutas[5] <- "Embauba"

   // Mostra o nome das frutas
   limpaTela
   escreval("Nomes das frutas no sistema!")
   para contador de 1 ate QUANTIDADE_FRUTAS faca
      escreval("[", contador, "]-", nome_frutas[contador])
   fimPara
fimAlgoritmo

Consulte o manual para mais detalhes!

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

@Eli Almeidaa No outro tópico no seu código das "reservaLugarCinema" tem lá a declaração correta do vetor. A única diferença é que em vez de colocar o número vai o nome da constante, p.ex,

 

algoritmo "reservaLugarCinema"

const MAX_ELEMENTOS = 10

Var
    lugares : vetor [1..MAX_ELEMENTOS] de caractere

 

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

  • Solução
Em 15/09/2023 às 20:34, Eli Almeidaa disse:

@kgin, @Midori , valeu os dois códigos funcionaram. A constante sendo usada como tamanho do vetor

Só funciona assim no caso :  [1..QUANTIDADE_FRUTAS], assim, não funciona :

[QUANTIDADE_FRUTAS]?

Não porque você tem que especificar qual é a primeira posição do vetor, mas essa lógica é valida em C e C++ pelo fato da primeira posição do vetor ser sempre a posição "0".

exemplo em C

#include <stdio.h>

#define TAMANHO_STR 30

enum tipos_frutas
{
    TF_ABACAXI = 0,
    TF_BANANA,
    TF_CEREJA,
    TF_DAMASCO,
    TF_EMBUABA,
    TF_QUANTIDADE_FRUTAS
};

int main(void)
{
    char buffer[256];       /* Utilizado para pegar a entrada padrão! */
    int contador;
    /* Declara e inicia a matriz */
    char nome_frutas[TF_QUANTIDADE_FRUTAS][TAMANHO_STR] = {
        "Abacaxi",
        "Banana",
        "Cereja",
        "Damasco",
        "Embuaba"
    };
    
    /* Mostra o nome das frutas */
    for (contador = 0; contador < TF_QUANTIDADE_FRUTAS; contador++) {
        printf("[%i]-%s\n", contador, nome_frutas[contador]);
    }
    
    /* Salta uma linha */
    printf("\n");
    
    /* Mostra a primeira e a ultima fruta */
    printf("A primeira fruta e %s\n", nome_frutas[TF_ABACAXI]);
    printf("A ultima fruta e %s\n", nome_frutas[TF_EMBUABA]);
    
    /* Pausa o programa */
    printf("Pressione enter para continuar!\n");
    fgets(buffer, 256, stdin);
    return(0);
}

Experimente online!

 

Você poderia contornar isso declarando a primeira posição do vetor e a ultima.

Exemplo

Algoritmo "Tipos_de_fruta"

const
     QF_INICIO = 1
     QF_FIM = 5

var
   nome_frutas: vetor [QF_INICIO..QF_FIM] de caractere
   contador:inteiro

inicio
   // Inicia o vetor!
   nome_frutas[1] <- "Abacaxi"
   nome_frutas[2] <- "Banana"
   nome_frutas[3] <- "Cereja"
   nome_frutas[4] <- "Damasco"
   nome_frutas[5] <- "Embauba"

   // Mostra o nome das frutas
   limpaTela
   escreval("Nomes das frutas no sistema!")
   para contador de QF_INICIO ate QF_FIM faca
      escreval("[", contador, "]-", nome_frutas[contador])
   fimPara
fimAlgoritmo

Em pascal (a linguagem pai do visualG) isso é uma declaração bem útil, mas no visualG não tem muito sentido fazer isso pelo fato da linguagem ser bem mais limitada.

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

Em 15/09/2023 às 20:34, Eli Almeidaa disse:

Só funciona assim no caso :  [1..QUANTIDADE_FRUTAS], assim, não funciona :

[QUANTIDADE_FRUTAS]?

Não porque esse Portugol não é totalmente compatível com o VisualG. Portugol é uma família de linguagens e existe variações entre elas, uma delas é essa da declaração de vetores.

  • Obrigado 1
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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!