Ir ao conteúdo
  • Cadastre-se

Excel Utilizando excel para declarar matrizes em C


Posts recomendados

Irei desenvolver um jogo simples para um projeto escolar, e para isso terei que utilizar de matrizes em C, porém para realizar a declaração individual de uma matriz como a mostrada na imagem eu teria que escrever praticamente a mão mais de 450 linhas do código, portanto meu professor recomendou o excel para realizar a declaração. Contudo, não apresento conhecimentos básicos de Excel e acabei não conseguindo fazer o que pensei. 
A declaração da matriz se dá por "mat[valor da linha][valor da coluna]= valor da casa na matriz;", por exemplo, "mat[0][0]=2" ou nessa imagem "mat[B1][A2]=B2", eu precisaria de alguma forma de colocar os valores dentro dos [ ] e jogar uma fórmula para toda os valores selecionados, gerando o código no formato que disse, porém não sei como realizar o mesmo.

imagem_2022-05-30_210202116.png

Link para o comentário
Compartilhar em outros sites

33 minutos atrás, Gustavo Feijo disse:

A declaração da matriz se dá por "mat[valor da linha][valor da coluna]= valor da casa na matriz;", por exemplo, "mat[0][0]=2" ou nessa imagem "mat[B1][A2]=B2"

 

Não consegui entender o que pode ser "valor da casa na matriz" nem is dois casos citados 😞 

Link para o comentário
Compartilhar em outros sites

@Gustavo Feijo

12 minutos atrás, Gustavo Feijo disse:

@arfneto No caso seria o valor presente na matriz , os valores ali em branco são só as coordenadas, na imagem a matriz na linha 0 e coluna 0 é a que está em B2 e o valor dela é 2, na declaração ficaria como mat[0][0]=2.

 

Então os valores base estão na linha 1 e na coluna B, 22x26 e numerados de 1 em 1?

 

Isso seria a regra de formação para as células internas? 

 

Mas o valor na coluna A é o valor da linha -2...

 

E na linha 1 começa de 0 em B0 e aumenta de 1 em 1...

 

Qual a regra disso? Se são assim determinados nem precisava dessa linha nem dessa coluna.

 

Como chegou ao total de 450 valores?

 

 

 

Link para o comentário
Compartilhar em outros sites

