Autor Tema: Cadena de caracteres con Pila en C  (Leído 118 veces)

Sergio Perez

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Cadena de caracteres con Pila en C
« en: 19 de Septiembre 2021, 00:07 »
Hola buena tarde a todos, espero me puedan orientar o ayudar con lo siguiente:

Me gustaría saber como puedo implementar el siguiente fragmento de código:
Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

main()
{
setlocale(LC_ALL, "spanish");

char cadena[50];

        printf("Escriba una cadena: ");
        scanf(cadena); /* Las cadenas NO llevan & */
       
        gets(cadena);
       
printf("\nLa cadena leída era: \n");
       
        puts(cadena);
       
}

para que trabaje con la estructura de Pila y pueda con ello también hacer lo siguiente:

Citar
Si el carácter es ‘@’, eliminar la última palabra. Por ejemplo, si se tiene la cadena “cadena de caracteres yu378”, la última palabra es “yu378”.
Si el carácter es ‘,’, se elimina el último carácter.
Si el carácter es ‘!’ se eliminan todos los caracteres que se hayan introducido.
Si el carácter es ‘.’ se termina el programa.
Por cada operación realizada se deben mostrar los caracteres que queden.

Espero por favor me puedan ayudar  :(
« Última modificación: 19 de Septiembre 2021, 01:14 por Sergio Perez »

Sergio Perez

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Re: Cadena de caracteres con Pila en C
« Respuesta #1 en: 19 de Septiembre 2021, 15:48 »
Ya le hice algunos cambios pero aun así no se si en realidad lo este aplicando bien, ya que aún así no me marca alertas ni errores el programa.

En la función VerificarCaracteres es donde con condicionales estoy haciendo lo de los caracteres, solo he implementado lo de:

Citar
Si el carácter es ‘!’ se eliminan todos los caracteres que se hayan introducido.
Si el carácter es ‘.’ se termina el programa.

Según yo...

Y aquí esta el código:

Código: [Seleccionar]
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<locale.h>

#define MAX 50

struct nodo {
    char simbolo;
    struct nodo *sig;
};

struct nodo *raiz=NULL;

void insertar(char x)
{
    struct nodo *nuevo;
    nuevo = malloc(sizeof(struct nodo));
    nuevo->simbolo = x;
    if (raiz == NULL)
    {
        raiz = nuevo;
        nuevo->sig = NULL;
    }
    else
    {
        nuevo->sig = raiz;
        raiz = nuevo;
    }
}


char extraer()
{
    if (raiz != NULL)
    {
        char informacion= raiz->simbolo;
        struct nodo *bor = raiz;
        raiz = raiz->sig;
        free(bor);
        return informacion;
    }
    else
    {
        return -1;
    }
}

void liberar()
{
    struct nodo *reco = raiz;
    struct nodo *bor;
    while (reco != NULL)
    {
        bor = reco;
        reco = reco->sig;
        free(bor);
    }
}

int vacia()
{
    if (raiz == NULL)
        return 1;
    else
        return 0;
}

void cargarCadena(char *cadena)
{
    printf("Ingrese la cadena: ");
    gets(cadena);
}

int verificarCaracteres(char *cadena)
{
    int i, j=0;
    char tmpCad[MAX];
   
    for (i=0;i<strlen(cadena);i++)
    {
        if (cadena[i]=='.')
        {
            exit( 0 );
    return 0;
        }
        else
        {
            if (cadena[i]=='!')
            {
                tmpCad[j] = cadena[i];
               
                tmpCad[j] = '\0';

puts(tmpCad);
return 0;
               
            }
            //
        }
        //j++;
    }
    if (vacia())
    {
        return 1;
    }
    else
    {
        return 0;
    }
}


int main()
{

setlocale(LC_ALL, "spanish");

    char cadena[MAX];
    char tmpCad[MAX];
   
    cargarCadena(cadena);
    if (verificarCaracteres(cadena))
    {
        printf("Proceso finalizado con éxito");
    }
    else
    {
        printf("La cadena esta vacia");
       

    }
    liberar();
    getch();
    return 0;
}

Se agradece su valiosa ayuda y orientación por favor...  :-\

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".