hola! necesito 1 codigo :P
Hola! :) Soy nuevo en delphi... y por ahora aprendi a hacer calculadoras (suma, diferencia, producto, division, cuadrado, raiz...) pero necesito hacer una cosa... necesito saber el codigo para hacer una calculadora que haga ecuaciones de 2º grado! :eek: No tengo ni idea, supongo que sera poner el orden bien puesto de como hacer las operaciones con parentesis. Lo intente, llevo 2 horas dandole a la cabeza y nada :). No lo consigo. Espero ayuda amigos de Delphi ^^
Saludos. |
Recibi un PM diciendo que solo es poner todas las operaciones con parentesis y tal... os digo que... soy nuevo, tengo 14 años y se poco de esto. No se como hacerlo, aqui os dejo mi codigo de mi calculadora con la que sumo para que veais mas o menos lo que sé hacer:
a:=STRTOINT(edit1.text); b:=STRTOINT(edit2.text); s:=a+b; edit3.text:=inttostr(s); *Arriba pongo las VAR :P que se me olvido poner. |
Hola kbaby, bienvenido al club, aquí no nos gusta sentirnos utilizados, sin importar la edad que tengas.
Hagamos un buen ejercicio, porque no pones lo que sabes de una ecuación de segundo grado y a partir de ahí vamos desarrollando el tema, obviamente tú lo vas a hacer en base a comentarios y sugerencias que se te hagan. Estas de acuerdo??? Salud OS |
Hola de nuevo...
Pues yo empezé con algo así: VAR a,b,c,d:integer; Begin a:=STRTOINT(edit1.text); b:=STRTOINT(edit2.text); c:=STRTOINT(edit3.text); d:=Aquí, iría, supongo, el procedimiento de la ecuación. edit4.text:=inttostr(d); end; Así empezé :P no se si voy bien ^^ !! Gracias :D |
Hola
Por lo que veo vas en un proceso mas o menos bueno. Confieso que ya no me acuerdo de las ecuaciones de segundo grado, asi que en este caso tal vez seria bueno que el maestro fueras tu.:D Con relación al uso de las variables, veo un problema: Según lo que me acuerdo (por favor corrígeme) las ecuaciones de segundo grado se basan en uno o mas interrogantes, que son Letras (osea String) y el resultado de estas suele en muchos casos ser (float) osea que contiene decimales. Viendo esto, tendrías que tener variables de tipo Real y String para poder sacar un resultado. también hay que tener en cuenta que en cuanto a las operaciones de segundo grado, se eliminan o anulan los números que coinciden (te recuerdo que casi no me acuerdo de esto), esa seria otra operacion que se tendra que hacer antes de la que planteas. Saludos |
Cita:
kbaby, sabemos que recién estás comenzando. Tanto en comprender las ecuaciones como también en esto de la programación. Te pediría que comentes con tus palabras lo que entiendes por ecuaciones de segundo grado. Si te doy un código no lo vas a entender... lo más seguro y aconsejable es que la solución y consejos que te demos se amolde a tus conocimientos. Me parece bien que hayas expuesto el código que tienes, pero el problema (según parece ser) es como ingresar la ecuación de segundo grado. Explicate con los mayores detalles posibles, no te vamos a cobrar por la cantidad de palabras. Saludos, PD: Por ser iniciado en clubdelphi el título lo dejamos pasar. Pero en lo sucesivo preferimos que tengas más cuidado al momento de elegir un título adecuado. Para mayor información la guia de estilo. |
Pues te respondo diciendo que no tengo ni idea. Empeze hace 3 dias a programar (en el colegio) y aprendimos esto. Solamente... :confused: y ahora me piden este ejercicio de la ecuacion y no tengo ni idea... soy un "n00b" en este tema. Gracias por la respuesta.
|
Ya se que no cobran... -.-''
No se que explicarte con mis palabras, yo lo que quiero son tres casillas A,B,C donde ponga las incognitas y me salgan en otras dos casillas los resultados de dicha ecuacion de 2º grado... :) No es más. Gracias. |
Entonces el problema que tenemos no es de programación, es de matemáticas :rolleyes:.
Bueno, no voy a ser malo, (de todas formas google te da la solucion) Usa lo que en esa web dice "ecuación completa" Ahora unas sugerencias: - el cuadrado de un número, lo puedes obtener con la función Intpower de delphi - la raiz cuadrada con sqrt(aqui_el_numero) - El resto de operaciones, son las normales, comentar que uses "/" para la división con decimales. - Ten cuidado al dividir, ya que si el divisor es cero, tu programa se quejará al realizar la división. PD: aprende de memoria la dichosita fórmula, que puede ser pregunta de exámen, ahí verán si copiaste la fórmula sin más o te interesaste en el tema ;). Saludos |
kbaby,
Lamento decirtelo de esta forma: ¿Como es posible que te pidan un ejercicio que implica ecuaciones de segundo grado si no viste el tema en la materia correspondiente? Como te dije. Puedo elaborarte un ejemplo, y al tema lo conozco... ya pasé por eso. Pero el código que yo te puedo elaborar es muy posible que escape a tus conocimientos. Una ecuación de segundo grado se resuelve de forma muy sencilla, igualandola a cero: a*x^a + b*x + c = 0 x = (-b/2*a) +- (Raiz(b^2 - 4*a*c))/(2*a)) De modo que se consiguen dos resultados, uno con la suma y el otro con la resta entre los miembros de la ecuación. Siendo Razi() la raíz cuadrada. Por algo te pido que escribas con tus palabras que entiendes por ecuación de segundo grado. La fórmula anterior tiene sentido siempre y cuando la solución se encuentre en los números reales, en otro caso está en el mundo de los complejos. Es decir siempre que (b^2 - 4*a*c) sea mayor o igual a cero. Para mayor info te remito a la wiki si deseas saber. Te podemos ayudar a medida que continues con el trabajo. Prueba con lo que entiendes. No quiero elaborarte el código, es necesario que tu lo aprendas... yo ya lo ví. Para mi es un repaso. Espero que puedas aceptar estas palabras, no es una reprimenda. Pero debes poner de tu parte. Saludos, |
Acotando lo que dice Lepe y Delphius, te piden 2 casillas porque las ecuaciones de segundo grado tienen la caracteristica de tener dos resultados.
x = (-b/2*a) +- (Raiz(b^2 - 4*a*c))/(2*a)) Esto se ve de dos formas x1 = (-b/2*a) + (Raiz(b^2 - 4*a*c))/(2*a)) x2 = (-b/2*a) - (Raiz(b^2 - 4*a*c))/(2*a)) Edito Creo que aqui hay un pequeño error La ecuación sería así no Delphius x = (-b +- (Raiz(b^2 - 4*a*c))/(2*a)) x1 = (-b + (Raiz(b^2 - 4*a*c))/(2*a)) x2 = (-b - (Raiz(b^2 - 4*a*c))/(2*a)) Salud OS |
|
Cita:
Salud OS |
Cita:
|
Egostar creo que lo que me dijiste me funcionara, voy a probarlo.
A ver señores... me parece que porque tenga 14 años no parais de decirme que me estudie la formula o que es problema de matematicas... a ver... LA FORMULA ME LA SE -.- Y OPERO CON ELLA, ESO ES TEMARIO DE HACE 2 AÑOS. La programacion (informatica como asignatura) la empeze esta semana, y directamente fuimos a programar, y yo empiezo desde 0 con los ordenadores. Nunca los usé. No digais mas que estudie dichosa formula que me la se -.-. GRACIAS EGOSTAR. |
¿Y cual es el problema?
Sigue continuando como venías haciendo, almacenando los valores en variables y operar con ellas de acuerdo a la fórmula. Unas funciones que te van a sacar dolor de cabeza: Sqr, Sqrt. Una es para elevar al cuadrado y la otra saca la raíz cuadrada. Saludos, |
Aquí estoy, puse esto:
VAR a,b,c:integer; x,y:real; begin a:=STRTOINT(edit1.text); b:=STRTOINT(edit2.text); c:=STRTOINT(edit3.text); x:=(-b + (SQRT(b^2 - 4*a*c))/(2*a)) y:=(-b - (SQRT(b^2 - 4*a*c))/(2*a)) edit4.text:=inttostr(x); edit5.text:=inttostr(y); end; Me da error, no se donde, pero....¿qué hago? |
Cita:
Salud OS |
VAR a,b,c,d:integer;
x,y:real; begin a:=STRTOINT(edit1.text); b:=STRTOINT(edit2.text); c:=STRTOINT(edit3.text); x:=(-b + (SQRT(SQR(b) - 4*a*c))/(2*a)) y:=(-b - (SQRT(SQR(b) - 4*a*c))/(2*a)) edit4.text:=inttostr(x); edit5.text:=inttostr(y); end; Aja ^^ asi hice ^^ creo que lo puse bien no? Aunque sigue dando error. Lo pongo lo que dice: Missing operator or semicolon Missing operator or semicolon Y otro quejandose del inttostr... (es muy largo jeje). Gracias ! ^^ |
Cambie INTTOSTR por FLOATTOSTR y funciona... no me acorde que X e Y son Reales ... lo siento ! ^^ Pero ahora sigue lo del error del semicolon T.T
Missing operator or semicolon |
Cita:
Salud OS |
Hola de nuevo, ya vi el fallo los ; dichosos ! Bueno, para probarla puse:
A=1 B=1 C=1 y me dio error, tal que... SE CERRO EL PROGRAMA XD Y PERDI TODO (menos mal que guarde el codigo antes xD). ¿Por qué? Pruébalo porfavor: VAR a,b,c,d:integer; x,y:real; begin a:=STRTOINT(edit1.text); b:=STRTOINT(edit2.text); c:=STRTOINT(edit3.text); x:=(-b + (SQRT(SQR(b) - 4*a*c))/(2*a)); y:=(-b - (SQRT(SQR(b) - 4*a*c))/(2*a)); edit4.text:=floattostr(x); edit5.text:=floattostr(y); end; Muchas gracias de verdad. |
Hola
Muy impresionante, te felicito. El problema lo tienes aqui: saludos |
Es el mismo codigo o.O creo que no viste el ultimo POST, lo habia corregido ya antes ^^ pero gracias. O alomejor me equivoco, te refieres a los ;
|
Cita:
Intenta con estos valores que no te darán error a=1 b=-5 b=6 El resultado debera ser x=3 y=2 Salud OS |
¿Por qué Señor, por qué yo :eek:?
X=5,5 Y=4,5 ¿Por qué soy tan... tonto...? Nada.. supongo que es un error de calculo en: x:=(-b + (SQRT(SQR(b) - 4*a*c))/(2*a)); ¿No? |
Cita:
x:=(-b + (SQRT(SQR(b) - 4*a*c))/(2*a)); cambia por esto x:=(-b + (SQRT(SQR(b) - (4*a*c)))/(2*a)); Salud OS |
Muahaha sigue igual, maldita calculadora xD sigue igual jaja no se que le pasara. Siento darte dolor de CABEZA :p
PD: Hice el post despues de ver el edit ok? :P PD2: Eso ya lo habia visto yo, lo del ) ... :P estoy aqui con la ecuacion en un papel, viendo en que falla el asunto xD, si me vieras, tengo todo con goma de borrar xD. |
Cita:
Salud OS Edito: :D:D:D, veo que te está faltando un ) eso es un error común, no te aflijas, para cada ( debes tener un ). |
Cita:
Pregunta 2: ¿No usas la X ni la Y? Voy a probarlo, ahora te cuento ^^ |
Cita:
El ShowMessage lo uso para mostrar en una pantalla el resultado, no lo uses ahora, mejor dale una leida a la ayuda para que veas de que se trata, después lo usaras mucho. Salud OS |
Diferencias que encuentro:
1-> En procedure yo tengo puesto: procedure TForm1.Button1Click(Sender: TObject); 2-> Modifique mi código y puse este: VAR a,b,c:integer; x,y:real; begin a := strtoint(Edit1.Text); b := strtoint(Edit2.Text); c := strtoint(Edit3.Text); x:= (-b + (sqrt(sqr(b)-(4*a*c)))) / (2*a); y:= (-b - (sqrt(sqr(b)-(4*a*c)))) / (2*a); edit4.text:=floattostr(x); edit5.text:=floattostr(y) *Copiandome del tuyo :P* Me saleeee ^^ xD Dios muchas gracias ^^ PD: Explicame eso del procedure plz !! ^^ |
Cita:
Salud OS PD. Para que tu código se vea bien usa la etiqueta de delphi que verás en el menu de opciones cuando estas escribiendo un mensaje con el icono tipico de Delphi.
Ves la diferencia ? |
Vale, antes lo estaba buscando y no lo veia, pero ya si. Gracias ! Continuare comentando dudas, asi que de mi no te libras :cool:;):p.
Muchas gracias, aunque lo del procedure, lo entendi a medias. Abro otro tema para otro problema diferente a esto :P ^^ Gracias ! |
Entendido lo del boton, ya vi :P gracias xD fue tocando, como aprendi ^^
|
Cita:
Hola soy maximiliano y tengo 14 años igual y entendi muy bien esa instrucción yo programo hace 5 años atras con DELPHI 7 ahora toy aprendiendo usar DELPHI for NET y C# voy avanzado jejejjee........:D:D:D:D:D:D y hasta cree mi propio programa de codigo de barra barcodemx08.blogspot.com jejejje |
.........
xD |
Hola. Veréis, quisiera comentar un par de cosillas.
• La primera es que pienso que habéis tratado al chaval (kbaby) de forma un tanto.... desagradable. Desde un principio ha dejado claro que el problema era la programación, y no las mates. Además, ha dicho que era novato, no que sea idiota o no que no quisiera aprender (también ha dicho que se tiró un par de horas intentando dar con la solución). Quizás su mayor error ha sido no leerse la guía de estilo (o leerla y no hacerle caso). • ¿De verdad que das programación en Delphi en el colegio (supongo que instituto) a las 14 años? No sé, me parece extraño. ¿De dónde eres? • Aquí son los adultos los que han cometido los mayores errores (matemáticos), de los que quizás su profesionalidad los ha salvado. ¿Cómo que nadie sabía hacer ecuaciones de segundo grado? ¿Todos de verdad la han buscado en Google? ¿Nadie tenía clase de matemáticas en la carrera? Por ejemplo, no recuerdo quién ha dicho que las ecuaciones de 2º grado tienen esta forma: a*x^a + b*x + c = 0. Supongo que ahí hay error tipográfico, pues "de segundo grado" equivale a decir "grado 2", que es el mayor exponente de la variable, es decir a*x^2 + b*x + c = 0. Luego también se ha dicho: "Creo que aqui hay un pequeño error La ecuación sería así no Delphius x = (-b +- (Raiz(b^2 - 4*a*c))/(2*a)) x1 = (-b + (Raiz(b^2 - 4*a*c))/(2*a)) x2 = (-b - (Raiz(b^2 - 4*a*c))/(2*a))" Primero, "no Delphius" vendría entre signos de interrogación, ¿no?, y segundo, la ecuación de Delphius y la que ahí está escrita son exactamente iguales. Pero claro, para saberlo hay que saber un mínimo de matemáticas (el que tienen los de 6º de primaria es España, pues para darse cuenta sólo hay que hacer una suma de fracciones con el mismo denominador). • Tranquilo, kbaby, yo también empecé jovencito con Delphi (a los trece, ahora tengo 18), aunque no por que me obligaran en el cole, sino por afición. También cometía errores que ahora me parecen ridículos, pero poco a poco (en realidad mucho más rápido de lo que parece o se imagina) vas aprendiendo programación, hasta que te conviertes sin darte cuenta en el que está ayudando a un chaval a resolver un pequeño problemilla con ecuaciones de 2º grado. ;) • maco2007, ¿de verdad llevas 5 años con Delphi 7? ¿Tan vieja es ya esa versión? Y yo utilizando la 3 standar.... ¡Mamma mía! Sin TActionList, ni componentes de internet, ni Anchors, ni Int64, ni un montón de cosas más... :( ... Ahora en serio, sigue así ;) Bueno, espero que nadie se sienta ofendido con este post. Saludos. Edito: Acabo de recordar otro fallo que he visto, donde se pedía que kbaby cambiara "- 4*a*c" por " - (4*a*c)"... ¿Por qué a kbaby le daba el mismo resultado?. Porque: - Matemáticamente: Las multiplicaciones se deben realizar antes que la resta. - Informáticamente: El compilador se encargará de que el programa efectúe primero la multiplicación, y después la resta (es decir, tiene en cuenta una prioridad de operadores). |
Cita:
Admito que mis palabras fueron subidas de tono. Fue un error y no supe canalizar correctamente las ideas. Si fuí así se debió a que me ha costado aceptar la idea y percepción del problema. Es natural que haya conocido ecuaciones de segundo grado, a los 14 años el tema debió haberse visto. Por simple que sea problema, lo natural es que si se aprende a realizar sumas, el procedimiento para conseguir una ecuación resulte análogo. El código que venía trabajando kbaby es sencillo, obtenía los valores mediante IntTostr() y luego realizaba la operación. De igual manera se consigue con la fórmula de la ecuación de segundo grado, unicamente habría que cambiar IntToStr por FloatToStr. No hay demasiada ciencia. Y ya kbaby contaba con el conocimiento de como obtener la raiz cuadrada. El mismo ya lo había dicho. Por tanto considero que si se aprende a realizar las operaciones elementales, se puede escribir las fórmulas para ello. Solo sería cuestión de "concatenar" las operaciones en la forma correcta. Cita:
Cita:
Bueno, ya lo dicho. Si es necesario disculparme por esto, y sobre todo por este post, bueno... me disculpo. No me molesta reconocer que tuve errores, lo comete cualquiera pero no es adecuado venir a decir que lo que me salvó fué "profesionalismo" y con ello quedo eximido de culpa. Me señalaste el error, listo... pero no me ataques de ese modo. Es lo único que me ha molestado. ¿No te ha bastado con decirme "disculpa... veo un error"? ¿Era necesario venir a promulgar que "por profesionalismo lo dejamos pasar"? Mike, no tengo problemas contigo, no te conozco demasiado en estos foros. De hecho, considero que ha sido noble de tu parte el querer hacer lo posible para despejar las dudas y aclarecer el panorama que le acomplejaba a kbaby. No pretendo atacarte, sólo hacerte notar que tampoco tu estuviste demasiado bien. Saludos, |
Hola ^^ Bueno... IxMikel gracias por escribir la cantidad de palabras para explicar todo, porque eso se agradece, porque yo tardaría siglos y centenarios. Y respondiendo a tus preguntas, tengo 14 años, pero estoy en 1º de Bachiller de cientifico-tecnico porque en primaria me adelantaron 2 cursos. Soy de granada y estudiare Astrología o Ciencias exactas, aunque no lo tengo definido aún. Gracias por resaltar como fue la realidad, y te lo agradezco. Tambien agradezgo a egostar todo lo que se comio la cabeza conmigo que soy un ... noob en eso :rolleyes:.
Voy a subir a internet mi programa, para que veais mas o menso como me quedo, y sera lo que presentaré en el colegio. Un saludo :) |
La franja horaria es GMT +2. Ahora son las 13:45:53. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi