• Martes 30 de Abril de 2024, 05:23

Autor Tema:  Descomponer un numero en sus factores  (Leído 5406 veces)

Vndecid

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Descomponer un numero en sus factores
« en: Sábado 18 de Abril de 2009, 21:31 »
0
Hola a todas los de la comunidad SoloCodigo les queria preguntar alfgo muy simple que hace tiempo me aqueja en C que es la descomposiocn de un numero en sus factrores.
Ejemplo:

tengo elk numero 405 y quiero tener el 4 el  0 y el  5 por separado
Me dijeron que se podia tomar el numero como char  pero no se como puedo pasarlo a un vector de enteros despues para podes sumarlos restarlos y trabajar aritmeticamente.

Alguien sabe como es esto ??? (Creo que se llama parsear)


Desde ya muchas gracias.

Claudisimo

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Re: Descomponer un numero en sus factores
« Respuesta #1 en: Domingo 19 de Abril de 2009, 18:57 »
0
Antes de responder, diré algo 0 aporte: un programa generalmente se puede hacer de muchas formas distintas, recuerda que la idea es siempre ser lo mas óptimo posible. Sin ofender, pero eso de transformar los numeros a alfanumericos para trabajar de una forma muy fácil con ellos lo considero flojera. Los programadores tienen que generar un pensamiento algorítmico, y proponer soluciones tan poco formuladas y poco óptimas no hace mas que hacerles daño y retrasarlos. Te lo digo con todo el respeto del mundo, espero no haberte ofendido. Si es así, disculpame.

Ahora, volviendo al tema, te recomiendo declarar las variables, sacar el módulo de 405 sobre 10, eso lo guardas en una variable, después divides el numero por 10, sacas de nuevo el módulo y así hasta que ya no te queden factores. ¿Se entiende?

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Descomponer un numero en sus factores
« Respuesta #2 en: Lunes 20 de Abril de 2009, 11:51 »
0
Aclararos a los dos que eso no es sacar factores, sino los dígitos que lo componen. Los factores son aquellos números que multiplicados entre sí dan un número, por ejemplo, factores de 10 = 2 x 5, factores de 11 = no tiene, es primo.

Salud

Vndecid

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: Descomponer un numero en sus factores
« Respuesta #3 en: Domingo 26 de Abril de 2009, 13:10 »
0
Cita de: "Claudisimo"
Antes de responder, diré algo 0 aporte: un programa generalmente se puede hacer de muchas formas distintas, recuerda que la idea es siempre ser lo mas óptimo posible. Sin ofender, pero eso de transformar los numeros a alfanumericos para trabajar de una forma muy fácil con ellos lo considero flojera. Los programadores tienen que generar un pensamiento algorítmico, y proponer soluciones tan poco formuladas y poco óptimas no hace mas que hacerles daño y retrasarlos. Te lo digo con todo el respeto del mundo, espero no haberte ofendido. Si es así, disculpame.

Ahora, volviendo al tema, te recomiendo declarar las variables, sacar el módulo de 405 sobre 10, eso lo guardas en una variable, después divides el numero por 10, sacas de nuevo el módulo y así hasta que ya no te queden factores. ¿Se entiende?


JAJA Todo bien Claudisimo es que yo ya conocia esa forma de hacer el ejercicio pero ESA de dividir por diez me parecia poco optima que pasar el char a un vetor :D

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Descomponer un numero en sus factores
« Respuesta #4 en: Lunes 27 de Abril de 2009, 10:13 »
0
Puedes convertir directamente la cadena de caracteres a cadena de números. Sólo es cuestión de interpretar el contenido:

Código: C
  1. char* numero = "407";
  2. int i,cont;
  3.  
  4. cont = strlen(numero);
  5. for (i=0;i<cont;i++)
  6.    printf("%d ",numero[i] - 0x30);
  7.  
Saludos

Vndecid

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: Descomponer un numero en sus factores
« Respuesta #5 en: Sábado 30 de Mayo de 2009, 00:22 »
0
LA SOLUCION SIII JEJJEJE


#include<stdio.h>
#include<conio.h>

void ingresabin(int *);

void main(void)
{
int cadena1[10];
ingresabin(cadena1);
getch();
}

void ingresabin(int *cadena1)
{
int *pc=cadena1,cont,i=1;
char valor;

printf("Ingrese cadena: ");

fflush(stdin);
printf("%c",valor=getch());

while(valor>=49 &&  valor<=58)
{
   cont++;

  if(valor==49)
     *cadena1=1;
  if(valor==50)
     *cadena1=2;
  if(valor==51)
     *cadena1=3;
  if(valor==52)
     *cadena1=4;
  if(valor==53)
     *cadena1=5;
  if(valor==54)
     *cadena1=6;
  if(valor==55)
     *cadena1=7;
  if(valor==56)
     *cadena1=8;
  if(valor==57)
     *cadena1=9;
  if(valor==58)
     *cadena1=0;

  cadena1++;
   printf("%c",valor=getch());
}
   printf("nLa cadena ingresada fue : ");
   for(i=0;i<cont;i++)
      printf("%d",*pc++);
      getch();
}

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Descomponer un numero en sus factores
« Respuesta #6 en: Sábado 30 de Mayo de 2009, 12:24 »
0
Si yo fuera tu profe/jefe: :no:  :hola:

Vndecid

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: Descomponer un numero en sus factores
« Respuesta #7 en: Sábado 30 de Mayo de 2009, 20:34 »
0
Jajaja ME TIENEN REPODRIDO con eso de"Eso no es OPTIMO,no es OPTIMO " lo dicen TODO EL TIEMPO!....

Me descargo un poquito ..JAVA no es OPTIMO FLASHHHHH!!!! NO ES OPTIMO!!!! y los lenguajes de alto nivel TAMPOCO SON OPTIMOSS DIOS!!!!!!!

Se que no es optimo y esa asingnacion la tendria que haber echo con un for que sume 1 la cantidad de veces -1 del numero que se entro y que se lo asigne al vector.

Linux es OPTIMO ...jejej dios como lijaron codigo esos tipos...

Tene en cuenta que es mi segundo año en programacion recien vimos medianamente bien archivos...Tampoco puedo acceder a la memoria de la placa de video como vi en un post aca no soy Richard Stallman ...

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Descomponer un numero en sus factores
« Respuesta #8 en: Sábado 30 de Mayo de 2009, 20:45 »
0
Bueno, yo tampoco pretendo que seas Stallman, pero me refería a esto:

Código: Text
  1. if(valor==49)
  2.     *cadena1=1;
  3. if(valor==50)
  4.     *cadena1=2;
  5. if(valor==51)
  6.     *cadena1=3;
  7. if(valor==52)
  8.     *cadena1=4;
  9. if(valor==53)
  10.     *cadena1=5;
  11. if(valor==54)
  12.     *cadena1=6;
  13. if(valor==55)
  14.     *cadena1=7;
  15. if(valor==56)
  16.     *cadena1=8;
  17. if(valor==57)
  18.     *cadena1=9;
  19. if(valor==58)
  20.     *cadena1=0;
  21.  
¿No ves que valor - 48 te da el resultado que quieres sin necesidad de tantas comparaciones? Así reduces considerablemente el número de comparaciones. ¿Te fijaste en el código que te puse?

Vndecid

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: Descomponer un numero en sus factores
« Respuesta #9 en: Domingo 31 de Mayo de 2009, 01:51 »
0
:good:  :good:

AHhhhhhhhhhhhhhh Excelente... no no me di cuenta...entonces me tendria que considerar un bologno jeje