ayuda con un problema en c

pedro sevilla
29 de Junio del 2006
Hola, ojala alguien me pueda ayudar, os paso el enunciado y hasta donde he llegado yo en codigo fuente, gracias:
P4. a) Cree una función a la cual se le pasarán tres argumentos: dos cadenas de caracteres llamadas palabra y frase, y un número
entero num. La función copiará en la cadena palabra la palabra cuyo orden en la cadena frase está indicado por num. De esta forma
si num vale 1 se copiará la primera palabra de la frase, si num vale 4 se copiará la cuarta, etc. En el caso de que no haya tantas
palabras en la frase como el valor de num, la función deberá de devolver NULL, y en otro caso la cadena palabra.
b) Usando la función anterior y la creada en el problema 1, cree una función que reciba una cadena, y elimine de ella aquellas
“palabras” que puedan ser interpretadas como números enteros o decimales (use atoi y atof). Para ello la función recibirá dos
argumentos llamados destino y original, que serán dos cadenas de caracteres, procesando la cadena original de la forma indicada y
escribiendo el resultado en la cadena destino. La función strcat le puede ser muy útil para implementar la función. Un ejemplo del
procesamiento de esta función puede ser el siguiente:
· original: “A las 00.00 del 31 de Diciembre de 2006 nos comeremos las 12 uvas de la suerte”.
· copia: “A las del de Diciembre de nos comeremos las uvas de la suerte”.
c) Escriba un programa que demuestre el funcionamiento de la función creada anteriormente

----y esto he hecho yo,ahi me quedo-------

#include <stdio.h>
#include <string.h>
#define MAX 80

void funcion(char[],char[],int);

void main(void){
char palabra[MAX],frase[MAX];
int num;
printf("Introduzca la frase: \n");
gets(frase);
printf("Ahora introduzca la posicion que ocupa la palabra a copiar: \n");
scanf("%d",&num);
funcion(palabra,frase,num);


getch();
}

void funcion(char palabra[MAX],char frase[MAX],int num){
int i,j,es=0,npalabras,maxesp;
for(i=0;frase[i]!=\'\0\';i++)
if(frase[i]==32)
es=es+1;

npalabras=es+1;
printf("%d espacios %d numero de palabras\n",es,npalabras);
if(num>npalabras)
printf("NULL");
else if(num==1){
for(i=0;frase[i]!=32;i++)
palabra[i]=frase[i];
palabra[i]=\'\0\';
for(i=0;palabra[i]!=\'\0\';i++)
printf("%c ",palabra[i]);
}else{
for(i=0;i<num;i++)
if(frase[i]==32)
pos=num-1;
for(i=0;frase[i]!=\'\0\';i++)
if(esp==1&&)

luis
29 de Junio del 2006
ese problema, vamos unos parecido lo tuve yo en un exam final, pero ahora no te puedo decir8-)

dcordero
29 de Junio del 2006
Mirate la funcion strtok.

A esa funcion le pasas una cadena y un caracter y te devuelve la cadena original hasta que encuentra ese caracter...

Es decir que si le pasas como caracter un espacio y como cadena tu cadena puedes ir sacando las palabras de la frase una a una como churritos :-)

pedro sevilla
29 de Junio del 2006
la funcion de mi problema recibe un entero, el cual me da la posicion de la palabra a copiar en la cadena palabra, con lo cual si me dijese copiar la 7ª palabra de la cadena frase en la cadena palabra, tendria que ir contando espacios incrementado a un contador hasta num-1 para hayar el espacio desde donde tengo que empezar a copiar o algo asi???

dcordero
29 de Junio del 2006
Si recibes un 1 tienes q hacer un strtok con tu cadena y el espacio.

Si recibes un 2 tienes q hacer 1 strtok para kitar la primera palabra y otro strtok para conseguir la segunda. Total 2 strtok

Si recibes un 3 tienes q hacer 3 strtok

etc... etc...

eso es un for simplito desde 0 hasta < numero q recibes con un strtok en medio.

La ultima palabra q tienes al salir del for es la palabra q necesitas...