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

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

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 »

Poseo problema con ello, porque tanto en el ejercicio 5 como en el 4 para romper el bucle uso return, y si no se puede usar, no se como salir del bucle antes de que termine :(

Edito:

Oh my gosh casi que no puedo :P ... Pero pude. m0skit0 parece que despues de muchos años los bucles no seran un impedimento para aprender C!!! :D :D :D :D

El de los primos:

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 && contador==0;bucle++)
     {   
         if(numero%bucle==0)
      {
         contador++;
      }
      }


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


Y el 5 (Donde tambien habia usado return 0;)

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);
      
   while(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;bucle<=4 && numero_secreto!=numero_intento;bucle++)
      {
         printf("Intentalo de nuevo\n");
         scanf("%d", &numero_intento);
         if(numero_secreto==numero_intento)
         {
            printf("Felicitaciones, adivinaste\n");
         }
                        
         else if(bucle == 4)
         {
            printf("Se te acabaron los intentos\n");
                           
         }
               
      }
            
   }   
      

return 0;

}


Y ya se como romper bucles sin usar algo de "fuerza bruta" :P ... Al cumplirse una condicion, y poner la condicion contraria en el bucle, haria lo que quiero que haga en el if, y rompo el bucle. Por fin entiendo esto mejor :P

Por cierto Larger, si sabia lo de las llaves, pero es que cuando lo pongo sin llaves termino perdiendome porque no se que es de que y me suelo confundir al faltarme ";" y eso y me lio :P
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 »

Entonces está bien, eso es un "truquillo" para los que ya llevan un tiempo en esto y no se lían (al menos no tanto :lol:)
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 »

Excelente darkie con las condiciones complejas! :oki:

Normalmente en la vida real demasiadas condiciones de parada en un bucle queda feo y poco legible, es preferible usar if y break porque es más visualmente entendible a la primera. Pero esto no es la vida real y hay que aprender primero! :mrgreen: ;)
Imagen

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 »

Ejercicio 4:
Spoiler:

Código: Seleccionar todo

#include <stdio.h>


int main()
{
 
  int numero;
 
  printf("Introduce un numero entero\n");
  scanf("%d", &numero);
 
  if (1 == numero % 2)
  {
   
   printf("Tu numero es primo\n");
   
  }
 
  else
  {
   
   printf("Tu numero no es primo\n");
   
  }
 
  return 0;

}

Al fin pude, después de tanto tiempo :lol: , saludos.

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 »

Ojalá fuera tan sencillo :) No estás diciendo si el número es primo, estás diciendo si el número es impar. Por ejemplo: 9. Tu programa dirá que es primo cuando no lo es.
Imagen

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 »

Spoiler:

Código: Seleccionar todo

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


int main()
{
 
  int numero;
  printf("Introduce un numero entero:\n");
  scanf("%d",&numero);
 
  int resultado = (int) (sqrt(numero)); 
  int i = 2;
  int primo = 1;
 
 
  while(i <= resultado)
  {
 
   
   if(0 == numero%i)
   {
    
     i = resultado;
     primo = 0;
    
   }
   
   i++;
   
  }
 
  if(0 == primo)
  {
   
   printf("El numero no es primo\n");
   
  }
 
  else
  {
   
   printf("El numero es primo\n");
   
  }
 
 
  return 0;
 
}


Ahora sí. ¿Ya puedo pasar a los siguientes ejercicios?.

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 »

Ese while es mucho más sencillo así:

Código: Seleccionar todo

  while(i <= resultado && primo)
  {   
       primo = (0 == numero % i);
       i++;
  }


Y el if

Código: Seleccionar todo

  if(primo)
  {
       printf("El numero es primo\n");
  }
  else
  {
       printf("El numero no es primo\n");
  }

Cuánto menos código, menos bugs.
Imagen

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 »

Spoiler:

Código: Seleccionar todo

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


int main()
{
 
  int numero;
  printf("Introduce un numero entero:\n");
  scanf("%d",&numero);
 
  int resultado = (int) (sqrt(numero)); 
  int i = 2;
  int primo = 1;
 
 
 
  while(i<=resultado && primo)
  {
 
   primo = (0 == numero%i);  //Sí es cero el bucle dejara de ejecutarse.
   i++; 
   
  }
 
  //Sí primo es 1 es verdadero, si primo es cero es falso.
  if(primo)
  {
   
   printf("El numero no es primo\n");
   
  }
 
  else
  {
   
   printf("El numero es primo\n");
   
  }
 
 
  return 0;
 
}

:mrgreen:

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 »

:lol: :oki:
Imagen

Responder