Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/06/2015, 08:44
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: guardar palabras de una oracion en arreglos

Hola:

El programa tiene algunos errores "generales".
Por ejemplo, si estás en C++ deberás usar cstring y no string.h

Además, cout pertenece a la librería iostream, así que lo que tienes no te puede compilar. Y también faltaría añadir el namespace std o anteponer el ámbito std antes de cout std::cout

Por último, en C++ el programa principal es una función de tipo int, no void, y ha de retornar 0.

Bueno, y sobre la duda en cuestión, lo que pones parece demasiado complicado.
Yo lo resolvería así:
Usa 3 contadores, uno para recorrer la frase orígen hasta el final, otro para incrementar el array que guarda cada palabra por separado, y un último para poder asociar cada caracter a copiar dentro del primer array con el segundo.

Y aunque no es lo correcto, te pongo el código explicado:
Código C++:
Ver original
  1. #include <cstring>
  2. #include <iostream>
  3.  
  4. int main()
  5. {
  6.     char cad[80]="esto es un mensaje", copia[80][20];
  7.     int num_palabras=0;
  8.     int pos=0;
  9.     for (int i = 0; i < strlen(cad); i++)
  10.     {
  11.         if (cad[i] == ' ') //si me encuentro un espacio
  12.         {
  13.             copia[num_palabras][pos]='\0';  //Poner un caracter '\0' al final del array que contiene la palabra separada,
  14.                                             //para que la cadena quede bien terminada.
  15.             num_palabras++;                 //Pasaré al siguiente índice del array que contiene las palabras separadas
  16.             pos=0;                          //y al primer indice de éste:            
  17.             i++;                            //me salto ese espacio
  18.         }
  19.         copia[num_palabras][pos]=cad[i];
  20.         pos++;
  21.     }
  22.     copia[num_palabras][pos]='\0'; //añado un '\0' a la última palabra
  23.     //mostrar el resultado
  24.     for (int i=0;i<=num_palabras;i++)
  25.     {
  26.         std::cout<<copia[i]<<std::endl;
  27.  
  28.     }
  29.     return 0;
  30. }
__________________
Mi calculadora en Qt