@deejaywesley É quase isso ae, só não sei como faço pra aplicar isso de forma que ele pegue o valor de todas as outras casas, por exemplo, pegar esse {=SUBSTITUIR("§mat["&B1&"]["&A2&"]="&B2&"§";"§";"""")"} e fazer com que B1 se mantenha, mas A2 vire A3, B2 vire B3 e preencha todos valores até B21, ae depois ainda teria que ir fazendo o mesmo pra C e seguindo até o W, na pratica parece ser algo bem complicadinho. Eu achei que seria um pouco mais simples por ser algo que eu até consigo gerar em C, mas apenas em linhas com muitos poucos detalhes, com as colunas apenas com 2 ou com uma maioria só de 0.

Por ser um joguinho que eu gostaria de fazer relativamente maior do que o mínimo que o professor espera (Por ser algo que me divirto só em ficar programando) eu teria que automatizar bastante o processo de produção de mapas, ae estava tentando fazer no Excel.
valeu ae, espero que o jogo fique bom o suficiente pra se divertir, tentar fazer algo no estilo Pokemon e RPGs de turno antigos. 

Link para o comentário
Compartilhar em outros sites

para B1 não alterar coloque assim

=SUBSTITUIR("§mat["&$B$1&"]["&A2&"]="&B2&"§";"§";"""")

ai depois é so arrastar para baixo...

boa noite @kgin

 

pelo que entendi, ele quer fazer o Excel escrever o código pra ele, pra ele não ter que escrever as 400 e tantas linhas uma por uma ....

Link para o comentário
Compartilhar em outros sites

@arfneto A linha 1 e a coluna A são apenas pra representar qual a coordenada que vai ser atribuída à cada ponto da matriz, o valor real da matriz são esses com cores e enumerados a mão, o valor de 450 foi só uma aproximação, são cerca de 400 e poucas linhas por ter que declarar individualmente cada casa da matriz junto dá coordenada e o valor, sendo na imagem uma matriz de 22x22 + uma 4x4 bem pequena abaixo seriam 500 coordenadas individuais.
A coordenada de cada uma seria basicamente isso nessa imagem que segue, porém eu teria que colocar mat + essas cordenadas = valor de cada casa na primeira imagem

imagem_2022-05-30_221428460.png

@kgin Em essência sim

@deejaywesley De forma simplificada, sim, nesse exemplo são 400 linhas de código, mas aplicaria a forma para outras matrizes, no jogo essa matriz seria apenas um pequeno mapa, de forma que seria quase impossível declarar individualmente cada uma, seriam horas e mais horas escrevendo cada matriz individualmente.
No arrastar pra baixo ela funciona corretamente, mas ao arrastar pro lado apenas o resultado sai correto, a formação da matriz fica como [B1][B2] ao invés de [C1][A2]

 

Link para o comentário
Compartilhar em outros sites

@deejaywesley @deejaywesley Consegui resolver esse problema de arrastar para o lado trocando só as primeiras células referidas, acho que fechou o que eu precisava, acabou ficando um pouco confusa a minha explicação, não soube direito como explicitar a forma de formação das matrizes, mas acabou funcionando, obrigado @deejaywesley@kgine @arfneto

@kgin O meu professor falou sobre isso, mas ele não explicou como é feito ou onde pesquisar sobre, apenas que era possível, se não for incômodo poderia explicar como é feito?

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

20 minutos atrás, Gustavo Feijo disse:

Consegui resolver esse problema de arrastar para o lado trocando só as primeiras células referidas, acho que fechou o que eu precisava, acabou ficando um pouco confusa a minha explicação, não soube direito como explicitar a forma de formação das matrizes, mas acabou funcionando

 

Muito bom. 

 

Eu não entendi mesmo. 

 

Então os dados vem de onde? Isso é um mapa e vai ser desenhado de algum modo, como aquelas áreas coloridas na imagem que mostrou?

 

Alguém vai entrar  com as coordenadas de coisas numa area 2D de ixj linhas e colunas? Ou isso é uma matriz de translação dando novas coordenadas para os pontos?

 

Acho mesmo que precisava de uma definição mais formal.

 

Veja que, a julgar pelo desenho lá em cima, podia ser algo como 

  • toda célula a princípio vale zero
  • a matriz em uma dimensão inicial
  • dentro da matriz serão declaradas áreas com certos valores
  • valores podem ter cores associadas

Se a definição formal for essa, um arquivo assim

 

22,22 dimensao
  1,  5, 3, 5, 1 linha coluna largula altura valor
  0, 18, 1, 2, 3
 12, 10, 4, 4, 1
 14, 16, 4, 5, 4 

 

permitiria criar o tal mapa, até com as cores se preciso fosse.

 

Na primeira linha a dimensão e depois os valores. O clássico. Pode ser lido via scanf() em C, pode usar um csv como sugeriu @kgin e importar no Excel.

 

Mas não entendi mesmo. E de todo modo alguém vai desenhar o tal mapa a mão? Não vai ter uma ferramenta? E se vai ter uma ferramenta para desenhar o mapa, como uma frota de batalha naval, a própria ferramenta poderia gerar o código que declara a matriz, em C, em VB para o Excel, em javascript para o Planilhas do Google...

 

 

Link para o comentário
Compartilhar em outros sites

@Gustavo Feijo Se entendi o que quer fazer, é uma forma de gerar a declaração da matriz com os valores das células para colar no código fonte em C. Veja se é isto, com uma macro ou fórmula ficaria assim no formato texto pronto para copiar,

 

int matriz[5][5] = {
    {2, 2, 2, 2, 2},
    {2, 0, 0, 0, 0},
    {2, 0, 0, 0, 0},
    {2, 0, 0, 0, 0},
    {2, 0, 0, 0, 0}
};

 

Por ser um exemplo só considerei 5x5 das primeiras linhas/colunas.

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