[Curso] Introducción a la programación en C (VI)

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, m0skit0, LnD, ka69, zacky06

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por m0skit0 »

Mal el formateo, debes usar tabulaciones, no espacios. Fíjate en los demás ejercicios y en los ejemplos propuestos.

Saludos.
Imagen

Avatar de Usuario
amras5584
Experto
Experto
Mensajes: 628
Registrado: 04 Oct 2009, 15:56
Ubicación: Casal, Paraíso Tropical!!!!

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por amras5584 »

aquí está el código correspondiente:

Ejercicio 1:
Spoiler:

Código: Seleccionar todo

// Incluímos o ficheiro stdio.h
#include <stdio.h>
//Para Linux:
#include <unistd.h>
//Para Windows (comentar a liña anterior e descomentar a seguinte):
// #include <windows.h>

//Función principal:
int main(int argc, char *argv[])
{
  int cifraSecreta;
  int cifraIntroducida;
 
  //Xogador 1 introduce a cifra Secreta: 
  printf("Primeiro é o turno do XOGADOR 1\nIntroduce un número entre 0 e 9... ");
  scanf("%d", &cifraSecreta); 
 
  //Xogador 2 debe adiviñar a cifra secreta que introduciu o xogador 2
  //Non fai falla poñer 2 printf para este tipo de saída, pero é mellor facelo porque queda máis claro
  printf("\nAgora é o turno do XOGADOR 2\nIntenta adiviñar a cifra secreta!!\nIntroduce un número entre 0 e 9... ");
  scanf("%d", &cifraIntroducida);
 
  //Se o número é maior...
  if (cifraIntroducida > cifraSecreta)
  {
    printf("\nPasácheste catro pobos...\n");
    printf("Volve tentalo máis tarde.\n");
  }
 
  //Se non é maior, se é menor...
  else if (cifraIntroducida < cifraSecreta)
    printf("\nUfff, non sexas tímido... Quedácheste moi curto!!\n");
 
  //Se non é nin maior nin menor, se é igual...
  else if (cifraIntroducida == cifraSecreta)
  {
    printf("\nBuah, vaia crack!!\n");
    printf("Sabes ler a mente aos computadores, NORABOA!!!\n");
  }
 
  return 0;
}

en este tengo una duda: no se podría limpiar la pantalla una vez que se introduce la cifra?? quiero decir, que si es para un juego, cuando el jugador 1 introduce la cifra, ésta queda puesta en la consola, por lo que el jugador 2 la podría ver. por eso pregunto si no se podría introducir un comando que limpie la pantalla como el clear en Linux... por otro lado, cómo se podría hacer para que si el jugador 2 falla no hubiese que empezar todo de nuevo??
----------------------------
Ejercicio 2:
Spoiler:

Código: Seleccionar todo

// Incluímos o ficheiro stdio.h
#include <stdio.h>
//Para Linux:
#include <unistd.h>
//Para Windows (comentar a liña anterior e descomentar a seguinte):
// #include <windows.h>

//Función principal:
int main(int argc, char *argv[])
{
  int cifra1;
  int cifra2;
 
  //Introducimos as cifras por medio do teclado 
  printf("Primeiro introduce un número entre 0 e 9... ");
  scanf("%d", &cifra1);
 
  printf("Agora introduce outro número entre 0 e 9... ");
  scanf("%d", &cifra2);
 
  //Se o primeiro número é maior que o segundo...
  if (cifra1 > cifra2)
  {
    printf("\n%d é maior que %d\n", cifra1, cifra2);
  }
 
  //Se o primeiro número é menor que o segundo, o segundo é maior que o primeiro...
  else if (cifra1 < cifra2)
    printf("\n%d é maior que %d\n", cifra2, cifra1);
 
  //Se non é nin maior nin menor, se é igual...
  else if (cifra1 == cifra2)
  {
    printf("\nIntroduciches o mesmo número, parvo!!\n");
  }
 
  return 0;
}

-----------------------------
Ejercicio 3:
Spoiler:

Código: Seleccionar todo

// Incluímos o ficheiro stdio.h
#include <stdio.h>
//Para Linux:
#include <unistd.h>
//Para Windows (comentar a liña anterior e descomentar a seguinte):
// #include <windows.h>

//Función principal:
int main(int argc, char *argv[])
{
  int cifra1;
  int cifra2;
 
  //Introducimos as cifras por medio do teclado 
  printf("Primeiro introduce un número entre 0 e 9... ");
  scanf("%d", &cifra1);
 
  printf("Agora introduce outro número entre 0 e 9... ");
  scanf("%d", &cifra2);
 
  //Se o primeiro número é maior que o segundo...
  if ((cifra1^2) > (cifra2^2))
  {
    printf("\n%d² é maior que %d²\n", cifra1, cifra2);
  }
 
  //Se o primeiro número é menor que o segundo, o segundo é maior que o primeiro...
  else if ((cifra1^2) < (cifra2^2))
    printf("\n%d² é maior que %d²\n", cifra2, cifra1);
 
  //Se non é nin maior nin menor, se é igual...
  else if (cifra1 == cifra2)
  {
    printf("\nIntroduciches o mesmo número, parvo!!\n");
  }
 
  return 0;
}

