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

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

Avatar de Usuario
wf19
Habitual
Habitual
Mensajes: 194
Registrado: 03 Sep 2009, 02:12

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

Mensaje por wf19 »

m0skit0 escribió:Pero miguelamacias tiene razón. Generalizando su regla, si el número en cuestión no es divisble entre 2 (o lo que es lo mismo, es impar), entonces no es divisible entre ningún número par ;)


Modificado... :juasjuas:
Spoiler:

Código: Seleccionar todo

#include <stdio>

int main ()

{
   int numero_introducido, verificador;

   printf("Dood! inserta un numero y te dire si es primo o no: ");
   scanf("%d", &numero_introducido);

   if (numero_introducido <= 0)
   {
      printf("\nNumero NO valido dood!!!!");
      return 0;
   }

   if (numero_introducido == 1)
   {
      printf("\NO es primo... Pero tampoco compuesto Dood!!!");
      return 0;
   }

   for (verificador = 2; numero_introducido % verificador != 0; verificador += 2);

   if (numero_introducido == verificador)
   {   
      printf("\nEs un numero primo Dood!!!");
   }

   if (numero_introducido != verificador)
   {
      printf("\nEs un numero NO primo Dood!!!");
   }

return 0;
}

Mas vale tarde que nunca :tongue: ........ Dood!

PD: La modificacion no la he probado... hablo al tanteo :juasjuas: ..... Pero es mejor que no intentarlo (Claro, aunque lo he intentado varias veces, bueno tu me entiendes :tongue: )

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 »

Hm, lo has entendido al revés, o lo has codificado al revés... Sólo pruebas a dividir entre números pares :? Además tienes un bucle infinito ahí, que produce un desbordamiento :tongue:

Código: Seleccionar todo

m0skit0@sodiet:~/Temp$ ./prueba 
Dood! inserta un numero y te dire si es primo o no: 9
Floating point exception
Imagen

Avatar de Usuario
wf19
Habitual
Habitual
Mensajes: 194
Registrado: 03 Sep 2009, 02:12

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

Mensaje por wf19 »

m0skit0 escribió:Hm, lo has entendido al revés, o lo has codificado al revés... Sólo pruebas a dividir entre números pares. Además tienes un bucle infinito ahí, que produce un desbordamiento

Gracias por la observación profe :tongue:
He aquí la corrección.
[Si, lo había hecho mal.... muy mal :lol: ]

Spoiler:

Código: Seleccionar todo

#include <stdio>

int main ()

{
   int numero_introducido, verificador;

   printf("Dood! inserta un numero y te dire si es primo o no: ");
   scanf("%d", &numero_introducido);

   if (numero_introducido <= 0)
   {
   printf("\nNumero NO valido dood!!!!");
   return 0;
   }

   if (numero_introducido == 1)
   {
   printf("\nNO es primo... Pero tampoco compuesto Dood!!!");
   return 0;
   }

   if (numero_introducido == 2)
   {
   printf("\nNumero primo dood!!!");
   return 0;
   }

   for (verificador = 3; numero_introducido % verificador != 0; verificador += 2);

   if (numero_introducido == verificador)
   {
   printf("\nEs un numero primo Dood!!!");
   }

   if (numero_introducido != verificador)
   {
   printf("\nEs un numero NO primo Dood!!!");
   }

return 0;
}

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 »

Nada, sigue estando mal. Sigues con el bucle infinito, sólo que ahora lo da con números pares, ya que no compruebas la división por números pares (por ejemplo el 4). Hazme el favor de probar antes de postear :tongue:
Imagen

Puzky
Experto
Experto
Mensajes: 825
Registrado: 07 Oct 2009, 22:09
PSN ID: Puzky

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

Mensaje por Puzky »

Ahi van 3:


Spoiler:

Código: Seleccionar todo

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

int main(int argc, char *argv[])
{
  //Variables
  int numero;
  //Escaneo de numero
  printf("Introduce un numero par menor a 20: ");
  scanf("%d", &numero);
  //Comprobacion
  if (numero <= 20 && numero % 2 == 0)
  printf("El %d es menor a 20 y es par", numero);
  else
  printf("Te dije que un numero menor a 20 y que fuera par");
 
 
  return 0;
}

el 2°
Spoiler:

Código: Seleccionar todo

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

int main(int argc, char *argv[])
{
  //Variables
  int num1, num2, suma, mult, media;
  //Escaneo
  printf("Escribe un numero: ");
  scanf("%d", &num1);
  printf("Escribe otro numero para que la media, sume y multiplicacion sea menor de 20: ");
  scanf("%d", &num2);
  //Operaciones
  suma= num1 + num2;
  mult= num1 * num2;
  media= suma / 2;
  if ((suma > 20) || (mult > 20) || (media > 20))
    printf("La suma, media o multiplicacion es mayor a 20");
  else
  printf("Correcto! Multiplicacion=%d, suma=%d, media=%d", mult, suma, media);
 
  return 0;
}



