Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Aragorn89 en 9 Diciembre 2008, 11:55 am



Título: Ayuda programita!!!
Publicado por: Aragorn89 en 9 Diciembre 2008, 11:55 am
wenas soy nuevo en esto me gusta mucha la informatica y por eso la estudio jaajaja todo menos programacion...xD aver si me podeis ayudar....

necesito sacar la traza y los valores finales de esto...eske cuando ai punteros y direcciones no tengo nidea aver si podeis ayudarme...e mirado manuales pero no consigo entenderlo aver si sabeis:-)
-------------------------------------------------------------------
int a=0,b=5,*x,*y,i,j;
float r,*pr=&r;
x=&a;y=x;
for(i=1;i<=2;i++)
    for(j=1;j<=3;j++)
        *y=*y+j;
*pr=*x/b;
printf("\n\nValores finales: a:%i,b:%i,r:%f"a,b,c);

-------------------------------------------------------------------


y luego este programita que consiste en que calcule con punteros las suma de los n (n>0 y n<20) primeros terminos de la succesion:



a0=0, an=an-1+2            n>0



GRACIAS



Título: Re: Ayuda programita!!!
Publicado por: willyhunting en 9 Diciembre 2008, 13:45 pm
Los deberes se hacen en casa chaval, y no se pide a los demás que te los hagan.

Si no entiendes los punteros, ya sabes.... a estudiar  :laugh:


Título: Re: Ayuda programita!!!
Publicado por: Aragorn89 en 9 Diciembre 2008, 14:25 pm
Los deberes se hacen en casa chaval, y no se pide a los demás que te los hagan.

Si no entiendes los punteros, ya sabes.... a estudiar  :laugh:

j0as xDDD pos si lo leo y no lo entiendo por eso buskando e encontrao este foro para ver si podiais alguno ayudarme pero ya veo que no... :¬¬


Título: Re: Ayuda programita!!!
Publicado por: AlbertoBSD en 9 Diciembre 2008, 17:25 pm
En que compilador lo estas haciendo, tal vez puedas depurarlo un poco.
Yo no si puedo mas al rato te ayudo, Esque tengo unos problemas con la WinAPI.

Saludos.


Título: Re: Ayuda programita!!!
Publicado por: The_Judgement en 9 Diciembre 2008, 18:15 pm
A ver:

Se declaran punteros a un tipo de datos así: int *x.

Una variable está formada por dos elementos: Su valor y la dirección de memoria donde está almacenado ese valor. En un puntero, el valor es una dirección de memoria que apunta a un bloque de memoria. Si tu tienes el puntero x, haciendo &x obtendrías la dirección de memoria donde está almacenado el valor del puntero. Al igual que una variable normal, si tu pones el nombre accedes al valor de la variable, poniendo x obtendrías la dirección de memoria a la que apunta x. Si tu pones *x, accederías al valor contenido en la dirección de memoria a la que apunta x. Ejemplos:

Código
  1. int a,*x,*y; //He declarado un entero llamado a y dos punteros a entero llamados x e y
  2.  
  3. &x; //Direccion de memoria donde esta almacenado el valor de x
  4. x=&a; //Ahora x apunta a la direccion de memoria donde esta a
  5. if(*x == a) //Esto seria cierto porque con *x accedes al valor de a
  6.        y = x; //Ahora hago que la variable y apunte a donde apunta x, es decir, a 'a'
  7. *y; //Mostraria el valor de a, al igual que x

Ahora aplica esto a tu programa.
Espero que esto te haya podido ayudar un poco a entender punteros, si tienes alguna duda, ponla aquí.

Saludos.



Título: Re: Ayuda programita!!!
Publicado por: Aragorn89 en 9 Diciembre 2008, 19:05 pm
the judgement gracias por tu explicacion pero no menterado de nada soy muy corto para esto ...

uso el dev-c++

lo e puesto asi al programa:

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>

int main (void){
int a=0,b=5,*x,*y,i,j;
float r,*pr=&r;
x=&a;
y=x;
for(i=1;i<=2;i++)
    for(j=1;j<=3;j++)
        *y=*y+j;
*pr=*x/b;
printf("\n\nValores finales: a es %i,b es %i,r es %f",a,b,c);
   getch();
   return 0;
}


