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

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

Avatar de Usuario
CARDIHO
Enteradillo
Enteradillo
Mensajes: 67
Registrado: 02 Feb 2011, 17:15

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

Mensaje por CARDIHO »

largeroliker escribió:Sobre el 1:

Ya no me acuerdo si en C se podía (me lío con los lenguajes :lol:) pero cuando sólo hay una orden a ejecutar dentro de un if, no es necesario poner llaves. Yo ya me he acostumbrado a eso, así reduzco líneas de código que luego se agradecen :lol:

Eso sí, como intentes poner una segunda orden (ya sea definitiva o debug), si no pones llaves te fallará.

ok gracias

largeroliker escribió:me lío con los lenguajes

:shock: ¿Pues cuantos lenguajes de programación sabes?.

m0skit0 escribió:casi 20 años programando....

:adora:



m0skit0 escribió:Tienes que prestar más atención en clase de matemáticas. Si quieres ser un buen programador, te tienen que gustar las matemáticas ;) Intenta mejorar la forma en la que piensas en números, eso te ayudará a ser mejor programador (ya que, al fin y al cabo, programar no es más que manipular números).

No soy bueno en matemáticas :( , ¿algún manual o algo que me recomiende de matemáticas?.


m0skit0 escribió:igualmente

Gracias :D.


m0skit0 escribió:correctamente. Lo subo a producción... Al día siguiente me despiden

Entonces eso pasaría mmmmm.

m0skit0 escribió::lol: Esto en el mejor de los casos. Recemos para que el vice no programe el código para controlar una central nuclear :lol:

:lol:


Ejercicio 3:
Spoiler:

Código: Seleccionar todo

#include <stdio.h>


int main()
{

  int numero1, numero2;
 
  printf("Introduce un numero entero: ");
  scanf("%d", &numero1);
  printf("Introduce otro numero entero: ");
  scanf("%d", &numero2);
 
  int suma = numero1 + numero2;
  int i = 2;
  int j = 3;
 

  while ((i <= suma) && (j <= suma))
  {
 
    if (0 == suma % 2)
   {
   
     printf("%d\n", i);
     i+=2;
    }
   
   else
   {
   
     printf("%d\n", j);
     j+=2;
   
   }
   
  }
 
 
  return 0;
 
}


En el ejercicio 4 a un no puedo

Ejercicio 5:
Spoiler:

Código: Seleccionar todo

#include <stdio.h>



int main()
{

  int numero_secreto, numero_introducido;
 
 
  printf("Jugador 1 introduce un numero entre el 0 y el 10\n");
  scanf("%d", &numero_secreto);
 
  int i;
 
  if ((numero_secreto < 0) || (numero_secreto > 10))
  {
 
    printf("Tu numero no esta en el rango que se te pidio\n");
   i = 6;
   
  }
 
  else
  {
 
     printf("Jugador 2 intenta adivinar el numero del jugador 1\n");
    i = 0;
   
  }
 
 
 
 
 
  while (5 >= ++i)
  {
 
    printf("introduce un numero del 0 al 10\n");
   printf("Intento %d de 5: ", i);
   scanf("%d", &numero_introducido);
   
   if (numero_introducido == numero_secreto)
   {
   
     printf("Felicidades has ganado\n");
     i = 6;
    
   }
   
   
   else
   {
   
     switch (i)
     {
    
       case 1:
            printf("Por poco jejeje XD");
           break;
      case 2:
            printf("Creo que mi abuelita puede mas que tu\n");
             break;
      case 3:
            printf("Que sorpresa a un no puedes\n");
           break;
      case 4:
            printf("no eres muy bueno\n");
           break;
      case 5:
            printf("Game over\n");
           break;
          
     }
   
      
   }
   
   
  }
 
 
  return 0;
 
}



Saludos y un abrazo profe, largeroliker.

Avatar de Usuario
largeroliker
Administrador
Administrador
Mensajes: 8283
Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Twitter: larger0o
Ubicación: Málaga
Contactar:

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

Mensaje por largeroliker »

CARDIHO escribió:
largeroliker escribió:Sobre el 1:

Ya no me acuerdo si en C se podía (me lío con los lenguajes :lol:) pero cuando sólo hay una orden a ejecutar dentro de un if, no es necesario poner llaves. Yo ya me he acostumbrado a eso, así reduzco líneas de código que luego se agradecen :lol:

Eso sí, como intentes poner una segunda orden (ya sea definitiva o debug), si no pones llaves te fallará.

ok gracias

Ten muy en cuenta también a m0skit0 en eso :lol: que sabe mucho más que yo.
CARDIHO escribió:
largeroliker escribió:me lío con los lenguajes

:shock: ¿Pues cuantos lenguajes de programación sabes?.

Quizás no tantos como para liarse, pero es lo que tiene darle mucho a uno y espaciar los demás en el tiempo: He cacharreado con C, C++, Java, Perl, PHP y Visual Basic.
Imagen
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2

Avatar de Usuario
CARDIHO
Enteradillo
Enteradillo
Mensajes: 67
Registrado: 02 Feb 2011, 17:15

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

Mensaje por CARDIHO »

largeroliker escribió:Ten muy en cuenta también a m0skit0 en eso :lol: que sabe mucho más que yo.

Si lo se :lol:

largeroliker escribió:Quizás no tantos como para liarse, pero es lo que tiene darle mucho a uno y espaciar los demás en el tiempo: He cacharreado con C, C++, Java, Perl, PHP y Visual Basic.

Son un buen, yo apenas y llego a 2 :lol: :lol:

Avatar de Usuario
dark_sasuke
Moderador Global
Moderador Global
Mensajes: 3379
Registrado: 03 Sep 2009, 02:13
Twitter: D4rkyt0

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

Mensaje por dark_sasuke »

No se si algun dia llegue a hacer el ejercicio 5, pero retomando, aqui esta:

Código: Seleccionar todo

//Crear un programa en el que un usuario A introduce un número secreto entre 0 y 10 y otro usuario B debe adivinarlo en 5 intentos máximo. El programa sólo se debe detener si el usuario B acertó o si ha gastado los 5 intentos de manera fallida.
 
#include <stdio.h>
 
int main()
 
{
        int numero_secreto, bucle;
        int numero_intento;
       
        printf("Este sera un juego donde el jugador A introduce un numero secreto entre 0 y 10 y el jugador B, intenta adivinarlo");
        printf("\nEl jugador B tiene 5 intentos para adivinarlo\n");
        printf("Jugador A, inserta tu numero:\n");
        scanf("%d", &numero_secreto);
               
                for(;numero_secreto > 10 || numero_secreto < 0;)
                {
                        printf("Jugador A recuerda que el numero debe ser entre 0 y 10. Insertalo de nuevo:\n");
                        scanf("%d", &numero_secreto);
                }
 
       
        printf("Ahora jugador B, intenta adivinarlo:\n");
        scanf("%d", &numero_intento);
       
        if(numero_intento == numero_secreto)
        {
                printf("Felicitaciones, adivinaste, eres rapido\n");
        }
        else
 
        {     
               
                for(bucle=1;numero_secreto!=numero_intento;bucle++)
                        {
                                printf("Intentalo de nuevo\n");
                                scanf("%d", &numero_intento);
                                        if(numero_secreto==numero_intento)
                                        {
                                        printf("Felicitaciones, adivinaste\n");
                                        return 0;
 
                                        }
                                                               
                                        else if(bucle == 5)
                                        {
                                        printf("Se te acabaron los intentos\n");
                                        return 0;
                                        }
                                       
                        }
                               
        }     
               
 
return 0;
 
}


Creo que ya me quedan algo mas sencillos los bucles, espero esta vez si aprender :P ... Sere mas constante y no me desanimare tan facil! :D
Imagen

Avatar de Usuario
dark_sasuke
Moderador Global
Moderador Global
Mensajes: 3379
Registrado: 03 Sep 2009, 02:13
Twitter: D4rkyt0

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

Mensaje por dark_sasuke »

Y el delos primos :D :

Código: Seleccionar todo

//Dado un número entero, verificar si el número es primo o no. Un número es primo si y sólo si es divisible por la unidad y por sí mismo.
//Cuando la division tiene sobrante con todos, solo con 1 y el mismo numero
 
#include <stdio.h>
 
int main()
 
{
 
        int numero, bucle, contador = 0;
 
        printf("Inserta un numero y te dire si es primo\n");
        printf("Insertalo:\n");
        scanf("%d", &numero);
 
        for(bucle=2;bucle<numero;bucle++)
        {     
                if(numero%bucle==0)
                        {
                                contador++;
                        }
       
        }
 
        if(contador==0)
        {
                printf("Es primo\n");
        }
        else if(contador>0)
        {
                printf("No es primo\n");
        }
             
return 0;
 
}
Imagen

codestation
Desarrollador
Desarrollador
Mensajes: 33
Registrado: 27 Nov 2012, 03:49

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

Mensaje por codestation »

dark_sasuke escribió:Y el delos primos :D


Ya que estas en ello por que no pruebas con dos optimizaciones a tu código? Para el ejercicio puedes tanto disminuir el rango de valores en tu bucle para terminar antes y/o salir del bucle prematuramente. Te doy unas pistas:

Para disminuir el rango de valores: hay otra propiedad en los números primos que no esta descrita en el ejercicio pero ayuda a disminuir mucho el rango de búsqueda.

Para salir del bucle prematuramente: planteate si necesitas continuar verificando si el número es primo una vez que has visto que no lo es.
printf("Tell your world\n");

Avatar de Usuario
dark_sasuke
Moderador Global
Moderador Global
Mensajes: 3379
Registrado: 03 Sep 2009, 02:13
Twitter: D4rkyt0

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

Mensaje por dark_sasuke »

Mira codestation:

Código: Seleccionar todo

//Dado un número entero, verificar si el número es primo o no. Un número es primo si y sólo si es divisible por la unidad y por sí mismo.
//Cuando la division tiene sobrante con todos, solo con 1 y el mismo numero
 
#include <stdio.h>
 
int main()
 
{
 
        int numero, bucle, contador = 0;
 
        printf("Inserta un numero y te dire si es primo\n");
        printf("Insertalo:\n");
        scanf("%d", &numero);
 
          for(bucle=2;bucle<numero;bucle++)
   {   
      if(numero%bucle==0)
         {
            contador++;
            printf("No es primo\n");
            return 0;   
         }
   
   }

   if(contador==0)
   {
      printf("Es primo\n");
   }
                
return 0;
 
}


Segun yo, ya quedo optimizado para salir apenas comprueba que no es primo. La otra optimizacion me queda un poco complicada, gracias a mi bajo nivel de matematicas, pues no conozco las propiedades de los numeros primos :P, Es una de las cosas que me han complicado un poco aprender C, por eso me tengo que esforzar :D
Imagen

Avatar de Usuario
largeroliker
Administrador
Administrador
Mensajes: 8283
Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Twitter: larger0o
Ubicación: Málaga
Contactar:

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

Mensaje por largeroliker »

Hombre, no sé si está bien aceptado poner ese return 0; ahí en tó el bucle :lol:

Normalmente se usa break;, ahí detiene el bucle y sigue procesando para abajo.
Imagen
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2

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 (VIII)

Mensaje por m0skit0 »

break pase, return ni de coña. Intenta hacerlo sin ninguno de los dos. Pista: mira mi comentario sobre tu for en tu otro ejercicio darkito ;)
Imagen

