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 - Caster

#351
Pues te lo he hecho asi como favor, porque me aburria  :xD :xD La calidad no es muy bueno, pero es lo que me salio, espero que te valga.



Saludos
#352
A ver, rand() genera una lista de numeros aleatorios, pero siempre son los mismos, hasta ahi creo que es asi, y entonces se llama a srand() para que empiece por otro numero y cambie la secuencia, pero si esto se repite volveriamos al problema del principio, a generar siempre la misma sucesion aun utilizando srand(), entonces para que esto no pase se le pasa una semilla que cambie cada cierto tiempo.

¿Lo he entendido bien?

Si estoy en lo cierto entonces, en mi programa como la semilla siempre es la misma, al final tambien terminarian repitiendose las suceciones, ¿es cierto?

Gracias por el codigo leosansan, me ha ayudado bastante

Saludos y muchas gracias.

EDITO: A la pregunta que hago sobre mi programa, estoy en lo cierto, en cada ejecucion se repiten las misma sucesiones. Creo que ya lo entiendo todo perfectamente.

EDITO 2: Me surge otra pregunta, utilizar srand() sin semilla y srand() pero con una semilla que no cambie, es realmente lo mismo no?

Muchas gracais
#353
En el libro que estoy leyendo sobre C, venia un ejemplo de un programa de como utilizar funciones, aqui el programa:

la funcion main:

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

#define SEMILLA 12345

void juego(void);
int tirada(void);

int main() {

char respuesta = 'S';

printf("Bienvenido al juego CRAPS\n\n");
printf("Para lanzar los dados, pulsa Intro\n\n");

srand(SEMILLA);

while (toupper(respuesta) != 'N') {
juego();
printf("\nDeseas jugar de nuevo? (S/N) ");
scanf(" %c", &respuesta);
printf("\n");

}
printf("Adios, que lo pases bien");
}


la funcion juego:

void juego(void) {

int puntos1;
int puntos2;
char nada;

printf("\nPor favor lanza los dados...");
scanf("%c", &nada);
printf("\n");
puntos1 = tirada();
printf("\n%2d", puntos1);

switch(puntos1) {

case 7:
case 11:

printf(" - Felicidades! Ganaste a la primera tirada\n");
break;

case 2:
case 3:
case 12:

printf(" - Lo siento! Perdiste en la primera tirada\n");
break;

case 4:
case 5:
case 6:
case 8:
case 9:
case 10:

do {

printf(" - Lanza los dados de nuevo...");
scanf("%c", &nada);
puntos2 = tirada();
printf("\n%2d", puntos2);
} while (puntos2 != puntos1 && puntos2 != 7);

if (puntos2 == puntos1)
printf(" - Ganas por igualar tu primera tirada\n");
else
printf(" - Pierdes por no igualar tu primera tirada");
break;
}
return;
}


la funcion tirada:

int tirada(void)  {

float x1;
float x2;
int n1;
int n2;

x1 = rand() / 32768.0;
x2 = rand() / 32768.0;

n1 = 1 + (int) (6 * x1);
n2 = 1 + (int) (6 * x2);

return(n1 + n2);
}


Entiendo todo perfectamente, pero donde me pierdo es en las funciones rand() y srand(), en la funcion tirada entiendo todas las operaciones que se hacen en ella para obtener los numeros, lo que no entiendo es para que se utiliza la funcion srand() y la constante SEMILLA, en el libro viene explicado pero no logro entenderlo, si alguien me lo puede explicar de alguna forma mas facil, gracias,


Saludos
#354
Programación C/C++ / Re: Problema con funcion
30 Septiembre 2012, 08:59 AM
Ya funciona perfectamente, muchas gracias a los dos.

Saludos
#355
Programación C/C++ / Re: ¿ Como utilizar %n ?
30 Septiembre 2012, 08:57 AM
Pues yo lo he compilado con MinGW por consola para Windows y no daba el resultado esperado.

Saludos
#356
Programación C/C++ / Problema con funcion
30 Septiembre 2012, 00:02 AM
Pues en el libro que estoy leyendo he empezado con las funciones y para ir probando intente cambiar un codigo que tenia yo, usando una funcion, aqui el codigo original:

#include <stdio.h>

int main() {

   int i;
   char cadena [80];
   scanf("%s%c", cadena);
   for (i=0;cadena [i]!='\0';i++);
   printf ("\nEl texto tiene %d caracteres.\n",i);
   printf ("\nPresione ENTER para salir:");
   while (getchar()!='\n')
       ;
   return 0;
}


Y aqui el codigo usando una funcion:

#include <stdio.h>

int contador(int i, char letras){
i = 0;
for (i=0;letras [i]!='\0';++i);
return i;

}

int main() {

   int x;
   char cadena [80];
   scanf("%s%c", cadena);
   x = int contador(int i, char cadena);
   printf ("\nEl texto tiene %d caracteres.\n", x);
   printf ("\nPresione ENTER para salir:");
   while (getchar()!='\n')
       ;
   return 0;
}


Al compilarlo el segundo, me da los sigueintes errores:

En la funcion 'contador': 12:19: el valor del subindice no es ni matriz ni puntero ni vector

22:9 error: expected expression before 'int'

El primer fallo creo lo entiendo, se refiere al subindice de letras, letras, pero no entiendo el fallo, el segundo ya ni idea.

Saludos
#357
Programación C/C++ / Re: ¿ Como utilizar %n ?
29 Septiembre 2012, 22:46 PM
Aaah vale vale, ya me quedo claro, muchas gracias.

Saludos
#358
Programación C/C++ / Re: ¿ Como utilizar %n ?
29 Septiembre 2012, 22:36 PM
Cita de: leosansan en 29 Septiembre 2012, 22:28 PM
La salida es :
3.141590 3490
The above line contains 13 characters.


Eso deberia ser lo correcto, pero a mi no me sale eso.

Saludos.
#359
Programación C/C++ / Re: ¿ Como utilizar %n ?
29 Septiembre 2012, 22:15 PM
He probado a cambiar el tipo de numChar, he probado con float, double, cadena de caracteres, etc pero sigue dando mal el resultado.

Saludos
#360
Programación C/C++ / Re: ¿ Como utilizar %n ?
29 Septiembre 2012, 21:39 PM
Pues es simple, muestra el numero de caracteres escritos hasta donde esté "%n". Aunque yo estoy probando este codigo:

#include <stdio.h>

int main() {

int numChars;
        int a = 1;
        int b = 12;

        printf("%d %d\n %n", a, b, &numChars);
        printf("The above line contains %d characters.\n", numChars);

return 0;
}


Y no me da bien el resultado, no se por qué.

Saludos