y no me funcionaba por el printf final que el "c" lo e cambiado por "r"

y al final me da estos resultados...
a=12
b=5
r=2.000000


esta exo bien el programa y dan los resultados correctos??

lo que me interesa es como sacar esos valores manualmente haciendo la traza

gracias!!!




Título: Re: Ayuda programita!!!
Publicado por: Aragorn89 en 9 Diciembre 2008, 19:10 pm
the judgement gracias por tu explicacion pero no menterado de nada soy muy corto para esto ...

uso el dev-c++

lo e puesto asi al programa:

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>

int main (void){
int a=0,b=5,*x,*y,i,j;
float r,*pr=&r;
x=&a;
y=x;
for(i=1;i<=2;i++)
    for(j=1;j<=3;j++)
        *y=*y+j;
*pr=*x/b;
printf("\n\nValores finales: a es %i,b es %i,r es %f",a,b,c);
   getch();
   return 0;
}


y no me funcionaba por el printf final que el "c" lo e cambiado por "r"

y al final me da estos resultados...
a=12
b=5
r=2.000000


esta exo bien el programa y dan los resultados correctos??

gracias!!!


lo que me interesa es como sacar esos valores manualmente haciendo la traza




Título: Re: Ayuda programita!!!
Publicado por: The_Judgement en 9 Diciembre 2008, 19:27 pm
Sí, el programa está bien hecho, ¿a qué te refieres con sacar la traza? ¿A hacer la ejecución del programa a mano?

Saludos.


Título: Re: Ayuda programita!!!
Publicado por: Aragorn89 en 9 Diciembre 2008, 19:32 pm
Sí, el programa está bien hecho, ¿a qué te refieres con sacar la traza? ¿A hacer la ejecución del programa a mano?

Saludos.

exacto a hacerlo manualmente como ya e dixo nose interpretarlo muy bien jajaja


Título: Re: Ayuda programita!!!
Publicado por: The_Judgement en 9 Diciembre 2008, 19:43 pm
Pues teniendo en cuenta la explicación de punteros que te puse en el otro post, la única forma es que te inventes posiciones de memoria para las variables y hagas el seguimiento del programa. Un ejemplo:

Código:
Direcciones de memoria:
a=0x01
b=0x02
x=0x03
.
.
.

Ejecución del programa:
a=b
Ahora a vale lo que valga b

No se otra forma, pero requiere que intentes entender la explicación de los punteros. Me extraña que hayas hecho tu ese programa si no los entiendes.

Saludos.


Título: Re: Ayuda programita!!!
Publicado por: Aragorn89 en 9 Diciembre 2008, 19:51 pm
Pues teniendo en cuenta la explicación de punteros que te puse en el otro post, la única forma es que te inventes posiciones de memoria para las variables y hagas el seguimiento del programa. Un ejemplo:

Código:
Direcciones de memoria:
a=0x01
b=0x02
x=0x03
.
.
.

Ejecución del programa:
a=b
Ahora a vale lo que valga b

No se otra forma, pero requiere que intentes entender la explicación de los punteros. Me extraña que hayas hecho tu ese programa si no los entiendes.

Saludos.
el programa estaba medio hecho yo lo e acabado

si es asi seria entonces:
y=0x04
i=0x05
j=0x06
r=0x07
???

y los *pr  &r &a *y y *x??no se pondrian??




Título: Re: Ayuda programita!!!
Publicado por: The_Judgement en 9 Diciembre 2008, 23:27 pm
Los punteros también se pondrían. Los punteros son en realidad variables con su valor y dirección de memoria propios. También deberías poner el valor de cada variable al inicio:

Variable  Direcciones de memoria  Valor inicial
a             0x00                               0
b             0x01                               5
x             0x10                               Indefinido
.
.
.

Ejecución del programa:
x=&a; La variable x tiene ahora valor 0x00
.
.
.


Más o menos es un ejemplo.

Saludos.


Título: Re: Ayuda programita!!!
Publicado por: draco_er en 10 Diciembre 2008, 01:08 am
la trazas o tabla de trazas consiste en rutear todos los valores del programa ... paso a paso o linea  a linea...
entonces empieza leyendo un manual sobre punteros... luego... empieza uno a uno a sacar sus valores....
colocas las varibles(todas ) y su valor inicial.. si no les asignaste nada tienen basura... ten siempre en cuenta eso...
asi podes hacerlo... para imprimir la direccion de memoria .. de unn puntero creo que es con el & para valores de cualquier tipo ... o imprime el puntero nu mas
suerte...
nota... te recomiendo si no entiendes colocar un printf en cada linea imprimiedote los valores de cada linea asi podras saber lo que pasa ....asi lo hacia al principio yop


Título: Re: Ayuda programita!!!
Publicado por: Aragorn89 en 10 Diciembre 2008, 11:00 am
vale ya me ha quedado un poco mas claro judgement!!!

alguien sabe un manual para punteros??


Título: Re: Ayuda programita!!!
Publicado por: Spider-Net en 10 Diciembre 2008, 11:16 am
Estudia un poco macho porque no te enteras de nada xD


Título: Re: Ayuda programita!!!
Publicado por: Aragorn89 en 10 Diciembre 2008, 13:39 pm
Estudia un poco macho porque no te enteras de nada xD

joder es muy chungo esto xDDD y encima el profesor dice bueno hacer programas sabes??xDD lo pone en la pizarra no dice nada o casi nada y pretende que lo hagamos como si fuesemos dioses de la programacion xDDD

bueno alguien sabe un manual de punteros o de c(que tenga tambien un apartado de punteros) para tontos??porque sino no lo cojo ni a la de tres macho xDD


Título: Re: Ayuda programita!!!
Publicado por: The_Judgement en 10 Diciembre 2008, 19:22 pm
Se que mi explicación puede no estar muy clara, pero el ejemplo que te puse me parece que lo aclara bastante, si no entiendes el ejemplo, ponte a estudiar todo lo anterior. Ten en cuenta que lo más complicado que tiene C son los punteros y para entenderlos requiere tener una base de todo lo anterior que supongo habrás dado, como por ejemplo, qué significa declarar una variable, dónde se reserva la memoria de las variables declaradas, etc.

Acerca de un manual de C o de punteros no conozco, porque yo lo estudié en la universidad, así que mi manual eran los apuntes. No te creas que eres el único que al principio no se entera de punteros, eso si, requiere bastante dedicación e interés por tu parte.

Saludos.


Título: Re: Ayuda programita!!!
Publicado por: Aragorn89 en 11 Diciembre 2008, 12:10 pm
Se que mi explicación puede no estar muy clara, pero el ejemplo que te puse me parece que lo aclara bastante, si no entiendes el ejemplo, ponte a estudiar todo lo anterior. Ten en cuenta que lo más complicado que tiene C son los punteros y para entenderlos requiere tener una base de todo lo anterior que supongo habrás dado, como por ejemplo, qué significa declarar una variable, dónde se reserva la memoria de las variables declaradas, etc.

Acerca de un manual de C o de punteros no conozco, porque yo lo estudié en la universidad, así que mi manual eran los apuntes. No te creas que eres el único que al principio no se entera de punteros, eso si, requiere bastante dedicación e interés por tu parte.

Saludos.

sisi si esta bien explicado lo unico que me cuesta un poco pero bueno...ya e encontrado un tutorial de C con punteros me lo estudiare punto a punto jajaj vengaaa gracias gentee!!!


Título: Re: Ayuda programita!!!
Publicado por: Bomb-P en 16 Septiembre 2012, 09:12 am
C++ Es demasiado complicado  :silbar:
en mi opinion python es mejor y mas facil de aprender... y muy importante...
Es un lenguage de alto nivel :)


Título: Re: Ayuda programita!!!
Publicado por: Don Pollo en 16 Septiembre 2012, 15:19 pm
joder es muy chungo esto xDDD y encima el profesor dice bueno hacer programas sabes??xDD lo pone en la pizarra no dice nada o casi nada y pretende que lo hagamos como si fuesemos dioses de la programacion xDDD

bueno alguien sabe un manual de punteros o de c(que tenga tambien un apartado de punteros) para tontos??porque sino no lo cojo ni a la de tres macho xDD

No hace falta ser un dios para comprender el código que os ha puesto. Sólo hace falta poner un poco de atención y ganas de aprender.

Aquí tienes un tutorial de punteros (en inglés): http://www.cplusplus.com/doc/tutorial/pointers/