[VisualG] Registro Dentro de Uma Matriz Bidimensional - Programação - iniciantes - Clube do Hardware
Registro Dentro de Uma Matriz Bidimensional
VisualG Registro Dentro de Uma Matriz Bidimensional
Por LuisGCarv, 6 de outubro de 2017 em Programação - iniciantes
Eu estou com alguns problemas pra fazer um programa que tenha um registro dentro de uma matriz com duas dimensões no VisualG. Eu consigo fazer registro com um vetor de boa, o problema só surge quando eu preciso de dois índices pra definir os elementos.
Segue o código do meu programa. O programa dá erro na linha que eu peço pra ler Automoveis.MAutomovel[i,j]
Algoritmo "MovimentacaoDeLocacao"
Clientela = registro
NCliente : caractere
Carros = registro
MAutomovel : caractere
ValorLoc : real
Clientes : Vetor [1..100] de Clientela
Automoveis : Vetor [1..100,1..100] de Carros
i, j , n , p , class : inteiro
escreval ("Digite o número de clientes a serem cadastrados :")
Clientes.Codigo[i] := i + 1000
escreval ("Digite o nome do cliente :")
leia (Clientes.NCliente[i])
escreval ("Digite o número de automóveis que o cliente pretende cadastrar :")
para j de 1 ate p faca
escreval ("Digite o nome da marca/modelo do ", j ,"° automóvel ")
leia (Automoveis.MAutomovel[i,j])
escreval ("Selecione a classificação do automóvel")
escreval ("1 - Básico (R$ 80,00) ")
escreval ("2 - Intermediário (R$ 150,00) ")
escreval ("3 - Executivo (R$ 300,00) ")
escolha class
Automoveis.ValorLoc[i,j] := 80,00
Automoveis.ValorLoc[i,j] := 150,00
Automoveis.ValorLoc[i,j] := 300,00
Clientes.Soma[i] := Clientes.Soma[i] + Automoveis.ValorLoc[i,j]
escreval ("CLIENTES CADASTRADOS")
escreval ("Código : C", Clientes.Codigo[i])
escreval ("Nome Do Cliente : ", Clientes.NCliente[i])
escreval ("Marca/Modelo do ", j ,"° Automóvel : ", Automoveis.MAutomovel[i,j])
escolha Automoveis.ValorLoc[i,j]
caso 80,00
escreval ("Descrição Da Classificação : Básico ")
escreval ("Valor Da Locação : R$ 80,00 ", )
caso 150,00
escreval ("Descrição Da Classificação : Intermediário ")
escreval ("Valor Da Locação : R$ 150,00 ", )
caso 300,00
escreval ("Descrição Da Classificação : Executivo ")
escreval ("Valor Da Locação : R$ 300,00 ", )
escreval ("Valor Total Da Locação : R$ ", Clientes.Soma[i])
É para um trabalho semestral que eu preciso entregar em no máximo duas semanas, então eu preciso resolver esse problema o mais rápido possível. Conto com a ajuda de vocês e agradeço desde já pela atenção.
Editado 6 de outubro de 2017 por LuisGCarv
Favor editar postagem e inserir o código utilizando a tag code (botão <>)
@Simon Viegas, já editei, muito obrigado pela dica.
Olá @LuisGCarv.
Você confundiu o vetor com um campo desse vetor (ou apenas está usando uma si). Ex.:
2 horas atrás, LuisGCarv disse:
Veja como definiu:
Ou seja, Clientes é um vetor do tipo Clientela. Na primeira linha, o Clientes é que é vetor. O NCliente é apenas um "campo", de uma posição desse vetor. Logo, serial algo assim:
Clientes[i].Codigo:=i + 1000
o mesmo para o restante, como por exemplo:
leia (Automoveis[i,j].MAutomovel)
A matriz está a esquerda.. uma posição dessa matriz tem o "campo" MAutomovel". Como tá lá no seu código, ficou como se Clientes fosse apenas uma variável comum, e um campo dele fosse uma matriz, entende?
Sobre as nomenclaturas...
Para um campo de um registro, não precisa repetir a identificação... é implícita. Ex.:
Nome  :caractere //perceba que apenas se chamar de "Nome", para acessar usuário, por exemplo, "cliente[i].nome". Sei que esse nome é desse "objeto"
Soma  :real
Nome     :caractere //aqui inserir propositalmente a mesma nomenclatura para demonstrar, mas ela não tema nada a ver com a outra... esse nome é do Carro... não vai haver duplicidade de variáveis, entende? Exemplo de acesso: "Carro[2].nome"
Modelo   :caractere
ValorLoc :real
@Simon Viegas , muito obrigado pelos esclarecimentos!
O pior é que eu estava fazendo errado já faz algum tempo e eu nem sei porque, estou revendo na apostila e está da forma que você explicou, acho que foi pura falta de atenção.