Hola comunidad, está vez les traigo mi primera aplicación "oficial" para PC. Es un tanto simple, sin embargo estoy muy orgulloso de ella por ser mi primer aporte.
Se trata de una aplicación que resuelve ecuaciones de segundo grado, es parecida a esta, sin embargo la que he creado yo, es nativa de Linux, así que si alguién decide probarla o mirarse el código fuente, apreciaria muchisimo si me dijera errores o me comentara malos vicios de programación que he aprendido, también se aceptan sugerencias, más que nada el fin de esta aplicación es retroalimentarme para poder traer aplicaciones cada vez mejores :-)
La aplicación está constuida en C++
Descarga Equation Killer v1.0
Descarga Equation Killer v1.0 (Versión windows)
Nota: En la descarga vienen juntos el ejecutable y el código fuente.
Saludos
Algunas cosas
Bueno, he visto el programa (la versión windows que la otra no hay forma de descargarla xDDDD), y como querías comentarios sobre programación, aquí te dejo los míos. (no es que lo que hayas hecho esté mal), son algunas indicaciones que espero te sean de ayuda:
Ficheros header: En principio te sobra el stdio.h, aquí no hace falta. Además es buena práctica usar los includes de c++ que hacen referencia a C, tienen el mismo nombre, pero comenzando en "c" y sin extensión. La cabecera se quedaría asi:
(en realidad los *.h de c++ no son más que "dummies" que llaman a los reales de c++)
Espacio de nombre std:
El using namespace std, lo pones en cada función. Yo suelo ponerlo de forma global antes de la declaración de las funciones. De esta forma te ahorras el indicarlo dentro de cada función. Si tuvieras que usar otro espacio de nombre, con poner el using namespace dentro de esa función "macharías" el std sólo en ese ambito y no tendrías problema.
Hay gente que no recomienda usar std de forma global, yo la verdad no veo porque, la final se acaba usando más de la cuenta, no sólo hace falta para cout y cin, también para strings, etc. De todas formas esto es algo personal mío y puede haber gente que no esté de acuerdo.
Estilo en las llaves:
Esto también es subjetivo a mi gusto (y a mucha más gente), y por supuesto no tiene que ser un dogma, pero poniendo las llaves después de linea al declarar un método/función y en la misma linea después de una sentencia tipo if, for. el código queda más legible y con menos espacios blancos. Por ejemplo:
En cualquier caso, el estilo no es tan importante si siempre se usa el mismo en todo el proyecto.
Compilación multisistema:
Teoricamente, usando C++ "puro" y tirado sólo de la STL, se puede compilar código en cualquier plataforma que tenga un compilador. El problema viene al usar cosas como system(). En este caso, como ha dicho niteman más abajo, la instrucción de UNIX y LINUX para borrar la pantalla es cls, mientras que en Window$ es clear (pa variar, ellos son así) .
Puedes hacer un código funcional en ambas plataformas usado las instrucciones de preprocesado #ifdef. Así en tiempo de compilación se compilarán sólo las instrucciones de la arquitectura que s esté compilando. Me explico mejor con un ejemplo:
Como en el código usas varias veces system(), es mejor poner esa instrucción una sóla vez en una función, por ejemplo borrar_pantalla(). Al final quedaría así:
Luego, tan sólo es indicar que se use el parámetro -DWIN para compilarlo desde Windows (esto define una variable "WIN" que es la que usa #ifdef), el compilador sólo compilará lo que esté dentro del "if" correspondiente y sólo usará el "clear" en la plataforma Window$. Para los usuarios Window$ se puede crear un LEEME-WINDOWS.txt indicando que usen el parámetro -DWIN, o crear un fichero .bat, etc.
Terminado (que menudo rollazo he soltao... buff)
El código me parece muy bien estructurado, una sintaxis clara, bien
sangrado, comentarios precisos, nombres de las variables correctos. En serio, vas por buen camino, se nota
un código en el que tienes las cosas muy claras y entiendes todo (y
esto es lo más importante).
Las indicaciones anteriores, son sólo eso indicaciones, no correciones. Sólo darte la enhorabuena al mundo de la programación y más si el estrenos ha sido con software libre ;-).
P.D: Gracias por los créditos
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
Grandioso!
Esto es lo que esperaba, en cuanto a lo de los ficheros header, el espacio de nombre global, y la compilación multisistema, puedo decir que no tenia ni idea, gracias por aclararlo.
El estilo de llaves, la verdad no me termino de acostumbrar al que has puesto, por eso use el otro me parece más "legible" de cualquier forma seguiré probando para ver cual se me acomoda mejor visualmente.
Tengo que confesar que cuando estaba elaborando los creditos, estaba practicamente rezando para que no se avegonzaran de aparecer en la aplicación
Pues no tengo más que decir, gracias por los consejos, los pondré en práctica
PD: En el source puedes ver cómo he logrado la comprobación de caracteres y numeros, básicamente es esto:
Aún no entiendo muy bien cómo funciona, se supone que cin compara el dato introducido con el tipo de dato de la variable, devuelve 0 si no coinciden, o al menos eso es lo que he entendido, si estoy mal, agradeceria la correcion.
Saludos.
Ya Vi
Ya vi que por mis preguntas tontas se han puesto a trabajar en verdad les pido una disculpa a todos, aunque ya vi que esta la version para windows y lo probare, sinceramente muchas gracias ahora vere que tanto funciona para mi Carrera (Ingeniera Quimica); Saludos y muchas gracias.
Atte.: Kari Boo y erdevilpsp :.
Viva México, Dark-Alex, El PSP y Claro: SceneBeta.com
Atte.: Kari Boo, Erdevilpsp y Mahasnake :.
Si tienes sugerencias
Postealas con toda la confianza del mundo, aún es un trabajo en progreso y estoy dispuesto a trastear con el un buen rato.
Saludos.
Error en la URL
No funciona la url de descarga :/
Prueba de nuevo
Quiza los servidores estaban caidos o algo por el estilo.
Saludos.
que raro
a mi si me funciona...
Creo que es su propio PC
Creo que la dirección corresponde a su propio PC y debe tenerlo apagado.
Salu2
Nop
La que correspone a mi PC es xxzeroxx.homelinux.com, esta descarga es de xxzeroxx.netne.net, está en los servidores de 000webhosting.
Saludos.
Hola
Que tal amigo en primer lugar mis respetos por saber programar y a todos que saben hacerlo, ahora solo una pregunta dices que es nativo de linux o algo asi cosas que la verdad yo no entiendo, pero la pegunta es, ¿ Sirve para Windows y en cual ? saludos y sigue adelante.
Atte.: Kari Boo y Erdevilpsp :.
Viva México, Dark-Alex, El PSP y Claro: SceneBeta.com
Atte.: Kari Boo, Erdevilpsp y Mahasnake :.
La verdad no lo se
Me refiero a que la aplicación fue hecha para Linux, probablemente al tratarse de una aplicación que usa funciones comunes en ambos sistemas sea posible compilarla en Windows, yo no lo he hecho pues no cuento con este Sistema Operativo.
Si quieres, puedes intentar compilar la aplicación descargando el código fuente y abriendolo con el devc++, si compila sin errores, entonces será usable en windows (creara un .exe) si no, postea el error y vere si puedo resolver algo.
Gracias por tu comentario :D
Saludos.
Si quieres
yo te puedo ayudar a compilarlo en windows, precisamente estoy viendo este tema en matemáticas y tengo varios ejercicios para probarlo, además de que cuento con conocimientos básicos en programación y con el programa devc++.
Saludos.
EDITO: Añadí al hilo la descarga para windows.
SceneBeta.com
Gracias
Me aseguraré de agregarte a los creditos cuando me encargue de la siguiente versión.
Saludos.
De nada
si necesitas algo más aqui estoy.
Saludos.
Aceptado
Gracias, me quitas un peso de encima, si tienes problemas postealos para ayudarte.
Saludos.
El programa funciona bien
pero al compilar me muestra lo siguiente:
"clear" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.
--------------------------------------------------------------
||Bienvenido, por favor siga las intrucciones que se presentan||
---------------------------------------------------------------
Equation Killer Copyright (C) 2009 By: xXZeroXx
1.- Resolver ecuacion de segundo grado (Requiere terminos a, b y c)
2.- Ver los creditos de la aplicacion
3.- Salir
>>
Lo que puse en negritas es lo que me preocupa, ¿Alguna idea de como arreglarlo?
PD. ya ni me dio tiempo de decirte, ENHORABUENA.
SceneBeta.com
Cambia
Ese comando por culauquier sinonimo en Win2 que limpie la consola de comandos, cómo dice NITEMAN, creo que es cls.
Saludos.
Puedes usar...
La libreria conio.h y agregarle la funcion de limpiar pantalla, creo que se escribe clsscr() o algo asi, investiga ;).
Un saludo.
No es buena idea
conio.h no es estándar ni de C ni de C++, y *creo* que no está para linux (aunque algún hacker se habrá currado un port, seguro). Lo mejor es usar directivas de preprocesador (#ifdef) junto con la sugerencia de niteman
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
See, pero una cosa....
Cuando dije que use la libreria conio.h me referia a robione por que se supone que el lo compilaria para windows, no?.
De todas formas, no crei que fuera necesario usar las directivas de procesado, pero de la forma que lo explicaste, es mas comodo que estar cambiado en otro codigo xDDD.
Un saludo y gracias.
Manual del Perfecto Votante Para un voto libre y justo!.
TheGCProjects
Idea tonta
Prueba a sutituir "clear" por "cls".
Salu2
Funciono
Gracias.
Ah bueno
Lamentablemente solo soy un pequeño y humilde tecnico en chompus, la verdad no se ni de que me hablas, al decir que haga una compilacion, ademas no uso Linux si ofender a nadie pero la verdad eh probado varias distros de Linux y ninguna me agrado, no quiero que haya un conflicto, por eso menciono con respeto que a mi no me gusta, solo uso Windows XP, Vista y Se7en; pero un dia que me anime a tratar de ver como hacer lo que me mencionaste de compilaciones me pondre a realizar pruebas y vere de todos modos gracias y saludos, sigue adelante con tus proyectos, espero nadie te ponga limites. Saludos xXZeroXx
Atte.: Kari Boo y Erdevilpsp :.
Viva México, Dark-Alex, El PSP y Claro: SceneBeta.com
Atte.: Kari Boo, Erdevilpsp y Mahasnake :.
Cuando dice ...
Nativo de linux, se refiere a que solo funciona en linux xDDD, por el momento, tal vez.
Un saludo.
PD: Felicidades Zeo por tu primera apli, que pena que no puedo probarlo, pero aun asi.
Manual del Perfecto Votante Para un voto libre y justo!.
TheGCProjects
Gracias
Ale viendo esto quiza me robare las PC's de mi escuela un minuto para intentar compilar la aplicación xD
Gracias por el comentario.
Saludos.