Convertir formato R1C1 a formato A1

En una hoja de cálculo Excel tenemos cada celda denotada por su fila y columna en formato R1C1 o en formato A1.

El formato R1C1 indica el número de fila y el número de columna. Por ejemplo, R23C55 significa la fila 23 y la columna 55.

En el formato A1, a cada columna se le asigna un código, basado en permutaciones del alfabeto. Considere las primeras 26 columnas, cada una de ellas se nombra de la A a la Z. La siguiente columna (es decir, la columna 27) sería AA, y AB, AC, etc. Por ejemplo, BC23 significaría la columna BC, que es la columna 55 y la fila 23, que por supuesto es la fila 23.

Necesito convertir una entrada del formulario R1C1 en una salida del formulario A1. Por ejemplo, R23C55 sería BC23 donde BC es la salida correspondiente para 55.

He hecho un código para convertir un número de columna dado a su formato A1.

#include  #include  int main() { int column,temp,i=0; char col[5]; scanf("%d",&column); temp=column; while(temp!=0) { if(temp%26==0) { col[i]='Z'; i++; } else { col[i]=(temp%26)-1+'A'; i++; } temp=(temp-1)/26; } col[i]='\0'; strrev(col); puts(col); return 0; } 

Puedo convertir un número de entrada 55 a su salida BC. Pero no puedo proceder con un código para convertir R23C55 a BC23. ¿Cómo tomo la entrada R23C55, extraigo los números 23 y 55, y doy salida del formulario BC23?

 #include void g(int t){if(t){g((t-1)/26);putchar(65+(t-1)%26);}} int main(){ int n,x,y; char s[64]; fgets(s,64,stdin); if(sscanf(s,"R%dC%d",&x,&y)==2){ g(y); printf("%d\n",x); } return 0; } 

Este progtwig hace precisamente lo que quieres. La lógica es clara a partir del código.

Revisa este enlace para aprender sobre sscanf() sscanf

Aquí para su uso scanf (“R% dC% d”, ..) también funcionará. Pero he usado sscanf () para proporcionarle una manera que será útil si se requiere más procesamiento.

Digamos que el formato de entrada es

 4 R23C45 R24C55 R2C4 R12C45 

entonces podrías tomarlos de esta manera-

 fgets(s,64,stdin); sscanf(s,"%d",&n); for(i=0;i 

Creo que simplemente podrías analizar la cadena RxCy con scanf :

 int main() { int column, row, cr,temp,i=0; char col[5]; cr = scanf("R%dC%d",&row, &column); /* if cr == 2, row and column containing the coordinates */ ...