Ir ao conteúdo
  • Cadastre-se

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


Guilherme Sixe

Posts recomendados

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
Link para o comentário
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.

 

 

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