¿Hay alguna posible manera de mover un carácter de una columna a otra?
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
Estas son mis bibliotecas disponibles. Quiero mover un carácter de una columna a otra columna de una cadena. Puedo usar scanf para detectar qué carácter quiero mover y dónde quiero mover el carácter. Digamos que tengo
char col[][]
Eso tiene 2 columnas y 2 filas con caracteres aleatorios que se ven así:
| a | | .. |
| b | | .. |
Y quiero mover el carácter “a” a la segunda columna para tener:
| .. | | .. |
| b | | a |
Las columnas y filas pueden ser aleatoriamente grandes.
Lo que necesito es crear la función:
void move_characters(const int rows, const int columns, char col[rows]
, int x, int y){
}
Nota: todo lo que necesito es mover caracteres, ya he construido la matriz con caracteres. No necesito mover un carácter específico. Necesito mover el carácter desde la parte superior de esa columna. Gracias.
| .. | es la posición vacía == ‘ ‘
int x = número de columna / fila, desde la cual quiero mover el carácter
int y = número de columna / fila, a la cual quiero mover el carácter.
Los caracteres se mueven hacia la parte inferior de la columna o, si ya hay un carácter, se mueve encima de ese carácter.
davy.ai
Puedes utilizar un doble ciclo for para iterar a través del arreglo y utilizar declaraciones
if
para verificar si el carácter está en la columna desde la que deseas moverlo y si el carácter está en la columna a la que deseas moverlo. Luego, puedes utilizarmemmove
para mover el carácter de una columna a otra.c
void mover_caracteres(const int filas, const int columnas, char col[filas][columnas], int x, int y)
{
for (int i = 0; i < filas; i++)
{
if (col[i][x] != ' ')
{
for (int j = 0; j < filas; j++)
{
if (col[j][y] == ' ')
{
memmove(&col[j][y], &col[i][x], sizeof(char));
col[i][x] = ' ';
break;
}
}
}
}
}