elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda con programa que imprime palabra al reves
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con programa que imprime palabra al reves  (Leído 5,514 veces)
Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Duda con programa que imprime palabra al reves
« en: 1 Julio 2013, 19:35 pm »

Buenas!!

Alguien podria ayudarme a compreder este codigo se trata de un programa que imprime una
palabra ingresada al reves

Código
  1. #include<stdio.h>
  2. #include<ctype.h>
  3.  
  4. int g( int n )
  5. {
  6.    int c, d = !EOF;
  7.    while( d != EOF && (c = getchar()) != '\n' && c != EOF )
  8.    {
  9.       if(!isspace( c ) )
  10.       {
  11.          d = g( n+1 );
  12.          putchar( c );
  13.       }
  14.       else d = c;
  15.       if( n > 0 )
  16.        return d;
  17.  
  18.       if(isspace( d ) ) putchar( d );
  19.    }
  20.    return EOF;
  21. }
  22.  
  23. int main( void )
  24. {
  25.    g( 0 );
  26.    putchar('\n');
  27.  
  28.    return 0;
  29. }
  30.  

Gracias  :)


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Duda con programa que imprime palabra al reves
« Respuesta #1 en: 1 Julio 2013, 19:41 pm »

a "comprender"? XD pero todo está ahí... si no sobes que hacen las funciones, la ventaja de las etiquetas queshi es que si haces click en una funcion que posteaste, te abren un link a su definicion :P

por cierto EOF = End Of File

explica puntualmente que no comprendes...


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.
Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Duda con programa que imprime palabra al reves
« Respuesta #2 en: 1 Julio 2013, 19:49 pm »

Especificamnete en esta linea como funciona eso

Código
  1. d = g( n+1 );

Saludos
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Duda con programa que imprime palabra al reves
« Respuesta #3 en: 1 Julio 2013, 19:56 pm »

esa pregunta es mucho mejor :P

es una función autorecursiva... es decir, se llama a si misma y su código se corre como si hubiera llamado cualquier otra función y luego le ingresa el valor a d... por eso se maneja con EOF... para controlar el flujo de llamarse a si misma y que no sea infinito... te recomiendo usar el debugger del sistema que uses para compilar para que veas paso a paso como se mueve... eso creo que te explicaría más dudas que yo :P

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.
Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Duda con programa que imprime palabra al reves
« Respuesta #4 en: 1 Julio 2013, 21:04 pm »

Lo he seguido con gdb, lo que logre entender es que los caracteres se van almacenando en la
pila verdad y luego los recupero pero esta vez al reves, aun me que una duda con los return

Para que sirve este exactamente

Código
  1. return d;

Y el otro

Código
  1. return EOF;

Saludos  :rolleyes:
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Duda con programa que imprime palabra al reves
« Respuesta #5 en: 1 Julio 2013, 21:23 pm »

return es la palabra reservada para que una funcion retorne un valor, al llegar a esta palabra la funcion se detiene sin importar si termino o no...


como g es de tiempo int, debe retornar un entero (como EOF o d)

ejemplo

Código
  1. #include <iostream>
  2. #include <Windows.h>
  3. using namespace std;
  4. int main(){
  5. int a = 1;
  6. if(a==2){
  7.    return 0;
  8. }
  9. cout << "a es diferente de 2, y vale: "<< a << endl;
  10. system("pause");
  11. return 0;
  12. }
  13.  

mira ese codigo... si a es diferente de 2, llegará hasta el final... si a es 2 el return obligará al programa a salir de la funcion "main" y como es unica, el programa finalizará..
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.
SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
Re: Duda con programa que imprime palabra al reves
« Respuesta #6 en: 1 Julio 2013, 22:46 pm »

Yo te dejo una pequeña versión que escribí hace tiempo en C++, por si te interesa o a alguien le sirve de algo ;D

Código
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. void escribe(vector<char>& a){
  6.  for (int i = 0; i < a.size(); i++){
  7.    cout << a[i];
  8.  }
  9.  cout << endl;
  10. }
  11.  
  12. int main(){
  13.  string palabra;
  14.  vector<char> espejo;
  15.  cin >> palabra;
  16.  int tam = palabra.size();
  17.  string::reverse_iterator it = palabra.rbegin();
  18.  for (; it != palabra.rend(); it++){
  19.    espejo.push_back(*it);
  20.  }
  21.  escribe(espejo);
  22.  
  23. }
  24.  

Un saludo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Eliminar Palabra DEMO en Programa « 1 2 3 4 5 »
Ingeniería Inversa
guruangel 47 44,226 Último mensaje 1 Abril 2012, 07:53 am
por slork
Quitar la palabra DEMO de un programa
Software
XArthur 4 2,569 Último mensaje 27 Agosto 2011, 05:38 am
por Di~OsK
Programa que imprime su código
Programación C/C++
N0body 3 1,721 Último mensaje 28 Agosto 2011, 23:49 pm
por madpitbull_99
Duda sobre seleccionar palabra por palabra en RichTextBox (vb.net)
.NET (C#, VB.NET, ASP)
Susoch 3 4,893 Último mensaje 19 Enero 2012, 18:15 pm
por Susoch
Programa en C que imprime los primeros m números perfectos
Programación C/C++
ERIK546 3 19,392 Último mensaje 29 Junio 2012, 21:36 pm
por ERIK546
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines