Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] divisores de un numero de mayor a menor

Estas en el tema de divisores de un numero de mayor a menor en el foro de C/C++ en Foros del Web. Estoy empezando con programacion y acabo de realizar un programa que muestra todos los divisores de un numero de menor a mayor. Estoy intentando mostrar ...
  #1 (permalink)  
Antiguo 25/01/2014, 11:01
 
Fecha de Ingreso: marzo-2012
Mensajes: 180
Antigüedad: 12 años, 8 meses
Puntos: 2
divisores de un numero de mayor a menor

Estoy empezando con programacion y acabo de realizar un programa que muestra todos los divisores de un numero de menor a mayor. Estoy intentando mostrar los divisores de mayor a menor y no lo consigo

Gracias

Código:
/* 
#include <stdio.h>

int main(void) {  
    int numero;
    int divisor = 1;

    printf("número: ");
    scanf("%d", &numero);

    while (divisor <= numero) { 
    	if (numero % divisor == 0) {
    		printf("%d\n", divisor);
    	}
    	divisor++;
    }
        
    return 0;
}
  #2 (permalink)  
Antiguo 25/01/2014, 11:32
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 1 mes
Puntos: 38
Respuesta: divisores de un numero de mayor a menor

Pues a mi si me funciona.
n·mero: 20
1
2
4
5
10
20

Process returned 0 (0x0) execution time : 8.359 s
Press any key to continue.

Lo unico que vi fue el /* qu etienes al principio, eso marca todo como comentario, no se si es eso :/
  #3 (permalink)  
Antiguo 25/01/2014, 13:09
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años, 6 meses
Puntos: 20
Respuesta: divisores de un numero de mayor a menor

Lo probé y también me funciono bien.

Cita:
Iniciado por vangodp Ver Mensaje
Lo unico que vi fue el /* qu etienes al principio, eso marca todo como comentario, no se si es eso :/
Probá lo que dice vangodp. Borrá ese /*.

Si sigue sin funcionar pega acá el resultado o el error que te da.

Saludos.
  #4 (permalink)  
Antiguo 25/01/2014, 13:24
 
Fecha de Ingreso: junio-2009
Ubicación: House
Mensajes: 38
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: divisores de un numero de mayor a menor

Hola manel, claro el resultado te lo da de menor a mayor por que son los primeros elementos que se guardan en divisor , y al parecer tu los quieres de mayor a menor, he hecho el codigo, y me dio el resultado de mayor a menor, aqui dejo el codigo, dure una hora y media haciendolo tambien soy noob xd pero me parecio interesante para agarrar exp
Cita:
#include <stdio.h>
#include <conio.h>
main()
{
int num,temp,i,j;
int divisor[10],cd,gi[10];
cd=0;




printf("Ingrese numero");
scanf("%d",&num);


for (i=1;i<=num;i++)
{
if (num % i == 0)
{
divisor[i]=0;
divisor[i]=i;
printf("%d ",divisor[i]);
cd=cd+1;
gi[cd]=divisor[i];




}
}


printf("\n");

for (i=1;i<=cd;i++)
for (j=i+1;j<=cd;j++)
{
if(gi[i]<=gi[j])
{
temp=gi[j];
gi[j]=gi[i];
gi[i]=temp;
}

}

for (i=1;i<=cd;i++)
{
printf("%d ",gi[i]);
}




getch();
}
El nucleo del problema en si es guardar los divisores en el espacio del vector adecuado, cualquier duda sobre el codigo por aqui estamos, luego de guardar los divisores en el divisor proceder a hacer el ordenamiento por el metodo burbuja que es el que conozco.

Última edición por RaKKoS; 25/01/2014 a las 13:30
  #5 (permalink)  
Antiguo 25/01/2014, 18:27
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años, 6 meses
Puntos: 20
Respuesta: divisores de un numero de mayor a menor

Cita:
Iniciado por RaKKoS Ver Mensaje
...al parecer tu los quieres de mayor a menor...
Eso me pasa por leer rápido

Otra opción a la que hizo RaKKoS es modificando estas lineas de tu código

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main(void) {  
  4.     int numero;
  5.     int divisor;
  6.    
  7.     printf("número: ");
  8.     scanf("%d", &numero);
  9.    
  10.     divisor=numero; /* Linea agregada */
  11.    
  12.     while (divisor >= 1) {  /* Linea modificada */
  13.         if (numero % divisor == 0) {
  14.             printf("%d\n", divisor);
  15.         }
  16.         divisor--; /* Linea modificada, resta ya que empieza de mayor a menor*/
  17.     }
  18.    
  19.     return 0;
  20. }

Te comenté en el mismo código las modificaciones que hice.

La idea del programa es igual a como lo hiciste vos pero empezando de mayor a menor, por eso primero igualo el divisor al numero ingresado y se le resta hasta llegar a 1, ya que el maximo divisor va a ser el propio numero y el menor divisor será el 1.

Espero te sirva.
Saludos
  #6 (permalink)  
Antiguo 26/01/2014, 06:33
 
Fecha de Ingreso: junio-2009
Ubicación: House
Mensajes: 38
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: divisores de un numero de mayor a menor

Payaso una pregunta tu codigo sirve para ordenar un vector? los elementos del vector lo imprime decreciente ?
  #7 (permalink)  
Antiguo 26/01/2014, 10:30
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años, 6 meses
Puntos: 20
Respuesta: divisores de un numero de mayor a menor

Cita:
Iniciado por RaKKoS Ver Mensaje
Payaso una pregunta tu codigo sirve para ordenar un vector?
No RaKKoS, no ordena un vector, no usa ningún vector, sólo recorre los valores de mayor a menor, se fija si es divisor y lo imprime en pantalla o lo saltea, no guarda los datos en ningún arreglo.

Cita:
Iniciado por RaKKoS Ver Mensaje
los elementos del vector lo imprime decreciente ?
Sí, los imprime en forma decreciente, pero no usa ningún vector.

Para que haga lo que vos decis se le tendría que agregar un par de líneas en la cual se guarde el elemento en un arreglo para despues imprimir el arreglo o modificarlo.

Espero te sirva, cualquier cosa que no se entienda pregunta.
Saludos.
  #8 (permalink)  
Antiguo 26/01/2014, 14:03
 
Fecha de Ingreso: marzo-2012
Mensajes: 180
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: divisores de un numero de mayor a menor

Gracias por todas las respuestas, solucionado :)

Etiquetas: int, mayor, menor, numero, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:00.