es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  , , ,

Answer

  1. Avatar for 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 utilizar memmove 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;
    }
    }
    }
    }
    }

Comments are closed.