Ir ao conteúdo
  • Cadastre-se

ler uma matriz principal, e armazenar os valores em uma matriz auxiliar.


Posts recomendados

Beleza?

Estou preso nessa  questão, você conseguem me ajudar?

 

"Bom dia, estou com duvida de como armazenar esses valores lido de uma matriz [][] principal, e coloca-los em uma matriz auxliar.

 

Sei que tenho que usar 2 laços " for ", mas não sei como armazenar esses, valores

 

Sendo mais especifico estou tentando fazer automatos celulares greenberg hasting, e preciso ler uma celular da matriz e ler tambem seus vizinhos
Mas não sei como armazenar essas informações na matriz auxiliar. 

 

Tenho que fazer igual na foto abaixo, alguém me ajuda pfv, a conseguir ler e armazenar esses valores em uma matriz auxiliar sem alterar a matriz principal"

 

image.png

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

@devair1010 mano, por favor... me da uma luz do próximo passo q eu tenho q fazer para transformar o 2 em 1 e as casas vizinhas em 2 

 


   


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

    for (int i=0; i<5; i++){
        for (int j=0; j<5; j++){

 

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

20 horas atrás, João Vitor Pinheiro dos Sa disse:

ainda não fiz o código, comecei definindo a matriz inicial mas depois disso eu fiquei perdido 

 

O que seria "definir a matriz inicial"?

 

  • Você tem 4 regras apenas, e elas se aplicam a todas as células
  • Você tem um exemplo completo
  • Matriz inicial pode ser qualquer uma
  • Você só tem 3 estados possíveis.
  • Provavelmente estaria melhor representado por algo como * X e espaço que fica mais f;acil de ver
  • desenhar os blocos coloridos é mais bonitinho 🙂 
  • É mais fácil considerar as matrizes como atual e proxima ou par e impar e ir alternando

 

E basta um loop pelas linhas e colunas e para cada célula definir como ela estará na geração seguinte, usando as 4 simples regras e o valor atual dela. 

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

@João Vitor Pinheiro dos Sa    transformar o 2 em 1 e as casas vizinhas em e 2 ,  pode ser assim  

#include <stdio.h>
int escreve( int n[5][5] );
int main()
{
  int j = 0;
  int i = 0;
  int     n    [5][5] =
  {
    0 , 0 , 0 , 0 , 0 ,
    0 , 0 , 0 , 2 , 0 ,  /// 2 = preta
    0 , 0 , 0 , 0 , 0 ,  /// 0 = branco
    0 , 0 , 0 , 0 , 0 ,  /// 1 = cinza
    0 , 0 , 0 , 0 , 0//
  };
  escreve( n );
  for(    i=0; i<5; i++ )
  {
    for ( j=0; j<5; j++ )
    {
      if( n[i][j] == 2 )
      {
                n[i  ][j] = 1;
        if(i>0) n[i-1][j] = 2;
        if(i<5) n[i+1][j] = 2;
        if(j>0) n[i][j-1] = 2;
        if(j<5) n[i][j+1] = 2;
        i = 5;
        break;
      }
    }
  }
  escreve( n );
  return 0;
}
int escreve( int n[5][5] )
{
  int j,i;
  printf("\n");
  for(    i=0; i<5; i++ )
  {
    for ( j=0; j<5; j++ )
    {
      printf("%3d" , n[i][j] );
    }
    printf("\n");
  }
}

mas não entendi o que o enunciado está pedindo , não  ,  ., ,,,

Link para o comentário
Compartilhar em outros sites

27 minutos atrás, devair1010 disse:
  for(    i=0; i<5; i++ )
  {
    for ( j=0; j<5; j++ )
    {

 

Dclare as variáveis de controle do loop DENTRO do loop a menos que a lógica não permita. 

 

Não é saudável ter variáveis com nomes ingênuos como i e j soltas, globais na função. Isso só dá erro. E nem todos seus programas vão ter 20 linhas.

 

Em relação aos loops entenda que precisa tratar os casos em que as células não tem tantos vizinhos assim, nas bordas ou nos cantos.

 

O comum nesses casos tipo Game of Life é ter uma função que recebe uma geração e devolve a próxima.

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

@arfneto   gosto de usar o code::blocks e ele não aceita declarar as variáveis dentro do loop ,  e também o código já estava assim  e deixei desse jeito mesmo , 

if(i>0) n[i-1][j] = 2;
if(i<5) n[i+1][j] = 2;
if(j>0) n[i][j-1] = 2;
if(j<5) n[i][j+1] = 2;

 coloquei essa validação para não ultrapassar as bordas

 

Link para o comentário
Compartilhar em outros sites

46 minutos atrás, devair1010 disse:

code::blocks e ele não aceita declarar as variáveis dentro do loop

 

Acho  até que já te expliquei isso antes @devair1010. Mas por certo muitas vezes escrevi isso aqui nesse forum: Code::Blocks é só um IDE. Um IDE fraco. Não é um compilador.

 

Se ele "não aceita"  isso é porque está configurado errado para a versão de C anterior a 1989. Não acha um pouco antigo? Não acha que a linguagem evoliui nesses anos? Não acha que deve ser simples atualizar isso? Deve sim. É bem melhor agora. 

O que fazer? Apenas coloque lá nas opções do compilador algo como -std=c17 por exemplo. E passa a valer para todos os projetos. Em C++ use C++20. No mesmo lugar

 

Documentação do compilador para essa opção

 

52 minutos atrás, devair1010 disse:

e também o código já estava assim  e deixei desse jeito mesmo

 

3 horas atrás, João Vitor Pinheiro dos Sa disse:
 for (int i=0; i<5; i++){
        for (int j=0; j<5; j++){

 

Não, não estava.

 

55 minutos atrás, devair1010 disse:
if(i>0) n[i-1][j] = 2;
if(i<5) n[i+1][j] = 2;
if(j>0) n[i][j-1] = 2;
if(j<5) n[i][j+1] = 2;

 coloquei essa validação para não ultrapassar as bordas

 

 

Acho que não está certo. E vai testar para todas as células e não é bom assim.

 

Faça o contrário: o simples. São poucas situações:

  • primeira e última coluna
  • primeira e última linha
  • 4 cantos
  • o resto

Então apenas trate os casos. Ao invés de testar TODAS as células para as mesmas condições TRATE as condições para as células.

 

 

  • 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!