Autor
|
Tema: [Source] Calculadora Calc Don 0.7 (Leído 23,203 veces)
|
Dryken
Desconectado
Mensajes: 117
El arte de vencer se aprende en las derrotas
|
daniyo ya he colocado en la primera entrada de este post la segunda update del codigo con algunas mejoras y la interfaz por la que preguntas, no es nada del otro mundo pero al menos como que da alegria para los ojos avesudra ni yo tambpoco estoy hoy bien del coco, un dia raro lo tenemos todos Por cierto voy incluyendo a medida que avance algunos cambios de la mejora que hiciste del codigo, por ejemplo, a ver si pillo tu conversor de binario a decimal y vivecersa...la cosa es que el jodido dev-c++ no me lo compila A ver si tambien me da por cuando este mas completo meterlo por capas como tu las hecho, se veia mas ordenado y organizado. Aun quiere hacerle muchos mas cambios al programa, a ver si encuentro mas tiempo libre
|
|
|
En línea
|
|
|
|
avesudra
Desconectado
Mensajes: 724
Intentando ser mejor cada día :)
|
Dryken deberías bajarte codeblocks no por nada pero es que dev-cpp es un proyecto casi abandonado hace poco salió una versión de alguien pero ya está un poco viejo, además de todo codeblocks se puede instalar en linux y windows.En cuanto al código mejorado lo único que he hecho es meter las variables y lo que se hace dentro de una función no es tan complicado y te queda todo mucho más limpio.Y lo del conversor de binario a decimal en pseudocódigo es: Reservamos 64 espacios de memoria para una cadena (bin)la cual contendra el numero en binario. Pedimos que el usuario introduzca un número en binario y lo guardamos en la cadena(bin). Declaramos una variable de 64 bits que contendrá el resultado(res); Declaramos una variable contador(i) Declaramos un puntero al final de la cadena(bin) que introdujo el usuario(p_f_bin) Mientras el puntero (p_f_bin)no sea igual que la cadena(bin)-1(Hablamos de direcciones de memoria)Haz esto: { Si el contenido del puntero al final de la cadena -48(para pasarlo a decimal)es igual que 1 haz esto: { Suma y asigna a la variable resultado (res)la potencia de dos elevada a la variable contador(i) } Aumenta variable contador (i) Disminuye variable puntero a final de la cadena(p_f_bin) }
|
|
« Última modificación: 12 Julio 2012, 02:31 am por avesudra »
|
En línea
|
Regístrate en
|
|
|
0xDani
Desconectado
Mensajes: 1.077
|
Veo que le has puesto el titulo de la ventana, que solo funciona en windows, podrias poner eso asi: #ifdef _WIN32 HWND ocultar; //El resto del codigo para ponerle titulo. #endif
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
|
|
|
Dryken
Desconectado
Mensajes: 117
El arte de vencer se aprende en las derrotas
|
avesudra lo del proyecto abandonado me lo comentaron hace bastante tiempo aunque es verdad lo del nuevo, tiene buena pinta, lo llevo usando unas cuantas semanas, el programa mejora pero los bugs lo siguen sin corregir. http://orwelldevcpp.blogspot.com.es/Por cierto, gracias por explicar como se forma el code el conversor, estaba con tu codigo casi conseguido del conversor pero al final por una cosa que no iba y por el cansancio decidi dejarlo, aun asi al final consegui sacar otro code algo mas simplificado del mismo conversor decimal-binario. Lo publicare dentro de poco con la proxima update. daniyo probe a colocarlo como dices pero no entiendo porque no deja, probare con el code blocks...bueno, en principio por el tema de portabilidad no debe de dar problemas ya que la libreria de windows solo se "activa" cuando el compilador detecte el SO, en caso contario no ocurre nada de problem con Unix...o eso imagino que sucede. EditoHa sido actualizada la calculadora con nuevas funciones
|
|
« Última modificación: 13 Julio 2012, 00:48 am por Dryken »
|
En línea
|
|
|
|
avesudra
Desconectado
Mensajes: 724
Intentando ser mejor cada día :)
|
Edito
Ha sido actualizada la calculadora con nuevas funciones
Es mejor como consejo que te esfuerzes en poner el código como el mío o otra forma de estructuración , es más fácil trabajar con las cosas bien ordenadas. PD: El código de tu conversor no está mal , pero solo acepta hasta 16 bits o 2^16 lo que es en numero entero 65536 , a partir de ahí se traba, en ese caso también la hubiese hecho yo más eficiente ¡Un saludo Crack!
|
|
« Última modificación: 13 Julio 2012, 04:25 am por avesudra »
|
En línea
|
Regístrate en
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. Te dejo mi calculadora que hice en la Univ. para mi profesor de Métodos Numéricos, resuelve expresiones complejas como: +-+-4(5h^sqr(e(ln(4(5/10)))^sqr(2*2)))(cos(h)^2+sin(h)^2) * Identifica automáticamente las variables. * Maneja Variables (lo deje para usa sola variable)... en si se pueden usar N Variables y resolver sus valores.Arrojando el resultado correcto. SourceCode. ( Deje el ejecutable Funcional dentro de la carpeta Bin/Release ). int main() { equation oEquation; //equation oGrado; Clase por si el grado es de alguna manera no procesable como cos(x) o cos(x)^2+sin(x)^2 string str; int iOption = 0, iDivs = 0, iFlags, iOrden = 0; int iPresicion = 5; bool bNewEquation = false; long double ldH = 0.0f, ldArea = 0.0, ldRange[2] = {}; do { system("cls"); cout << endl << "Programa Creado por: Ortega Avila Miguel Angel 4B (Vespertino)." << endl << endl; cout << "Sintaxis------" << endl; cout << "Multiplicacion Divicion suma y resta" << endl << "\ta*b, a/b, a+b, a-b, -a, +b"; cout << "Trigonometricas:" << endl << "\tcos(x), sin(x), tan(x), csc(x), cot(x), sec(x)" << endl; cout << "Valor absoluto:" << endl << "\tabs(x)" << endl; cout << "Exponencial logaritmo natural:" << endl << "\te(x), ln(x)" << endl; cout << "Potencias y raiz cuadrada:" << endl << "\tx^y, sqr(x)" << endl; cout << "--------------" << endl; cout << "Nota: Se permite el uso de cuarquier variable (el programa la identifica automaticamente)." << endl; cout << "Ejemplo: 4(5h^sqr(e(ln(4(5/10)))^sqr(2*2)))(cos(h)^2+sin(h)^2)" << endl << endl << endl; cout.precision(2); cout.setf(ios::fixed, ios::floatfield); while (1) { if (tolower(str[0]) != 'r') { cout << "Ingrese una ecuacion: "; getline(cin, str); //str = "4(5h^sqr(e(ln(4(5/10)))^sqr(2*2)))(cos(h)^2+sin(h)^2)"; oEquation.Equation(str); if ((oEquation.GetFlags() & FLAG_SINTAX)) { cout << "\tError: Sintaxis de la ecuacion errorea No se permiten dos operados contiguos (inclusive signos)." << endl << endl; } else if ((oEquation.GetFlags() & FLAG_INVALIDTYPE)) { cout << "\tError: Caracteres no procesables." << endl << endl; } else if (oEquation.Variables.size() > 1) { // Hay mas de una variable?. cout << "Error: Ingresa una ecuacion con una sola variable." << endl << endl; } else { break; // while(1) } } else { cout << "Ecuacion: " << oEquation.Equation() << endl << endl; break; } } system("cls"); bNewEquation = false; while(!bNewEquation) { cout << "Programa Creado por: Ortega Avila Miguel Angel 4B (Vespertino)." << endl << endl; cout << "Leyenda (Posibles resultados):" << endl; cout << "nan. = Imposible de calcular (Resulta por ejemplo de raices imaginarias)." << endl; cout << "inf. = Numero Infinito (por ejemplo: Una divicion entre 0)." << endl << endl; cout << "Ecuacion: " << oEquation.Equation() << endl << endl; cout << "[0] Resolver Operacion."<< endl; cout << "[1] Calcular derivada."<< endl; cout << "[2] Calcular area bajo la curva (Integracion por trapecios)."<< endl; cout << "[3] Ingresar otra ecuacion."<< endl; cout << "[4] Definir la presicion (cantidad de dcimales a mostrar)." << endl; cout << "[5] Terminar aplicacion." << endl << endl; cout << "Opcion: "; if (!getInt(&iOption, true)) { cout << "Error: Solo Numeros Decimales." << endl << endl; } else { cout << endl; switch (iOption) { ... ... Es un código un tanto largo... ...
Dulces Lunas!¡.
|
|
« Última modificación: 13 Julio 2012, 06:00 am por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Dryken
Desconectado
Mensajes: 117
El arte de vencer se aprende en las derrotas
|
avesudra si te digo la verdad me gusta tu forma que colocaste el codigo, me gustaria dejarlo asi cuando la calculadora estuviese acabada...pero para trabajar me gusta tener todo el codigo en una sola pagina para no tener que liarme yendo de un lado para otro...no se yo, sera mania mia Por cierto, si te digo la verdad no sabia que solo funcionase con 16 bits, lo he probado y es verdad, cuando coloco cifras grandes me muestra los resultado de manera negativa, vamos...con un negativo delante. ¿Como podria aumentarle los bits con los que trabajar? BlackZeroX tu calculadora es estupenda, tiene de todo, a ver si luego tengo un ratillo libre y me pongo mas tranquilamente a destriparla. Nueva Update Pequeña update de la Calc, la funcion principal que trae es que siempre que hagas una operacion de la calculadora se obtendra un resultado el cual se almacenara en un archivo de texto para mayor comodidad.
|
|
|
En línea
|
|
|
|
avesudra
Desconectado
Mensajes: 724
Intentando ser mejor cada día :)
|
Bueno ya cada uno tiene sus gustos Dryken pues mira te explico , tu utilizas el tipo de dato int , pero claro este tipo de dato sirve para negativos y positivos entonces digamos que se divide el tipo de 32 bits , en 16 bits para negativo y 16 bits para positivo , la manera de arreglarlo usando tipos de datos más grandes como los que vienen en la librería <stdint.h> o con una librería externa , gmp por ejemplo. En el código que yo te dí usaba el tipo uint64_t o sea entero sin signo de largo 64 bits , cómo este solo es positivo pues no se divide y permite 64 bits de capacidad , para más bits ya necesitas ayudarte de librerías externas. BlackZeroX , cada vez que entro en un tema en el que hayas comentado salta el antivirus, y con el enlace que me has dejado igual , ¿te sucede a menudo?
|
|
|
En línea
|
Regístrate en
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
BlackZeroX , cada vez que entro en un tema en el que hayas comentado salta el antivirus, y con el enlace que me has dejado igual , ¿te sucede a menudo?
Relajate, eso sucede con mis DNS ya reporte eso a las compañias responsables de NOD32 y BITDEFENDER, lo que pasa es que son DNS gratuitas No-IP... *En el tema de los bits ten en cuenta que el numero maximo para almacenar es 2^Bits es decir si es de: 16 bits (short int) seria 2^16 = 65536 <--- short int o int (en algunos casos) 32 bits (int, word) seria 2^32 = 4294967296 <--- int (en algunos casos) 32 bits (int, word) seria 2^32 = 4294967296 <--- long (en algunos casos) 64 bits (int, word) seria 2^64 = 18446744073709551616 <--- long int o en algunas ocasiones long long int para corroborar esto: /* Si sale: 1 es de 8 bits 2 es de 16 bits 4 es de 32 bits 8 es de 64 bits 12 es de 96 bits */ cout << sizeof(char) << endl; cout << sizeof(short int) << endl;// cout << sizeof(short) << endl; cout << sizeof(int) << endl; cout << sizeof(long int) << endl;// cout << sizeof(long) << endl; cout << sizeof(long long int) << endl;// cout << sizeof(long long) << endl; cout << sizeof(double) << endl; cout << sizeof(long double) << endl;
* Aun asi te recomiendo que mejor uses el tipo long Double ya que es mejor para este tipo de cálculos donde se encuentran cálculos con números Reales. Dulces Lunas!¡.
|
|
« Última modificación: 16 Julio 2012, 04:50 am por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Dryken
Desconectado
Mensajes: 117
El arte de vencer se aprende en las derrotas
|
Gracias a ambos por explicarlo, ya estoy mas enterado en el tema de los bits y visto lo visto empleare el long double que me recomiendas BlackZeroX, porque vaya que si permite ingentes cantidades de numeros con tantos bits.
He visto que como dice avesudra necesitas una libreria como por ejemplo la <stdint.h> o el tipo uint64_t para conseguir hasta 64 bits pero, el long double abarca hasta los 64 bits o son mas?? Porque en tal caso seria necesaria una libreria distinta para poder cargarla, a ver si consigo averiguar si con esa los carga o sino tendre que emplear otra.
Por cierto, esto de lo que estamos hablando es para numeros enteros, pero para numeros deciamles con float podria funcionar o no?
|
|
« Última modificación: 17 Julio 2012, 03:08 am por Dryken »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Source][VB] Calculadora de operaciones combinadas
.NET (C#, VB.NET, ASP)
|
raul338
|
2
|
15,111
|
30 Diciembre 2009, 22:06 pm
por Meta
|
|
|
Formual de Calc (OpenOffice)
Programación General
|
Zeroql
|
0
|
1,824
|
17 Septiembre 2012, 00:56 am
por Zeroql
|
|
|
Sencilla calculadora con reproductor de musica python (Source)
Scripting
|
-Mc_Raaka-
|
0
|
2,291
|
5 Agosto 2013, 09:52 am
por -Mc_Raaka-
|
|
|
LibreOffice Calc OOoBasic: ERROR Else sin If
Scripting
|
novicio
|
4
|
4,115
|
13 Mayo 2018, 22:39 pm
por novicio
|
|
|
No me abre calc
Bases de Datos
|
enrique4480
|
1
|
6,500
|
13 Marzo 2024, 14:07 pm
por Saberuneko
|
|