Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - The_Judgement

#1
Programación C/C++ / Re: Ayuda programita!!!
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.
#2
Programación C/C++ / Re: Ayuda programita!!!
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.
#3
Programación C/C++ / Re: Ayuda programita!!!
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.
#4
Programación C/C++ / Re: Ayuda programita!!!
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.
#5
Programación C/C++ / Re: Ayuda programita!!!
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:

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.

#6
Si necesitas ayuda con mi código, di en qué partes e intentaré explicártelas.

Yo en clase uso Dev-C++, pero a la hora de usar el debugger y el editor de textos me quedo con el Visual Studio 2005, así que en casa uso Visual Studio. Yo creo que lo mejor es aprender a usar el Dev-C++ por que la forma de programar en él es más estándar y normalmente el código que programes en Dev-C++ será compatible con otros compiladores.

Saludos.
#7
Bueno, yo lo he intentado compilar en el Dev-C++ y para este compilador he encontrado varios errores:

-int main (void) en vez de void main ().

-La biblioteca stdafx.h no la tengo y creo que sobra si en vez de usar scanf_s usas scanf.

-En la línea en la que pones el contador a 3 te falta un ; al final.

-El bucle for que usas es absurdo usarlo teniendo un do while que hace lo mismo.

-El contador no tiene sentido al no incrementar cada vez que introduces un número.


Este código lo he hecho yo hará un tiempo, creo que es parecido:

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

//PROTOTIPOS
void presentacion (void);
void modulo_principal (int,int *);

int main (void)
{
//DECLARACIÓN DE VARIABLES
int numero_aleatorio;
int numero;

srand(time(0));
numero_aleatorio = 512*(rand()%1001/(float)1000);
modulo_principal(numero_aleatorio,&numero);
system("pause");
return 0;
}

void presentacion (void)
{
system("cls");
printf("*************************************************************************\n");
printf("\t\t\t\tMASTERMIND\n");
printf("*************************************************************************\n");
printf("Adivine el número que el ordenador ha pensado en 9 intentos. El número está comprendido entre 0 y 512\n");
}

void modulo_principal (int numero_aleatorio, int *numero)
{
int intentos = 0;
do
{
        presentacion();
        printf("Este es el %dº intento\n", intentos+1);
printf("Introduzca el número: ");
scanf("%d", &*numero);
if(*numero < numero_aleatorio)
{
printf("Lo siento, el número que he pensado es mayor que %d\n", *numero);
++intentos;
system("pause");
}
if(*numero > numero_aleatorio)
{
printf("Lo siento, el número que he pensado es menor que %d\n", *numero);
++intentos;
system("pause");
}
}while(intentos != 9 && numero_aleatorio != *numero);
if(*numero == numero_aleatorio)
{
printf("¡Enhorabuena! El número que había pensado es %d\n",numero_aleatorio);
printf("Has usado %d intentos.\n", intentos+1);
}
else
printf("Lo siento, ha perdido. El número era %d\n", numero_aleatorio);
}


Espero que te ayude.

Saludos.