Autor
|
Tema: Duda con programa que imprime palabra al reves (Leído 7,712 veces)
|
Blaster
Desconectado
Mensajes: 190
|
Buenas!! Alguien podria ayudarme a compreder este codigo se trata de un programa que imprime una palabra ingresada al reves #include<stdio.h> #include<ctype.h> int g( int n ) { int c, d = !EOF; while( d != EOF && (c = getchar()) != '\n' && c != EOF ) { { d = g( n+1 ); } else d = c; if( n > 0 ) return d; } return EOF; } int main( void ) { g( 0 ); return 0; }
Gracias
|
|
|
En línea
|
|
|
|
engel lex
|
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 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
Mensajes: 190
|
Especificamnete en esta linea como funciona eso d = g( n+1 );
Saludos
|
|
|
En línea
|
|
|
|
engel lex
|
esa pregunta es mucho mejor 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
|
|
|
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
Mensajes: 190
|
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 return d;
Y el otro return EOF;
Saludos
|
|
|
En línea
|
|
|
|
engel lex
|
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 #include <iostream> #include <Windows.h> using namespace std; int main(){ int a = 1; if(a==2){ return 0; } cout << "a es diferente de 2, y vale: "<< a << endl; system("pause"); return 0; }
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
Mensajes: 137
Bazinga!
|
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 #include <iostream> #include <vector> using namespace std; void escribe(vector<char>& a){ for (int i = 0; i < a.size(); i++){ cout << a[i]; } cout << endl; } int main(){ string palabra; vector<char> espejo; cin >> palabra; int tam = palabra.size(); string::reverse_iterator it = palabra.rbegin(); for (; it != palabra.rend(); it++){ espejo.push_back(*it); } escribe(espejo); }
Un saludo
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Eliminar Palabra DEMO en Programa
« 1 2 3 4 5 »
Ingeniería Inversa
|
guruangel
|
47
|
51,319
|
1 Abril 2012, 07:53 am
por slork
|
|
|
Quitar la palabra DEMO de un programa
Software
|
XArthur
|
4
|
3,869
|
27 Agosto 2011, 05:38 am
por Di~OsK
|
|
|
Programa que imprime su código
Programación C/C++
|
N0body
|
3
|
2,716
|
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
|
7,104
|
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
|
22,408
|
29 Junio 2012, 21:36 pm
por ERIK546
|
|