Spoiler:

Código: Seleccionar todo

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

int main(int argc, char *argv[])
{
  //Variable 
  int num, bucle = 2;
  //Escaneo
  printf("Escribe un numero primo: ");
  scanf("%d", &num);
  //
  while(num%bucle!=0)
   bucle++;


if(num==bucle)     

   printf("Correcto el %d es primo", num);


else

   printf("Mal!");
   
  getch();   
  return 0;
}


En el 3° no entendi que tenemos que hacer :?

arisma
Habitual
Habitual
Mensajes: 497
Registrado: 18 Sep 2009, 08:41

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

Mensaje por arisma »

En el tercero tienes que pedir 2 numeros.

Tienes que hallar la suma y si es par tienes que imprimir todos los números pares(el primero el 2) hasta el mayor de los 2 números que has pedido.(o el inmediatamente anterior número par si éste no lo es)

Por el contrario, si la suma es impar debes imprimir los números impares(desde el 1) hasta la suma de ambos(si es impar, o el inmediatamente anterior).
Última edición por arisma el 13 Feb 2010, 09:42, editado 1 vez en total.

Puzky
Experto
Experto
Mensajes: 825
Registrado: 07 Oct 2009, 22:09
PSN ID: Puzky

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

Mensaje por Puzky »

Por ejemplo si la suma de los 2 numeros es 20, tendria que imprimir 2, 4, 6, 8, 10, 12, 14, 16 y 18?

estan bien los otros 3?

arisma
Habitual
Habitual
Mensajes: 497
Registrado: 18 Sep 2009, 08:41

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

Mensaje por arisma »

Puzky escribió:Por ejemplo si la suma de los 2 numeros es 20, tendria que imprimir 2, 4, 6, 8, 10, 12, 14, 16 y 18?

estan bien los otros 3?


Incluye también el 20 ya que es par.

Y si es impar la suma?

No los he podido mirar todavia.

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 »

Puzky escribió:

Formateo:

Código: Seleccionar todo

  if (numero <= 20 && numero % 2 == 0)
  printf("El %d es menor a 20 y es par", numero);
  else
  printf("Te dije que un numero menor a 20 y que fuera par");

Mal

Código: Seleccionar todo

  if (numero <= 20 && numero % 2 == 0)
      printf("El %d es menor a 20 y es par", numero);
  else
      printf("Te dije que un numero menor a 20 y que fuera par");

Bien

Código: Seleccionar todo

if (numero <= 20 && numero % 2 == 0)

Debe ser:

Código: Seleccionar todo

if ((numero <= 20) && (numero % 2 == 0))


Puzky escribió:el 2°

La media se calcula mal.

Puzky escribió:

Funciona, pero compruebas demasiados números. Se puede hacer comprobando menos de la mitad de números.
Imagen

Puzky
Experto
Experto
Mensajes: 825
Registrado: 07 Oct 2009, 22:09
PSN ID: Puzky

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

Mensaje por Puzky »

El 1°
Spoiler:

Código: Seleccionar todo

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

int main(int argc, char *argv[])
{
  //Variables
  int numero;
  //Escaneo de numero
  printf("Introduce un numero par menor a 20: ");
  scanf("%d", &numero);
  //Comprobacion
  if ((numero <= 20) && (numero % 2 == 0))
      printf("El %d es menor a 20 y es par", numero);
  else
      printf("Te dije que un numero menor a 20 y que fuera par");
 
 
  getch();   
  return 0;
}

El 2°
Salia mal porque la funcion int no acepta decimales, tengo razon?
Spoiler:

Código: Seleccionar todo

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

int main(int argc, char *argv[])
{
  //Variables
  float num1, num2, suma, mult, media;
  //Escaneo
  printf("Escribe un numero: ");
  scanf("%f", &num1);
  printf("Escribe otro numero para que la media, sume y multiplicacion sea menor de 20: ");
  scanf("%f", &num2);
  //Operaciones
  suma= num1 + num2;
  mult= num1 * num2;
  media= suma / 2;
  if ((suma > 20) || (mult > 20) || (media > 20))
    printf("La suma, media o multiplicacion es mayor a 20");
  else
  printf("Correcto! Multiplicacion=%f, suma=%f, media=%f", mult, suma, media);
 
  getch();   
  return 0;
}


En el 4° seria poner un limite de numeros a comprobar, no?
Última edición por Puzky el 13 Feb 2010, 17:11, editado 1 vez en total.

Responder