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
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:
Cita de: 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:
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... :¬¬
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.
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:
int a,*x,*y; //He declarado un entero llamado a y dos punteros a entero llamados x e y
&x; //Direccion de memoria donde esta almacenado el valor de x
x=&a; //Ahora x apunta a la direccion de memoria donde esta a
if(*x == a) //Esto seria cierto porque con *x accedes al valor de a
y = x; //Ahora hago que la variable y apunte a donde apunta x, es decir, a 'a'
*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.
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!!!
Cita de: 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??
gracias!!!
lo que me interesa es como sacar esos valores manualmente haciendo la traza
Sí, el programa está bien hecho, ¿a qué te refieres con sacar la traza? ¿A hacer la ejecución del programa a mano?
Saludos.
Cita de: 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.
exacto a hacerlo manualmente como ya e dixo nose interpretarlo muy bien jajaja
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:
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.
Cita de: 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:
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??
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.
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
vale ya me ha quedado un poco mas claro judgement!!!
alguien sabe un manual para punteros??
Estudia un poco macho porque no te enteras de nada xD
Cita de: Spider-Net en 10 Diciembre 2008, 11:16 AM
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
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.
Cita de: 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.
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!!!
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 :)
Cita de: Aragorn89 en 10 Diciembre 2008, 13:39 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/