Supongo que algo habré entendido mal, porque no le veo diferencia al anterior...
-----------------------------
Ejercicio 4:
Spoiler:

Código: Seleccionar todo

// Incluímos o ficheiro stdio.h
#include <stdio.h>
//Para Linux:
#include <unistd.h>
//Para Windows (comentar a liña anterior e descomentar a seguinte):
// #include <windows.h>

//Función principal:
int main(int argc, char *argv[])
{
  int cifra;
 
  //Introducimos a cifra por medio do teclado 
  printf("Primeiro introduce un número entre 0 e 9... ");
  scanf("%d", &cifra);
 
  //Averigüamos se o número é par ou impar:
  //Se o número é par, a división entre 2 da de resto 0...
  if (cifra % 2 == 0)
    printf("\n%d é par\n", cifra);
  else printf("\n%d é impar\n", cifra);
 
 
  return 0;
}

Deica.
Usuario nº 13 del antiguo foro de Dark_AleX (alabado sea)

Ahora que se han desvelado las Keys de Sony, la Scene ha SUPERDIGIEVOLUCIONADO!!

Avatar de Usuario
~Rdavid~
Experto
Experto
Mensajes: 965
Registrado: 12 Nov 2009, 17:29
Ubicación: Costa Rica

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por ~Rdavid~ »

amras5584 escribió:en este tengo una duda: no se podría limpiar la pantalla una vez que se introduce la cifra?? quiero decir, que si es para un juego, cuando el jugador 1 introduce la cifra, ésta queda puesta en la consola, por lo que el jugador 2 la podría ver. por eso pregunto si no se podría introducir un comando que limpie la pantalla como el clear en Linux... por otro lado, cómo se podría hacer para que si el jugador 2 falla no hubiese que empezar todo de nuevo??


Si se puede y justo puedes usar ese comando de linux haciendo system("clear")

Lo otro que dices lo vez más adelante. :)
Última edición por ~Rdavid~ el 21 Jun 2011, 04:52, editado 1 vez en total.
Imagen

Avatar de Usuario
amras5584
Experto
Experto
Mensajes: 628
Registrado: 04 Oct 2009, 15:56
Ubicación: Casal, Paraíso Tropical!!!!

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por amras5584 »

muchas gracias. entonces el Ejercicio 1 queda así:

Spoiler:

Código: Seleccionar todo

// Incluímos o ficheiro stdio.h
#include <stdio.h>
//Para Linux:
#include <unistd.h>
//Para Windows (comentar a liña anterior e descomentar a seguinte):
// #include <windows.h>

//Función principal:
int main(int argc, char *argv[])
{
  int cifraSecreta;
  int cifraIntroducida;
 
  //Xogador 1 introduce a cifra Secreta: 
  printf("Primeiro é o turno do XOGADOR 1\nIntroduce un número entre 0 e 9... ");
  scanf("%d", &cifraSecreta);
 
  //Agora limpiamos a pantalla para que o Xogador 2 non vexa o que introducimos antes:
  system("clear");
 
  //Xogador 2 debe adiviñar a cifra secreta que introduciu o xogador 2
  //Non fai falla poñer 2 printf para este tipo de saída, pero é mellor facelo porque queda máis claro
  printf("\nAgora é o turno do XOGADOR 2\nIntenta adiviñar a cifra secreta!!\nIntroduce un número entre 0 e 9... ");
  scanf("%d", &cifraIntroducida);
 
  //Se o número é maior...
  if (cifraIntroducida > cifraSecreta)
  {
    printf("\nPasácheste catro pobos...\n");
    printf("Volve tentalo máis tarde.\n");
  }
 
  //Se non é maior, se é menor...
  else if (cifraIntroducida < cifraSecreta)
    printf("\nUfff, non sexas tímido... Quedácheste moi curto!!\n");
 
  //Se non é nin maior nin menor, se é igual...
  else if (cifraIntroducida == cifraSecreta)
  {
    printf("\nBuah, vaia crack!!\n");
    printf("Sabes ler a mente aos computadores, NORABOA!!!\n");
  }
 
  return 0;
}
Usuario nº 13 del antiguo foro de Dark_AleX (alabado sea)

Ahora que se han desvelado las Keys de Sony, la Scene ha SUPERDIGIEVOLUCIONADO!!

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por m0skit0 »

