Autor
|
Tema: Palabra con numeros (Leído 2,046 veces)
|
Jesusm1229
Desconectado
Mensajes: 11
|
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
|
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
Mensajes: 222
|
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 #include <stdio.h> void fPalabrasNumeros2(char *palabra){ char almacen[255]; int entro=0; int i=0; int cont=0; for(i=1;i<strlen(palabra);i++){ || (isdigit(palabra [i ]) && palabra [i +1]==' '&& palabra [i -1]==' '))){ entro=1; almacen[cont]=palabra[i]; almacen[cont+1]='\0'; cont++; } else if(entro==1){ entro=0; almacen[cont]=' '; almacen[cont+1]='\0'; cont++; } } } int main(int argc, char *argv[]) { char *palabra="la casa 23 es mas bonita que la 56 y la 5+6"; fPalabrasNumeros2(palabra); return 0; }
Edito: te dejo otra opcion usando funciones como strcpy y strcat #include <stdio.h> void fPalabrasNumeros2(char *palabra){ char almacen[255]; int entro=0,i=0; for(i=1;i<strlen(palabra);i++){ || (isdigit(palabra [i ]) && palabra [i +1]==' '&& palabra [i -1]==' '))){ entro=1; *x=palabra[i]; } else if(entro==1){ entro=0; *x=' '; } } } int main(void) { char *palabra="la casa 23 es mas bonita que la 56 y la 5+6"; fPalabrasNumeros2(palabra); return 0; }
|
|
« Ú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
Mensajes: 11
|
Buenas, gracias a ambos por su ayuda, fue muy util. Aunque hice el programa no es como lo necesitaba... #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
Mensajes: 11
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con Seleccionar Palabra por Palabra
Programación Visual Basic
|
RickJack
|
6
|
5,391
|
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
|
9,681
|
14 Enero 2010, 00:24 am
por dimitrix
|
|
|
contar caracteres de una palabra y devolver que palabra es en java
Java
|
Cooltan
|
4
|
23,535
|
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
|
6,656
|
19 Enero 2012, 18:15 pm
por Susoch
|
|
|
insertar palabra por palabra a una matriz
Programación C/C++
|
Fabi0lo
|
3
|
3,326
|
20 Octubre 2012, 18:17 pm
por rir3760
|
|