Ayuda programita!!!

Iniciado por Aragorn89, 9 Diciembre 2008, 11:55 AM

0 Miembros y 1 Visitante están viendo este tema.

Aragorn89

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


willyhunting

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:

Aragorn89

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... :¬¬

AlbertoBSD

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.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

The_Judgement

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.

Sacred Powers, cast your purifying light upon this corrupt souls, rest in peace sinners!, JUDGEMENT!!!

Aragorn89

#5
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!!!



Aragorn89

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



The_Judgement

Sí, el programa está bien hecho, ¿a qué te refieres con sacar la traza? ¿A hacer la ejecución del programa a mano?

Saludos.
Sacred Powers, cast your purifying light upon this corrupt souls, rest in peace sinners!, JUDGEMENT!!!

Aragorn89

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

The_Judgement

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.
Sacred Powers, cast your purifying light upon this corrupt souls, rest in peace sinners!, JUDGEMENT!!!