|
|
La Taberna Un lugar para conversar sobre casi cualquier tema |
|
Thread Tools | Display Modes |
03-25-2013, 09:00 PM | #1 |
Pledge
Join Date: Apr 2007
Posts: 0
|
Ayuda con un programa en C :(
Buenos dias/tardes/noches dependiendo del horario en que lo lean, sabiendo de que aquí hay mucha gente que sabe mucho de programación , queria que me ayuden con un porgrama que me tiene a maltraer desde hace 2 horas que no lo puedo hacer funcionar como quiero, soy principiante en esto, asique para los mas expertos supongo que esto sera pan comido.
El enunciado es: dada una frase en una cadena, mostrar en pantalla cada palabra que la compone SIN USAR LAS FUNCIONES ESTANDAR. Yo hice esto: #include <stdio.h> #define MIN 30 int valido=1; void palabra(char[],char[]); int main(){ char a[]={"Dada una frase en una cadena mostrar en pantalla cada palabra que la compone"}; char b[MIN]; int i; extern int valido; for(i=0;valido;i++){ palabra(a,b); printf("La palabra %d es: %s\n",i+1,b); } } void palabra(char a[],char b[]){ int i,j=0; extern int valido; static int n=0; for(i=n;a[i]!=' ' && a[i]!='\t' && a[i]!='\n' && a[i]!=',';i++){ b[j++]=a[i]; if(a[i]=='\0'){ valido=0; break; } } n=i+1; } La cuestión es que me muestra cualquier cosa en pantalla y hace dos horas que lo vengo tratando de corregir y no puedo encontrar el error. Espero que me puedan ayudar. Desde ya muchas gracias a todos. |
03-26-2013, 02:17 AM | #2 |
Master
Join Date: May 2006
Location: Esperando a Caliope.
Posts: 335
|
El problema que estás teniendo creo que es que al crear el vector b[MIN] se esta creando con basura de la memoria por eso aparece lleno con esos símbolos raros.
Si lo creas arriba del main() solucionas eso, pero el otro problema que tendrás es que: el vector se carga con "dada" la muestra correctamente pero luego el vector se carga con "una" pisando las tres primeras de la anterior cargada. Por lo tanto cuando lo muestres mostrará "unaa" con doble "a" puesto que la segunda "a" queda de la palabra anterior. Dicho de otra forma, así como está el programa, debes resetear el vector b cada vez que le cargas una nueva palabra.
__________________
---- Kitsune => Conju 60 狐 Descubre que riqueza te rodea sin pensar un instante en su valor.
|
03-26-2013, 08:52 PM | #3 | |
Pledge
Join Date: Oct 2010
Posts: 23
|
2 cosas: en principio tenes q recordar de q si definís a main como int entonces estas obligado a devolver un valor entero al final. lo segundo, acostumbrate a pasar punteros en vez de arreglos. me tome la molestia de modificar tu código agregando una función propia. obvio q esta es una forma de hacerlo, no necesariamente la mejor:
Quote:
__________________
"...y siempre estuve orgulloso de que no fueras un enano." Abuelo Simpson
|
|
|
|