Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Sergio Perez 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:
#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:
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 :(
-
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:
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:
#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... :-\