Página 37 de 37

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

Publicado: 14 Nov 2013, 01:20
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

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

Publicado: 14 Nov 2013, 12:04
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:)

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

Publicado: 15 Nov 2013, 11:19
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: ;)

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

Publicado: 06 Dic 2013, 09:45
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.

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

Publicado: 06 Dic 2013, 14:26
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.

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

Publicado: 20 Ene 2014, 04:55
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?.

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

Publicado: 20 Ene 2014, 15:23
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.

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

Publicado: 20 Ene 2014, 18:07
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:

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

Publicado: 20 Ene 2014, 23:20
por m0skit0
:lol: :oki: