En el segundo, fatal. No se debe usar gotoJAMÁS. No hay nunca necesidad de hacerlo, así que arregla eso antes de que te banee
Re: [Curso] Introducción a la programación en C (IX)
Publicado: 17 Oct 2010, 05:17
por Dante
Ahora que hice el ejercicio.... me pregunto si los concurso que hacen aquí en daxhordes son de la misma manera ¿¿¿???... sera por eso que ninguna vez e ganado??? mmm... me hace sospechar. Ejercicio 1
printf("Estos son los digitos de tu numero de loteria: %d\n", num); printf("En unos momentos daremos los numeros de la loteria ganadora de Maxhordes de hoy.\n"); printf("Buena suerte...\n"); getchar();
srand(time(NULL)); win = (rand() % 99999) + 1;
printf("Y los numeros de hoy son: %d.\n", win);
if(num != win) { printf("Mala suerte, no ganas nada.\n"); }
else { printf("Aunque parecia imposible, tu eres el ganador.\n"); }
return 0; }
ok, arreglado, todo sin goto no lo volvere a hacer jajaja. Ejercicio 2
int main(int argc, char* argv[]) { int dado_maquina, dado_humano;
printf("Vamos a jugar a los dados... ¿Te atreves a jugar contra mí?\n"); printf("Yo tiro primero. Presiona una tecla para dejarme tirar el dado.\n"); getchar();
PD: Te quería preguntar si es posible tomar capturas de la pantalla en la psp con el HBL, porque hace rato revisando mis imágenes, note que hay algunas de cuando estoy en el menu.
Re: [Curso] Introducción a la programación en C (IX)
Publicado: 17 Oct 2010, 13:19
por m0skit0
Dante escribió:me pregunto si los concurso que hacen aquí en daxhordes son de la misma manera ¿¿¿???... sera por eso que ninguna vez e ganado??? mmm... me hace sospechar.
MUJAJAJAJAJA morirás por haber desvelado el secreto
Dante escribió:Ejercicio 1
Sigue estando igual... Si el número premiado es 00025, imprimrá 25 en vez de 00025.
Dante escribió:Ejercicio 2
No uses for y break cuando puedes usar while.
Dante escribió:Ejercicio 3
Dante escribió:dado_maquina = (rand() % 6) + 2;
Que yo sepa un dado no tiene un 7
Saludos y buen trabajo
Re: [Curso] Introducción a la programación en C (IX)
printf("Estos son los digitos de tu numero de loteria: %d%d%d%d%d.\n", dig[0],dig[1],dig[2],dig[3],dig[4]); printf("En unos momentos daremos los numeros de la loteria ganadora de Maxhordes de hoy.\n"); printf("Buena suerte...\n"); getchar();
int main(int argc, char* argv[]) { int dado_maquina, dado_humano;
printf("Vamos a jugar a los dados... ¿Te atreves a jugar contra mí?\n"); printf("Yo tiro primero. Presiona una tecla para dejarme tirar el dado.\n"); getchar();
Mal. Declaras un array de 4 elementos y lo rellenas con 5 Ten en cuenta que al declarar un vector, le indicas cuántos elementos tiene, y no cuál es el máximo índice. C no te avisa de estas cosas debido a su flexibilidad. Este tipo de fallos es el que permite los exploits en los juegos, por ejemplo, ya que dig[4] está fuera de la memoria reservada por el SO y es posible que sobrescriba algo importante. En un programa tan pequeño como éste no influye, pero si el programa manejara gran cantidad de datos, podría fallarte algún día en un sitio que no tiene nada que ver y sudarías sangre y sudor para encontrar dónde está el error. Ándate con ojo
Dos vectores no se puede comparar así. Tienes que comprar cada elemento por separado. Así siempre va a ser falso puesto que estás preguntando si el vector es el mismo (no si tiene los mismos elementos, sino si es el mismo).
Dante escribió:Ejercicio 2
A lo que me refería con usar while es que no necesitas usar break. Siempre es mejor evitar el uso de break en los bucles (y siempre se puede). Intenta encontrar una forma en la que no tengas que usarlo.
Ánimo, que estás ya casi
Re: [Curso] Introducción a la programación en C (IX)
Publicado: 22 Oct 2010, 03:23
por Dante
Espero que ahora este en orden. No estoy muy seguro si corregí por completo lo que me dijiste. Ejercicio 1
printf("Estos son los digitos de tu numero de loteria: %d%d%d%d%d.\n", dig[1],dig[2],dig[3],dig[4],dig[5]); printf("En unos momentos daremos los numeros de la loteria ganadora de Maxhordes de hoy.\n"); printf("Buena suerte...\n"); getchar();
printf("Adivina el numero secreto: "); scanf("%d", &num);
while(num != sec && con < limite) { printf("Fallaste, intentalo de nuevo\n"); con++; printf("Ingresa otro numero: "); scanf("%d", &num); }
if(num == sec) { printf("Tu ganas!!!\n"); }
return 0; }
Esperando revisión, crees que ya pueda pasar al siguiente o mejor espero un poco mas?
Re: [Curso] Introducción a la programación en C (IX)
Publicado: 22 Oct 2010, 08:44
por m0skit0
Dante escribió:Esperando revisión, crees que ya pueda pasar al siguiente o mejor espero un poco mas?
Como quieras y depende de cómo te veas de seguro
Dante escribió:Ejercicio 1
Bueno, has corregido cosas, pero has dejado cosas mal. El tema del tamaño de los vectores sigue estando mal (de hecho sigue estando el mismo problema). A ver si consigo aclararte el tema rápidamente.
Si yo declaro int samba[10] por ejemplo, estoy diciendo que la variable samba es un vector de 10 elementos int. Los vectores se recorren desde el elemento 0 hasta el número de elementos - 1, es decir, en este caso desde samba[0] hasta samba[9], que si los cuentas, son 10 elementos. Recuerda siempre que en C (y en la mayoría de los otros lenguajes) los vectores comienzan en 0, y no en 1. Si ahondas más en C entenderás el porqué
Personalmente, ¿no te parece un poco feo el if ese? Intenta encontrar una forma más elegante que no dependa tanto del tanaño del vector. Por ejemplo, ¿si el vector tuviera 100 números en vez de 5, cómo lo harías?
Dante escribió:Ejercicio 2
Muchísimo mejor. Así es como se hace
Re: [Curso] Introducción a la programación en C (IX)
//Incluimos las librerias requeridas #include <stdio.h> #include <unistd.h>
int main(int argc, char *argv[]) { //Establecemos las variables. int ronda , numero_secreto, respuesta; //Inicializamos el generador de números aleatorios. srand(time(NULL));
//Nos sacamos un número de la patilla. numero_secreto = (rand() % 10) + 1;
//Retamos al usuario. printf("\n Ususario, adivina que número he pensado del 1 al 10. (Tienes 3 intentos.)\n");
for (ronda = 0 ; ronda < 3 ; ronda++) { printf("\n Ronda %d. ", ronda + 1); printf(" Usuario, cual crees que es mi número? \n"); scanf("%d", &respuesta); if(respuesta == numero_secreto) ronda = ronda + 3; else if(respuesta > numero_secreto) printf(" Tas pasao!\n"); else printf(" Te has quedado corto.\n"); }
if(respuesta == numero_secreto) printf("\n Felicidades! Has acertado el numero secreto.\n Eres un listillo!\n\n"); else printf("\n Lo siento no has conseguido descifrar el numero secreto. \n\n.");
//Abrimos un bucle que se repetirá si hay empate. while (fin == 1) { printf("\n Tu tiras primero: "); getchar();
//Sacamos el número del usuario. dado_usuario = (rand() % 6) +1; printf("\n Has sacado un %d.", dado_usuario); printf("\n Pulsa cualquier tecla y tirare yo."); getchar();
//Sacamos un número aleatorio, pero si es menor que el de usuario volvemos a tirar sin decirle nada ^^. while (dado_pc < dado_usuario) { dado_pc = (rand() % 6) + 1; } printf("\n He sacado un %d.", dado_pc);
//Declaramos al vencedor. if (dado_pc == dado_usuario) { printf("\n Vaya coincidencia! DESMPATE!!!\n\n"); } else if (dado_pc > dado_usuario) { printf("\n Has perdido! Pobre mortal.\n\n"); fin = 0; } else { printf("\n Has ganado por puro azar.\n\n"); fin = 0; } } return 0; }
Re: [Curso] Introducción a la programación en C (IX)
Publicado: 16 Ene 2011, 16:22
por m0skit0
Buena Pallacus, veo que se te da bien la programación dominguera. Es sin duda la mejor, y con musiquita guapa de fondo, un placer.
//Incluimos las librerias requeridas #include <stdio.h> #include <unistd.h>
int main(int argc, char *argv[]) { //Establecemos las variables. int ronda , numero_secreto, respuesta, encontrado; //Inicializamos el generador de números aleatorios. srand(time(NULL));
//Nos sacamos un número de la patilla. numero_secreto = (rand() % 10) + 1;
//Retamos al usuario. printf("\n Ususario, adivina que número he pensado del 1 al 10. (Tienes 3 intentos.)\n");
while ((ronda <= 3) && (encontrado = 1)) { printf("\n Ronda %d. ", ronda + 1); printf(" Usuario, cual crees que es mi número? \n "); scanf("%d", &respuesta); if(respuesta == numero_secreto) encontrado = 0; else if(respuesta > numero_secreto) printf(" Tas pasao!\n"); else printf(" Te has quedado corto.\n"); }
if(respuesta == numero_secreto) printf("\n Felicidades! Has acertado el numero secreto.\n Eres un listillo!\n\n"); else printf("\n Lo siento no has conseguido descifrar el numero secreto. \n\n.");