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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Palabra con numeros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Palabra con numeros  (Leído 1,365 veces)
Jesusm1229

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Palabra con numeros
« en: 28 Junio 2015, 02:17 am »

Buenas chicos, cómo les va? Tengo un programa que puede parecer bastante tonto pero en el cual  me estoy ahogando. Dicho programa consiste en que, a partir de una frase pedida por el usuario, muestre las que están conformadas solamente por números, me explico: el usuario escribe: "la casa 23 es mas bonita que la 56 y la 5+6", el programa debe mostrar 23 y 56 pero no 5+6, puesto que tiene un operador aritmético.

La cuestión es que lo sé hacer, pero sin punteros, y precisamente me lo piden con ellos. Creen que me puedan explicar cómo hacerlo. No les estoy pidiendo que me hagan la tarea, sólo pido una ayuda, por favor. Les estaría muy agradecido.


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Palabra con numeros
« Respuesta #1 en: 28 Junio 2015, 02:45 am »

fuera de la tecnica especifica

para hacer esto te recomiendo...

toma el string, avanza hasta el primer espacio y guarda, a eso recorrelo, si tiene caracteres entre '0' y '9' unicamente es numero, lo guardas aparte, si tiene otro caracter, lo descartas, luego vas al siguiente espacio y repites hasta llegar al \0


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: Palabra con numeros
« Respuesta #2 en: 28 Junio 2015, 05:41 am »

Bueno te dejo esta version hecha en c, el codigo no esta tan limpio como deberia pero te dara una idea en c++ es mucho mejor la implementacion

Código
  1. #include <stdio.h>
  2.  
  3.  
  4.  
  5. void fPalabrasNumeros2(char *palabra){
  6.  
  7.     char almacen[255];
  8.     int entro=0;
  9.     int i=0;
  10.     int cont=0;
  11.     for(i=1;i<strlen(palabra);i++){
  12.  
  13.        if((isdigit(palabra[i]) && isdigit(palabra[i+1])||(isdigit(palabra[i]) && isdigit(palabra[i-1]))
  14.            || (isdigit(palabra[i]) && palabra[i+1]==' '&& palabra[i-1]==' '))){
  15.          entro=1;                              
  16.          almacen[cont]=palabra[i];
  17.          almacen[cont+1]='\0';
  18.          cont++;
  19.        }
  20.        else if(entro==1){
  21.            entro=0;
  22.            almacen[cont]=' ';
  23.            almacen[cont+1]='\0';
  24.            cont++;  
  25.        }
  26.     }
  27.  
  28.     printf("%s",almacen);
  29. }
  30.  
  31. int main(int argc, char *argv[])
  32. {
  33.  
  34.  char *palabra="la casa 23 es mas bonita que la 56 y la 5+6";
  35.  fPalabrasNumeros2(palabra);
  36.  
  37.  getchar();
  38.  return 0;
  39. }



Edito:
te dejo otra opcion usando funciones como strcpy y strcat

Código
  1. #include <stdio.h>
  2.  
  3.  
  4.  
  5. void fPalabrasNumeros2(char *palabra){
  6.  
  7.     char almacen[255];
  8.     int entro=0,i=0;
  9.     char *x=malloc(sizeof(char));
  10.     strcpy(almacen,"");
  11.  
  12.     for(i=1;i<strlen(palabra);i++){
  13.  
  14.        if((isdigit(palabra[i]) && isdigit(palabra[i+1])||(isdigit(palabra[i]) && isdigit(palabra[i-1]))
  15.            || (isdigit(palabra[i]) && palabra[i+1]==' '&& palabra[i-1]==' '))){
  16.          entro=1;                              
  17.          *x=palabra[i];
  18.          strcat(almacen,x);
  19.        }
  20.        else if(entro==1){
  21.            entro=0;
  22.            *x=' ';
  23.            strcat(almacen,x);
  24.        }
  25.     }
  26.  
  27.     printf("%s",almacen);
  28.     free(x);
  29. }
  30.  
  31. int main(void)
  32. {
  33.  
  34.  char *palabra="la casa 23 es mas bonita que la 56 y la 5+6";
  35.  
  36.  
  37.  fPalabrasNumeros2(palabra);
  38.  
  39.  getchar();
  40.  return 0;
  41. }

