Ir ao conteúdo
  • Cadastre-se

Preenchimento de Matriz automático e Soma de Matriz com Vetor


Posts recomendados

Olá à todos! Eu estou começando a estudar matrizes em C e atualmente estou com problemas em dois exercícios (resolvi postar os dois num só tópico para evitar dois tópicos, sou novo no fórum e li as regras de maneira muito superficial ainda, peço desculpas inicialmente). 

 

Pois bem, basicamente o primeiro exercício exige que um faça uma Matriz desse tipo: 

 

1 1 1 1 1 1 

1 2 2 2 2 1

1 2 3 3 2 1

1 2 3 3 2 1 

1 2 2 2 2 1

1 1 1 1 1 1

 

Basicamente preciso fazer uma matriz igual a essa de maneira automática, esse é o meu código:

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <locale.h>

main ()
{
  setlocale(LC_ALL,"portuguese");

  int m[6][6], l, c;

  for (l = 0; l < 6; l = l + 1)
  {
    for(c = 0; c < 6; c = c + 1)
    {
    if(l == 0 && c == 5)
    {
      m[l][c] = 2;
    } else if (l == 1 && c == 4)
    {
      m[l][c] = 2;
    } else if (l == 2 && c == 3)
    {
      m[l][c] = 2;
    } else if (l == 3 && c == 2)
    {
      m[l][c] = 2;
    }  else
    {
      m[l][c] = 3;
    }
    }

  }

    for (l = 0; l < 6; l = l + 1)
  {
    for(c = 0; c < 6; c = c + 1)
    {
      if(l == c)
      {
        m[l][c] = 1;
      }
    }

  }
  for (l = 0; l < 6; l = l + 1)
  {
    printf("\n");
    for(c = 0; c < 6; c = c + 1)
    {
    printf("%d",m[l][c]);
    }
  }
  getch();
  return 0;
}

Basicamente o resultado está só imprimindo 1 e nada do que fiz adiantou, tentei usar outros métodos, mas o programa dava crash ou o resultado não mostrava o que era esperado. Já o segundo o problema é mais simples, quero simplesmente imprimir o resultado da soma de uma linha de matriz com um vetor, porém apenas o resultado certo não está sendo mostrado:

 

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <locale.h>

main ()
{
  int m[1][4];
  int v[1];
  int v2[1];
  int l, c, result;

  printf("Matriz (4x4) :\n");
  for (l = 0; l < 1; l = l + 1)
  {
    for(c = 0; c < 4; c = c + 1)
    {
      scanf("%d", &m[l][c]);
      result = result + m[l][c];
    }
    printf("\n");
  }

  printf("\nVetor:\n");
  for (l = 0; l < 1; l = l + 1)
  {
    scanf("%d", &v[l]);
  }


  printf("\nResultado: ");
  for (l = 0; l < 1; l = l + 1)
  {
    v2[l] = v[l] + result;
    printf("%d", v2[l]);
  }
}

 

Link para o comentário
Compartilhar em outros sites

No primeiro exercício o valor de cada casa da matriz é igual a distância para a borda mais próxima (mais 1).

 

Para calcular as distâncias de uma casa até as bordas basta obter o valor absoluto/modulo da subtração entre coordenada da linha ou da coluna e a posição das 2 bordas em sua respectiva dimensão.

 

Digamos que temos uma matriz de dimensão M x N, as distâncias até as bordas de uma casa da matriz com coordenadas i e j (com índices indo de 0 até M-1 e N-1 respectivamente), serão:

 

Distancia até a borda esquerda: | 0 - i | = i

Distancia até a borda direita: | M - 1 - i | = M - 1 - i

Distancia até a borda superior: | 0 - j | = j

Distancia até a borda inferior: | N - 1 - j | = N - 1 - j

 

Mas queremos obter a menor distancia (e somar +1) para guardar na respectiva posição da matriz, logo a lógica será algo do tipo:

Matriz[i][j] = (valor minimo entre i, M-1-i, j e N-1-j) + 1

ou 

Matriz[i][j] = valor minimo entre i+1, M-i, j+1 e N-j

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!