Autor
|
Tema: ERROR en programa para factorizar desde un numero (Leído 8,740 veces)
|
Puntoinfinito
Desconectado
Mensajes: 919
#! /win/archlinux
|
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. 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... #include <iostream> #include <string> using namespace std; int main() { int a = 0; char i[100]; cin >> a; if (a != 0) { for (int b = 0;a > b;a--) { i[a] = a; cout << i[a] << " "; } } return 0; }
|
|
|
En línea
|
|
|
|
Blaster
Desconectado
Mensajes: 190
|
Creo que utilizas el tipo de dato inapropiado para este caso: 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: #include <iostream> using namespace std; int main() { int a = 0; int j[100]; cout << "Ingrese un numero: "; cin >> a; for(int i = 0; a > i; a--){ j[a]= a; cout << j[a] << " "; } cin.get();cin.get(); return 0; }
Un saludo
|
|
« Última modificación: 17 Octubre 2012, 02:51 am por neo-System »
|
En línea
|
|
|
|
Puntoinfinito
Desconectado
Mensajes: 919
#! /win/archlinux
|
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
|
|
|
|
0xDani
Desconectado
Mensajes: 1.077
|
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
Mensajes: 919
#! /win/archlinux
|
Ya me quedo todo claro, para arrays de valor numeral mejor utilizar int[]
|
|
|
En línea
|
|
|
|
Puntoinfinito
Desconectado
Mensajes: 919
#! /win/archlinux
|
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
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
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
Mensajes: 1.842
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Descomponer o factorizar un numero
Programación Visual Basic
|
Neobius
|
1
|
8,301
|
20 Abril 2006, 19:14 pm
por Robokop
|
|
|
Programa en C para encontrar el segundo número menor ingresado ..
Programación C/C++
|
theluigy13etv
|
4
|
11,732
|
26 Julio 2011, 09:35 am
por Dark Invader
|
|
|
Programa para robar informacion desde el pc al pendrive para LINUX
Hacking
|
wanwen
|
3
|
5,457
|
21 Octubre 2011, 18:24 pm
por Uxio
|
|
|
Programa que no funciona para adivinar un numero
.NET (C#, VB.NET, ASP)
|
eva87
|
1
|
3,046
|
19 Abril 2012, 00:28 am
por $Edu$
|
|
|
Error programa que cambia un número de base 10 a cualquier base
Programación C/C++
|
ERIK546
|
7
|
6,528
|
16 Mayo 2012, 03:59 am
por ERIK546
|
|