Anuncios Google

Equation Killer

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


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de pspgorrister

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:

#include <iostream>
#include <cmath>
#include <cstdlib>

(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:

int main()
{
    if (variable == false) {
        cout << "Mentiroso!";
    }
}

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í:

void borrar_pantalla() {
#ifdef WIN
    system("clear");
#else
   system("cls");
#endif
}

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 Vergüenza


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de burnxez

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 Vergüenza

Pues no tengo más que decir, gracias por los consejos, los pondré en práctica Guiño

PD: En el source puedes ver cómo he logrado la comprobación de caracteres y numeros, básicamente es esto:

int a;
 
if ((cin >> a) == 0) {
cout << "A mi no me la das, ¡ESO NO ES UN NUMERO!" << endl;
}

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.

Imagen de erdevilpsp

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 :.

Imagen de burnxez

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.

Imagen de pspgorrister

Error en la URL

No funciona la url de descarga :/

Imagen de burnxez

Prueba de nuevo

Quiza los servidores estaban caidos o algo por el estilo.

Saludos.

Imagen de _-Viciuz-_

que raro

a mi si me funciona...

Imagen de NITEMAN

Creo que es su propio PC

Creo que la dirección corresponde a su propio PC y debe tenerlo apagado.

Salu2

Imagen de burnxez

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.

Imagen de erdevilpsp

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 :.

Imagen de burnxez

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.

Imagen de Robione22

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.

Imagen de burnxez

Gracias

Me aseguraré de agregarte a los creditos cuando me encargue de la siguiente versión.

Saludos.

Imagen de Robione22

De nada

si necesitas algo más aqui estoy.

Saludos.

Imagen de burnxez

Aceptado

Gracias, me quitas un peso de encima, si tienes problemas postealos para ayudarte.

Saludos.

Imagen de Robione22

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.

 

Imagen de burnxez

Cambia

Ese comando por culauquier sinonimo en Win2 que limpie la consola de comandos, cómo dice NITEMAN, creo que es cls.

Saludos.

Imagen de Guillermo_Cornielle

Puedes usar...

La libreria conio.h y agregarle la funcion de limpiar pantalla, creo que se escribe clsscr() o algo asi, investiga ;).

Un saludo.

Imagen de pspgorrister

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.

Imagen de Guillermo_Cornielle

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

Imagen de NITEMAN

Idea tonta

Prueba a sutituir "clear" por "cls".

Salu2

Imagen de Robione22

Funciono

Gracias.

Imagen de erdevilpsp

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 :.

Imagen de Guillermo_Cornielle

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

Imagen de burnxez

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.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.