Ir ao conteúdo
  • Cadastre-se
Guilherme Sixe

Coordenada na matriz usando string ex: a3 = linha 1 e coluna 3.

Recommended Posts

Preciso buscar elementos em uma matriz, mas eu não posso entrar com as coordenadass como inteiro (Ex: scanf("%d %d", &linha, &coluna);), e sim como uma char e um inteiro na forma de string (Ex: A3 = Linha 1 e Coluna 3).

EX:

for(i=0;i<5;i++){
  for(j=0;j<5;j++){
 	 mat[i][j]=i;
  }
}

//Diga o elemento que se encontra na Mat[2][3], usando string "A1" para linha 1 Coluna 1, "B2", para Linha2 Coluna 2 e assim sucessivamente
                  

Gostaria de saber como eu lendo uma string A1 ele pode associar que essa e a linha 1 e coluna 1 da matriz? 

A=1

B=2

C=3

D=4

I=5

 

Eu tentei ler primeiro str[0] (que seria A, e assim eu associava o A a 1 com um "if") mas eu nao consigo fazer isso com o str[1] e associar a um inteiro pois ele intende que esse "1" e um char, e nao uma inteiro. Como posso estar fazendo isso? Ler uma string do formato LetraNumero e associar a uma coordenada na matrioz. Nao sei se eu consegui me expressar bem.

 

Obrigado desde ja.

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Guilherme Sixe Método bem complicado hein, tente usar uma struct de coordenadas, ajuda bastante.

 

adicionado 1 minuto depois

@Guilherme Sixe Você pode fazer (int)str[1] == 1 para "enganar" a linguagem

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na memória chars são nada mais que números inteiros com pelo menos 8 bits, o que significa que você pode usá-lo como números inteiros no programa, seja realizando operações ou imprimindo como valores inteiros.

 

Abaixo eu fiz um programa pra demonstrar isto, sendo que ele primeiro imprime as chars como chars e depois como inteiros:

 

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

int main()
{
    char maiusculas[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
         minusculas[27] = "abcdefghijklmnopqrstuvwxyz",
         numeros[11] = "0123456789";
    int i;
    
    printf ("Letras maiusculas:\n");
    for (i=0; maiusculas[i] != '\0'; i++) {
        printf("%c   ", maiusculas[i]);
    }
    printf("\n");
    for (i=0; maiusculas[i] != '\0'; i++) {
        printf("%d  ", maiusculas[i]);
    }
    

    printf ("\n\nLetras minusculas:\n");
    for (i=0; minusculas[i] != '\0'; i++) {
        printf("%c   ", minusculas[i]);
    }
    printf("\n");
    for (i=0; minusculas[i] != '\0'; i++) {
        printf("%d ", minusculas[i]);
        if (minusculas[i]<100)
            printf(" ");
    }
    

    printf ("\n\nNumeros:\n");
    for (i=0; numeros[i] != '\0'; i++) {
        printf("%c   ", numeros[i]);
    }
    printf("\n");
    for (i=0; numeros[i] != '\0'; i++) {
        printf("%d  ", numeros[i]);
    }
    
    printf("\n");

    return 0;
}

Saída:

Letras maiusculas:
A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z
65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90

Letras minusculas:
a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z
97  98  99  100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

Numeros:
0   1   2   3   4   5   6   7   8   9
48  49  50  51  52  53  54  55  56  57

 

Então é possível fazer operações como:

 

char resultado;
resultado = 'C' - 'A';

Que quando impresso como inteiro retornaria 2 como resultado.

 

Logo, o que você precisa fazer pra transformar uma letra maiúscula em um número maior que 0 que indica a coluna seria algo assim:

int coluna;
char coordenadas[3] = "D3";
coluna = coordenadas[0] - 'A' + 1;

Que deverá resultar que coluna = 4.

 

 

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

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

×