Avatar de Usuario
largeroliker
Administrador
Administrador
Mensajes: 8283
Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Twitter: larger0o
Ubicación: Málaga
Contactar:

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

Mensaje por largeroliker »

Y otra cosa que te quiero comentar es el tema del formateo, del estilo. La mayoría de los que empiezan no usan el sangrado ni pagaos y tú diría que abusas :lol:

Yo lo dejaría así (código sin corregir)

Código: Seleccionar todo

//Dado un número entero, verificar si el número es primo o no. Un número es primo si y sólo si es divisible por la unidad y por sí mismo.
//Cuando la division tiene sobrante con todos, solo con 1 y el mismo numero
 
#include <stdio.h>
 
int main()
 
{
 
   int numero, bucle, contador = 0;
 
   printf("Inserta un numero y te dire si es primo\n");
   printf("Insertalo:\n");
   scanf("%d", &numero);
 
   for(bucle=2;bucle<numero;bucle++)
   {   
      if(numero%bucle==0)
         {
            contador++;
            printf("No es primo\n");
            return 0;   
         }
   
   }

   if(contador==0)
   {
      printf("Es primo\n");
   }
               
return 0;
 
}


Además recuerda, aunque es bueno empezar así, que si un if o else sólo va a tener una sentencia no es obligatorio poner llaves.
Imagen
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2

Responder