Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Lucas Assunção de Sousa

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

Recommended Posts

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]);
  }
}

 

Compartilhar este post


Link para o post
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

 

Editado por isrnick

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×