No, no uses system(), es dependiente del SO. Esto son sólo ejercicios, y hay que aprender a programar de forma estándar. Cuando hagas un juego por ti mismo, entonces ya decides qué quieres usar.

Saludos.
Imagen

Avatar de Usuario
amras5584
Experto
Experto
Mensajes: 628
Registrado: 04 Oct 2009, 15:56
Ubicación: Casal, Paraíso Tropical!!!!

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por amras5584 »

ya, era para hacer eso de limpiar la pantalla. en la primera versión no lo había incluido... el resto está bien??
Usuario nº 13 del antiguo foro de Dark_AleX (alabado sea)

Ahora que se han desvelado las Keys de Sony, la Scene ha SUPERDIGIEVOLUCIONADO!!

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por m0skit0 »

Ejercicio 1:

Código: Seleccionar todo

else if (cifraIntroducida == cifraSecreta)

Esta comparación sobra.

Ejercicio 2.

¿Por qué entre 0 y 9? Si luego tampoco comparas que sean entre 0 y 9 ;)

Ejercicio 3:

No necesitas calcular el cuadrado para saber cuál cuadrado es mayor.

Ejercicio 4;

Mea culpa, pero mejor así:

Código: Seleccionar todo

if (cifra % 2 == 0)
{
   printf("\n%d é par\n", cifra);
}
else
{
   printf("\n%d é impar\n", cifra);
}

Intenta que el código quede espaciado y entendible. No sirve de nada amontonar las líneas ;)
Imagen

Avatar de Usuario
amras5584
Experto
Experto
Mensajes: 628
Registrado: 04 Oct 2009, 15:56
Ubicación: Casal, Paraíso Tropical!!!!

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por amras5584 »

tienes razón, xD. para no poner todo de nuevo, en el ejercicio 1 puse simplemente "else ...", en el 2 puse en el printf que se introduzca un número cualquiera, en el 3 comparo sólo los números introducidos sin importar la potencia y en el 4 lo dejé más o menos como me indicaste. antes lo puse así más que nada porque comentaste que las {} se usaban cuando había que hacer varias cosas en los if y en los else, por eso al ser sólo una cosa lo puse directamente, pero tienes razón que lo tendría que haber tabulado de otra manera más clara...

muchas gracias por tus críticas, son muy constructivas, xD.
Usuario nº 13 del antiguo foro de Dark_AleX (alabado sea)

Ahora que se han desvelado las Keys de Sony, la Scene ha SUPERDIGIEVOLUCIONADO!!

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por m0skit0 »

amras5584 escribió:en el ejercicio 1 puse simplemente "else ..."

:oki:

amras5584 escribió:en el 2 puse en el printf que se introduzca un número cualquiera

;)

amras5584 escribió:en el 3 comparo sólo los números introducidos sin importar la potencia

:oki:

amras5584 escribió:en el 4 lo dejé más o menos como me indicaste. antes lo puse así más que nada porque comentaste que las {} se usaban cuando había que hacer varias cosas en los if y en los else, por eso al ser sólo una cosa lo puse directamente, pero tienes razón que lo tendría que haber tabulado de otra manera más clara...

Cierto, por eso digo "mea culpa" (y no salpiques :lol: ). El problema con no poner llaves es que luego si quieres modificar dichos ifs puedes introducir bugs sin querer. Es mejor poner las llaves y olvidarse de problemas ;)

amras5584 escribió:muchas gracias por tus críticas, son muy constructivas

De eso se trata :canuto:
Imagen

t4t4n_h4ck
Novato
Novato
Mensajes: 13
Registrado: 09 Sep 2011, 03:24

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por t4t4n_h4ck »

Saludos aqui mis ejercicios...

ejercicio 1:
Spoiler:
//incluyendo librerias
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main(int argc, char *argv[])
{
//variables
int num_secreto,num_capturado;
//mensaje del juego
printf("Bienvenidos al juego adivina el numero....\n\n");
//Ingresando numero secreto
printf("ingrese el numero secreto... ");
scanf("%d",&num_secreto);
system("pause");
//ingresar Numero a adivinar del jugador X
printf("Ingrese un numero entre 0 - 20000 ... ");
scanf("%d",&num_capturado);
//limpiando pantalla
fflush(0);
system("cls");
sleep(3000);
//adivinando el numero
if(num_capturado == num_secreto)
{
printf("Felicitaciones mi amigo, el numero es el correcto....\n");
}else if(num_capturado < num_secreto)
{
printf("Que pena estuviste cerca...Te recomiendo aumentar en %d o algo mas el numero jajaja \n",num_secreto - num_capturado);
}
else
{
printf("Que pena estas muy lejos... Te recomiendo disminuir en %d o algo menos el numero jajajja \n",num_capturado - num_secreto);
}
system("PAUSE");
return 0;
}

Responder