elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ERROR en programa para factorizar desde un numero
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ERROR en programa para factorizar desde un numero  (Leído 8,740 veces)
Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
ERROR en programa para factorizar desde un numero
« en: 17 Octubre 2012, 00:08 am »

Buenas elhackeros.

Tengo que hacer un programa que la entrada sea un numero cualquiera que sera guardado en una variable, luego ha de guardar en variables diferentes la factorizacion en descenso de ese numero. (Por ejemplo. Entrada: 4, las variables seran; 4,3,2,1)

Entonces cada numero de factorizacion se le ha de asignar una variable, y luego en la salida mostrar todas las variables guardadas de dicho numero.

No se si estara muy claro, lo dudo... Por eso os dejare un ejemplo.

Código:
Entrada:5
Salida*:5 4 3 2 1

*El metodo de salida ha de ser cout << variable[];

Os dejo el código en c++ que yo he echo. Algo mal hay...

Código
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. int a = 0;
  9. char i[100];
  10. cin >> a;
  11. if (a != 0) {
  12. for (int b = 0;a > b;a--) {
  13. i[a] = a;
  14. cout << i[a] << " ";
  15. }
  16. }
  17. return 0;
  18. }


En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: ERROR en programa para factorizar desde un numero
« Respuesta #1 en: 17 Octubre 2012, 02:48 am »

Creo que utilizas el tipo de dato inapropiado para este caso:
Código
  1. char i[100];

 Los diferentes tipos de datos tienen cierta capacidad, es decir, el char equivale a un byte, por lo que solo puedes guardar valores de 0 a 255 (sin signo, con signo es de -127 a 128) mientras un int es de 2 bytes y tiene mas capacidad y si quieres guardar un numero mayor a 255 en un char te dara resultados no deseados.
 Te dejo el code nose si es lo que buscas:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. int a = 0;
  8. int j[100];
  9.  
  10. cout << "Ingrese un numero: ";
  11. cin >> a;
  12.  
  13. for(int i = 0; a > i; a--){
  14.        j[a]= a;
  15.   cout << j[a] << " ";
  16.   }
  17. cin.get();cin.get();
  18. return 0;
  19. }

Un saludo  ;)


« Última modificación: 17 Octubre 2012, 02:51 am por neo-System » En línea

Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: ERROR en programa para factorizar desde un numero
« Respuesta #2 en: 17 Octubre 2012, 09:44 am »

Eso es lo que queria, gracias :)

Pero si char puede contener hasta 255 sin signo, porque no deja ejecutar este, tiene tan solo 100.

Saludos y gracias :)
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: ERROR en programa para factorizar desde un numero
« Respuesta #3 en: 17 Octubre 2012, 12:06 pm »

El tamaño del tipo int es variable dependiendo de la plataforma en la que estes, pero en la mayoria es de 4 bytes, 2 bytes suele ser un short. De todas formas podeis averiguar el tamaño de los tipos en vuestros ordenadores usando el operador sizeof().

Saludos.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: ERROR en programa para factorizar desde un numero
« Respuesta #4 en: 17 Octubre 2012, 19:20 pm »

Ya me quedo todo claro, para arrays de valor numeral mejor utilizar int[]
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: ERROR en programa para factorizar desde un numero
« Respuesta #5 en: 18 Octubre 2012, 23:15 pm »

Aprovecho este hilo para preguntaros otra cosa.

Desde este código, ahora es posible que diga la multiplicación de todos los números imprimidos?

Por ejemplo si escribes 5 la salida será : 5*4*3*2*1 = 120
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: ERROR en programa para factorizar desde un numero
« Respuesta #6 en: 18 Octubre 2012, 23:23 pm »

Aprovecho este hilo para preguntaros otra cosa.

Desde este código, ahora es posible que diga la multiplicación de todos los números imprimidos?

Por ejemplo si escribes 5 la salida será : 5*4*3*2*1 = 120

cuando decis "la salida sera: ..." te referis a que lo muestre en una cadena no?
bueno muy facil, primero calcularia la factorizacion del numero, luego como podreis fijarte el codigo de los numeros empieza de 0x30 a 0x39 entonces podeis hacer un incremento a 0x30 a la variable que contiene el numero así se convierte en el codigo
que representa al numero. luego copiarlos en un buffer, yo haria un pequeño parser por cierto. muy facil.




En línea

$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: ERROR en programa para factorizar desde un numero
« Respuesta #7 en: 18 Octubre 2012, 23:37 pm »

Pregunto solamente.. porque usas un array? todavia de 100 sin saber cual numero pondra el usuario?

Haces un bucle, que vaya desde la variable (numero que ingreso) hasta 1. Vas imprimiendo cada numero seguido de "*" y te queda "5*4*3*2*1" como querias.

Pero ahora con lo nuevo que dijiste, para sacar el factorial de un numero, podes usar la Recursividad, si no sabes que es busca en google que hay info. Fijate que el factorial de 5 (5!) es igual a 5*4!, y a la vez 4! es igual a 4*3! y 3! es igual a 3*2! y 2! es igual a 2*1! que es 2. Que quiero decir con esto? que usando la recursividad, llamando al mismo procedimiento podes hacer algo simple como esto:

Factorizar(n) {
if (n=2) return 2;

return Factorizar(n) * Factorizar(n - 1)

}

Y si lo entiendes y te gusta esa forma, podes agregarle que muestre la variable n antes del ultimo return, asi como explique al principio.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines