Ejercicios y practicas de programación en c resueltos o con solución
El ejercicio planteado es el siguiente:
Prácticas: Analizador de frases.
Se plantea especificar una frase en la cual se pueden encontrar diferentes separadores en la misma. el símbolo “:” dos puntos, serviría para especificar una orden, el símbolo “,” coma permite especificar parámetros separados entre si por dicho símbolo, el símbolo “;” punto y coma permite especificar comentarios y el espacio en blanco se utiliza para separar otro tipo de texto en la frase, el ejercicio ha de visualizar las palabras que conforman la frase separadas según el tipo de separador que tengan.
La solución de los ejercicios que se plantean es la siguiente:
/*
Nuevos ejercicios de programación con solución propuestos por un lector del
blog www.aprendoencasa.com, en esta ocasión las prácticas resueltas a realizar
consiste ense plantea especificar una frase en la cual se pueden encontrar
diferentes separadores en la misma. el símbolo “:” dos puntos, serviría para
especificar una orden, el símbolo “,” coma permite especificar parámetros
separados entre si por dicho símbolo, el símbolo “;” punto y coma permite
especificar comentarios y el espacio en blanco se utiliza para separar otro
tipo de texto en la frase, el ejercicio ha de visualizar las palabras que
conforman la frase separadas según el tipo de separador que tengan.
Volver a comentar que seguro que existen otros tipos de soluciones a los
ejercicios aquí propuestos y estaré agradecido si queréis realizar algún
tipo de comentario o plantear alguna solución nueva al ejercicio resuelto que
aquí se plantea.
Gracias por visitar www.aprendoencasa.com y www.aprendoencasa.es
*/
// Librerias a utilizar
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
// Variables a utilizar
// Cadena que almacena el texto introducido max 200 caract.
char Entrada[200];
// Cadena para almacenar la copia de la cadena con la que se trabaja
char Copia[200];
// Cadena para almacenar los comentarios
char Comentarios[200];
// Cadena para almacenar las ordenes
char Ordenes[200];
// cadena para almacenar parametros
char Parametros[200];
// Cadena que almacenara una palabra
char Palabra[50];
// Matriz que almacenara hasta 20 palabras
char Palabras[20][50];
// Cadena que almacena los separadores de palabras posibles
char Separadores[10];
// Guardar posiciones
int posicion;
int cuenta1;
int cuenta2;
// Puntero que almacena la cadena conforme se separa
char *Puntero;
// errores
int error;
// Solicitar la cadena
// Visualizar el mensaje
printf("Cadena Texto: ");
// limpiar el buffer de teclado
rewind(stdin);
// solicitar la cadena
gets(Entrada);
// Copiar la cadena
strcpy(Copia,Entrada);
// Saber si existen comentarios y guardarlos
error = 0;
Puntero = strstr(Copia,";");
while(Puntero!=NULL) {
error++;
posicion = Puntero-Copia+1;
Puntero = strstr(Puntero+1,";");
}
// saber si hay mas de un comentario o no, si hay mas de uno se
// considera que hay un error
if (error!=1) {
printf("Se han encontrado errores en la entrada ");
exit;
} else {
printf("\nSe han encontrado comentarios en %d\n",posicion);
printf("Son los siguientes %s",Copia+posicion);
sprintf(Comentarios,"%s",Copia+posicion);
printf("\nComentarios Almacenados : %s",Comentarios);
}
// Saber si existe un comando en la cadena si hay mas de uno se
// considera que hay un error
error = 0;
Puntero = strstr(Copia,":");
while(Puntero!=NULL) {
error++;
posicion = Puntero-Copia+1;
Puntero = strstr(Puntero+1,":");
}
if (error!=1) {
printf("Se han encontrado errores en la entrada ");
exit;
} else {
printf("\nSe han encontrado ordenes en %d\n",posicion);
strncpy(Palabra,Copia,posicion-1);
Palabra[posicion-1]='/*
Nuevos ejercicios de programación con solución propuestos por un lector del
blog www.aprendoencasa.com, en esta ocasión las prácticas resueltas a realizar
consiste ense plantea especificar una frase en la cual se pueden encontrar
diferentes separadores en la misma. el símbolo “:” dos puntos, serviría para
especificar una orden, el símbolo “,” coma permite especificar parámetros
separados entre si por dicho símbolo, el símbolo “;” punto y coma permite
especificar comentarios y el espacio en blanco se utiliza para separar otro
tipo de texto en la frase, el ejercicio ha de visualizar las palabras que
conforman la frase separadas según el tipo de separador que tengan.
Volver a comentar que seguro que existen otros tipos de soluciones a los
ejercicios aquí propuestos y estaré agradecido si queréis realizar algún
tipo de comentario o plantear alguna solución nueva al ejercicio resuelto que
aquí se plantea.
Gracias por visitar www.aprendoencasa.com y www.aprendoencasa.es
*/
// Librerias a utilizar
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
// Variables a utilizar
// Cadena que almacena el texto introducido max 200 caract.
char Entrada[200];
// Cadena para almacenar la copia de la cadena con la que se trabaja
char Copia[200];
// Cadena para almacenar los comentarios
char Comentarios[200];
// Cadena para almacenar las ordenes
char Ordenes[200];
// cadena para almacenar parametros
char Parametros[200];
// Cadena que almacenara una palabra
char Palabra[50];
// Matriz que almacenara hasta 20 palabras
char Palabras[20][50];
// Cadena que almacena los separadores de palabras posibles
char Separadores[10];
// Guardar posiciones
int posicion;
int cuenta1;
int cuenta2;
// Puntero que almacena la cadena conforme se separa
char *Puntero;
// errores
int error;
// Solicitar la cadena
// Visualizar el mensaje
printf("Cadena Texto: ");
// limpiar el buffer de teclado
rewind(stdin);
// solicitar la cadena
gets(Entrada);
// Copiar la cadena
strcpy(Copia,Entrada);
// Saber si existen comentarios y guardarlos
error = 0;
Puntero = strstr(Copia,";");
while(Puntero!=NULL) {
error++;
posicion = Puntero-Copia+1;
Puntero = strstr(Puntero+1,";");
}
// saber si hay mas de un comentario o no, si hay mas de uno se
// considera que hay un error
if (error!=1) {
printf("Se han encontrado errores en la entrada ");
exit;
} else {
printf("\nSe han encontrado comentarios en %d\n",posicion);
printf("Son los siguientes %s",Copia+posicion);
sprintf(Comentarios,"%s",Copia+posicion);
printf("\nComentarios Almacenados : %s",Comentarios);
}
// Saber si existe un comando en la cadena si hay mas de uno se
// considera que hay un error
error = 0;
Puntero = strstr(Copia,":");
while(Puntero!=NULL) {
error++;
posicion = Puntero-Copia+1;
Puntero = strstr(Puntero+1,":");
}
if (error!=1) {
printf("Se han encontrado errores en la entrada ");
exit;
} else {
printf("\nSe han encontrado ordenes en %d\n",posicion);
strncpy(Palabra,Copia,posicion-1);
Palabra[posicion-1]='\0';
printf("Son los siguientes %s",Palabra);
sprintf(Ordenes,"%s",Palabra);
printf("\nOrdenes Almacenadas : %s",Ordenes);
}
// buscamos los parametros utilizando otra forma de analizar la cadena
// caracter a caracter
printf("\n--------------------------------\n");
strcpy(Copia,Entrada);
Puntero = strstr(Copia,",");
if (Puntero!=NULL) {
int posi=Puntero-Copia;
while(Copia[posi]!=' ') posi--;
posi++;
while(Copia[posi]!=' ') {
if(Copia[posi]!=',') {
printf("%c",Copia[posi]);
} else {
printf(" ");
}
posi++;
}
}
printf("\n--------------------------------\n");
printf("\n************************\n");
// Establecer los separadores de palabras posibles, el separador
// punto y coma se trata a parte ya que se considera que a partir del
// mismo en adelante en la cadena todo es un comentario
strcpy(Separadores,";");
// Realizar la separacion del primer token utilizando el punto y coma
// de esta forma se consigue separar el texto valido de lo que son
// comentarios en la cadena de texto
Puntero = strtok( Copia, Separadores ); // Primera llamada => Primer token
// Visualizar la cadena modificada
strcpy(Separadores," ");
Puntero = strtok( Copia, Separadores ); // Primera llamada => Primer token
sprintf(Parametros,"%s",Puntero);
if (strstr(Parametros,":")==NULL && strstr(Parametros,";")==NULL && strstr(Parametros,",")==NULL)
printf("\n%s",Parametros);
while( (Puntero = strtok( NULL, Separadores )) != NULL ) {
sprintf(Parametros,"%s",Puntero);
if (strstr(Parametros,":")==NULL && strstr(Parametros,";")==NULL && strstr(Parametros,",")==NULL)
printf("\n%s",Parametros);
} // Posteriores llamadas
printf("\n************************\n");
// www.aprendoencasa.com
// www.aprendoencasa.es
system("PAUSE");
return 0;
}
';
printf("Son los siguientes %s",Palabra);
sprintf(Ordenes,"%s",Palabra);
printf("\nOrdenes Almacenadas : %s",Ordenes);
}
// buscamos los parametros utilizando otra forma de analizar la cadena
// caracter a caracter
printf("\n--------------------------------\n");
strcpy(Copia,Entrada);
Puntero = strstr(Copia,",");
if (Puntero!=NULL) {
int posi=Puntero-Copia;
while(Copia[posi]!=' ') posi--;
posi++;
while(Copia[posi]!=' ') {
if(Copia[posi]!=',') {
printf("%c",Copia[posi]);
} else {
printf(" ");
}
posi++;
}
}
printf("\n--------------------------------\n");
printf("\n************************\n");
// Establecer los separadores de palabras posibles, el separador
// punto y coma se trata a parte ya que se considera que a partir del
// mismo en adelante en la cadena todo es un comentario
strcpy(Separadores,";");
// Realizar la separacion del primer token utilizando el punto y coma
// de esta forma se consigue separar el texto valido de lo que son
// comentarios en la cadena de texto
Puntero = strtok( Copia, Separadores ); // Primera llamada => Primer token
// Visualizar la cadena modificada
strcpy(Separadores," ");
Puntero = strtok( Copia, Separadores ); // Primera llamada => Primer token
sprintf(Parametros,"%s",Puntero);
if (strstr(Parametros,":")==NULL && strstr(Parametros,";")==NULL && strstr(Parametros,",")==NULL)
printf("\n%s",Parametros);
while( (Puntero = strtok( NULL, Separadores )) != NULL ) {
sprintf(Parametros,"%s",Puntero);
if (strstr(Parametros,":")==NULL && strstr(Parametros,";")==NULL && strstr(Parametros,",")==NULL)
printf("\n%s",Parametros);
} // Posteriores llamadas
printf("\n************************\n");
// www.aprendoencasa.com
// www.aprendoencasa.es
system("PAUSE");
return 0;
}
El resultado del ejercicio ha de ser similar al que se muestra a continuación.
Gracias por vuestra visita y un saludo!!!