« Última modificación: 28 Junio 2015, 06:04 am por crack81 » En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
Jesusm1229

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Palabra con numeros
« Respuesta #3 en: 28 Junio 2015, 12:47 pm »

Buenas, gracias a ambos por su ayuda, fue muy util. Aunque hice el programa no es como lo necesitaba...
Código:

#include <iostream.h>
#include <conio.h>
#include <stdio.h>

void LeerFrase(char f[])
{cout<<"Ingrese una frase: ";
 gets(f);
 }

 int ContArit(char f[])
 {int i,cont;
  for(i=0, cont=0;f[i]!=NULL;i++)
if(f[i]=='*' || f[i]=='/' || f[i]=='+' || f[i]=='-'|| f[i]=='%')
cont ++;
return cont;
  }


 void PalNum(char f[])
 {int i;
  for(i=0;f[i]!=NULL;i++)
{if ((f[i]==48 || f[i]==49 || f[i]==50|| f[i]==51|| f[i]==52|| f[i]==53|| f[i]==54|| f[i]==55|| f[i]==56|| f[i]==57) && (f[i+1]==48 || f[i+1]==49 || f[i+1]==50|| f[i+1]==51|| f[i+1]==52|| f[i+1]==53|| f[i+1]==54|| f[i+1]==55|| f[i+1]==56|| f[i+1]==57)  || (f[i]==48 || f[i]==49 || f[i]==50|| f[i]==51|| f[i]==52|| f[i]==53|| f[i]==54|| f[i]==55|| f[i]==56|| f[i]==57) && (f[i-1]==48 || f[i-1]==49 || f[i-1]==50|| f[i-1]==51|| f[i-1]==52|| f[i-1]==53|| f[i-1]==54|| f[i-1]==55|| f[i-1]==56|| f[i-1]==57) || (f[i]==48 || f[i]==49 || f[i]==50|| f[i]==51|| f[i]==52|| f[i]==53|| f[i]==54|| f[i]==55|| f[i]==56|| f[i]==57) && (f[i+1]==32 || f[i+1]==32 || f[i+1]==32|| f[i+1]==32|| f[i+1]==32|| f[i+1]==32|| f[i+1]==32 || f[i+1]==32|| f[i+1]==32|| f[i+1]==32) && (f[i-1]==32 || f[i-1]==32 || f[i-1]==32|| f[i-1]==32|| f[i-1]==32|| f[i-1]==32|| f[i-1]==32|| f[i-1]==32|| f[i-1]==32|| f[i-1]==32))
cout<<f[i];
if(f[i]==32)
  cout<<" ";
   
  }}




 void main()
 {int i, cont;
 char frase[50];
 LeerFrase(frase);
 cout<<"Los aritmeticos son: "<<ContArit(frase);
 cout<<"\nLas palabras numericas son:"; PalNum(frase);
 }

Funciona pero el codigo se ve engorroso y dificil de leer...
En línea

Jesusm1229

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Palabra con numeros
« Respuesta #4 en: 28 Junio 2015, 13:00 pm »

fuera de la tecnica especifica

para hacer esto te recomiendo...

toma el string, avanza hasta el primer espacio y guarda, a eso recorrelo, si tiene caracteres entre '0' y '9' unicamente es numero, lo guardas aparte, si tiene otro caracter, lo descartas, luego vas al siguiente espacio y repites hasta llegar al \0

el problema es cómo sé que son sólo numeros simplemente con un recorrido...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Seleccionar Palabra por Palabra
Programación Visual Basic
RickJack 6 4,456 Último mensaje 15 Septiembre 2008, 23:47 pm
por RickJack
Como hacer /una/palabra/ en vez de ?1=una&2=palabra « 1 2 3 »
PHP
dimitrix 20 7,105 Último mensaje 14 Enero 2010, 00:24 am
por dimitrix
contar caracteres de una palabra y devolver que palabra es en java
Java
Cooltan 4 22,253 Último mensaje 6 Abril 2011, 12:21 pm
por Cooltan
Duda sobre seleccionar palabra por palabra en RichTextBox (vb.net)
.NET (C#, VB.NET, ASP)
Susoch 3 4,804 Último mensaje 19 Enero 2012, 18:15 pm
por Susoch
insertar palabra por palabra a una matriz
Programación C/C++
Fabi0lo 3 2,263 Último mensaje 20 Octubre 2012, 18:17 pm
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines