SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Vndecid en Sábado 18 de Abril de 2009, 21:31

Título: Descomponer un numero en sus factores
Publicado por: Vndecid en Sábado 18 de Abril de 2009, 21:31
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.
Título: Re: Descomponer un numero en sus factores
Publicado por: Claudisimo en Domingo 19 de Abril de 2009, 18:57
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?
Título: Re: Descomponer un numero en sus factores
Publicado por: m0skit0 en Lunes 20 de Abril de 2009, 11:51
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
Título: Re: Descomponer un numero en sus factores
Publicado por: Vndecid en Domingo 26 de Abril de 2009, 13:10
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
Título: Re: Descomponer un numero en sus factores
Publicado por: m0skit0 en Lunes 27 de Abril de 2009, 10:13
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
Título: Re: Descomponer un numero en sus factores
Publicado por: Vndecid en Sábado 30 de Mayo de 2009, 00:22
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();
}
Título: Re: Descomponer un numero en sus factores
Publicado por: m0skit0 en Sábado 30 de Mayo de 2009, 12:24
Si yo fuera tu profe/jefe: :no:  :hola:
Título: Re: Descomponer un numero en sus factores
Publicado por: Vndecid en Sábado 30 de Mayo de 2009, 20:34
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 ...
Título: Re: Descomponer un numero en sus factores
Publicado por: m0skit0 en Sábado 30 de Mayo de 2009, 20:45
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?
Título: Re: Descomponer un numero en sus factores
Publicado por: Vndecid en Domingo 31 de Mayo de 2009, 01:51
:good:  :good:

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