elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pilas de caracteres en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pilas de caracteres en C  (Leído 3,833 veces)
Boris Morales

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Pilas de caracteres en C
« en: 19 Septiembre 2021, 15:58 pm »

Hola buen día a todos, espero me puedan orientar o ayudar con lo siguiente:

Me gustaría saber como puedo implementar el siguiente código:

Código:
#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 supone debe cumplir 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

En la función VerificarCaracteres se supone ya hace 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.
Pero no se si lo este aplicando bien, aunque el programa no me arroja advertencias o errores.

Y si me pudieran ayudar u orientar con lo demás se los agradecería bastante...


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Pilas de caracteres en C
« Respuesta #1 en: 19 Septiembre 2021, 18:20 pm »

Citar
Por cada operación se deben mostrar los caracteres que queden.
Según entiendo se debe mostrar la cadena procesada hasta ese momento. Pero cuando encuentras el '.' cierras el programa directamente.
Para el '!' escribes un '\0' (que te machaca el carácter que has escrito anteriormente), muestras tmpCad (recuerda que solo tiene '\0') y regresas de la función sin mirar los demás caracteres.

Además tienes toda una pila que no usas para nada. ¿Estás seguro que debes usar el array tmpCad para el ejercicio?


« Última modificación: 19 Septiembre 2021, 18:22 pm por MAFUS » En línea

Boris Morales

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Pilas de caracteres en C
« Respuesta #2 en: 19 Septiembre 2021, 18:59 pm »

Hola MAFUS

Pues en teoría se supone que el tmpCad me ayuda a vaciar la cadena principal, dandole valores de '0' para vaciarla según la condición.

Y también quiero ver como poder sustituir la que no se usa con la princpial
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Pilas de caracteres en C
« Respuesta #3 en: 19 Septiembre 2021, 20:55 pm »

Usa el stack.
Por ejemplo con la cadena 'mi caso,a.' tiene que ocurrir esto:
'm': la introduzco al stack. stack: 'm'
'i': la introduzco al stack. stack: 'mi'
' ': la introduzco al stack. stack: 'mi '
'c': la introduzco al stack. stack: 'mi c'
'a': la introduzco al stack. stack: 'mi ca'
's': la introduzco al stack. stack: 'mi cas'
'o': la introduzco al stack. stack: 'mi caso'
',': borro el ultimo elemento del stack. stack: 'mi cas'
'a': la introduzco al stack.  stack: 'mi casa'
'.': dejo de procesar la cadena. stack: 'mi casa'

Por tanto debes hacer uso del stack que te han proporcionado para realizar el trabajo.
Además deberás inventar algo para poder imprimir la cadena que hay guardada en la stack en orden y sin vaciarla.

Espero que así explicado veas que no hay que usar ese array auxiliar. Si sabes usar un stack (el ejercicio está pensado para eso) no te será difícil.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Alguien sabe buscar palabra de x caracteres y los demás caracteres a continuació
Programación Visual Basic
usuario oculto 3 5,031 Último mensaje 2 Agosto 2010, 18:36 pm
por Psyke1
Pilas en c++
Programación C/C++
GABETORAP 3 2,664 Último mensaje 2 Diciembre 2011, 01:56 am
por .:UND3R:.
Pilas en c++
Programación C/C++
GABETORAP 1 1,916 Último mensaje 2 Diciembre 2011, 05:41 am
por [L]ord [R]NA
Pilas c++
Programación C/C++
vandamy 7 2,197 Último mensaje 22 Abril 2017, 00:48 am
por vandamy
Pilas
Java
padiuwu 1 1,705 Último mensaje 18 Marzo 2019, 20:28 pm
por spcruzaley
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines