Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


ayuda por favor

Preguntas y respuestas sobre el lenguaje de programacion C/C++

ayuda por favor

Notapor vportalg el Mar Ene 30, 2007 4:54 pm

hola!,necesito realizar un programa que lea una frase y cambie el orden de las palabras al escribirla de tal manera que la primera palabra sea la última y viceversa. Por ejemplo:

"La casa de la pradera"

se transformaría en:

"pradera la de casa La"

la idea del ejercicio es ir leyendo cada una de las palabras y guardandolas en una cadena de caracteres.
el problema es que no se como decirle al programa que cada vez que encuentre un espacio en blanco me guarde esa palabra y en el siguiente espacio me guarde la siguiente para luego cambiarlas de orden si alguien me puede hechar una mano le estaria muy agradecido, gracias
vportalg
Novato
Novato
 
Mensajes: 2
Registrado: Mar Ene 30, 2007 12:41 pm

Re: ayuda por favor

Notapor latindeveloper el Mar Ene 30, 2007 6:03 pm

Hola,

no es necesario que implementes un programa para que te interprete cada palabra (tokenizador), puedes utilizar las mismas herramientas del lenguaje.

si utilizas C++:

Código: Seleccionar todo
char palabra[100];

while(cin>>palabra)
{
   cout<<palabra<<endl;
}



si utilizas C:

Código: Seleccionar todo
char palabra[100];

while(scanf("%s",palabra)  !=  EOF)
{
   printf("%s\n",palabra);
}


Nota para ambos casos: Si el programa obtiene las entradas del teclado entonces debes presionar Ctrl + Z (DOS/Windows) para terminar.

Te recomiendo que la entrada este en un archivo de texto, asi te ahorras estar escribiendo cada vez:

Código: Seleccionar todo
c:\...\tuprograma.exe < archivo_de_texto_que_contiene_la_entrada.txt
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Notapor vportalg el Mar Ene 30, 2007 9:27 pm

esto es lo que llevo de codigo para este programa en el "else" se supone que es donde se detecta que hay una palabra mi idea es copiar cada palabra a un array lista[] con la funcion strcpy para despues imprimirlo al reves mi problema es que no se como ir pasando las palabras al array si alguien me puede hechar una mano con esa parte de codigo o tiene alguna manera mejor de acerlo me aria un gran favor

codigo:
void main()
{
//int j=0;
int npal=0; //numero de palabras
char frase[100];
char lista[100];
char c;
int i;
//int tam;

cout << "introduce una cadena de caracteres... " << endl;
cin.getline(frase,100);
//tam=strlen(frase);
int j=0;
do {

if(frase[i]!= ' ')
{
j++; //avanzo posicion
}
else
{
npal++;

}
}
while (j<tam);
vportalg
Novato
Novato
 
Mensajes: 2
Registrado: Mar Ene 30, 2007 12:41 pm


Volver a C/C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados