Autor
|
Tema: Ecuaciones (BATCH) (Leído 15,684 veces)
|
flony
Desconectado
Mensajes: 584
|
a modo de idea falta pensarlo un poco pero me sale con los datos que me diste { 4x+y=6 {3x + 2y=7
hay que fijarse si tiene errores..eso si con numeros ideales o decimales no se si sale echo ------------------------------- echo los datos se ingresan como echo. echo ax+by=c echo dx+ey=f echo. echo en caso de no tener munero vale uno echo si no tiene valor poner cero echo ----------------------------- echo. echo ingrese a set /p a= echo ingrese b set /p b= echo ingrese c set /p c= echo ingrese d set /p d= echo ingrese e set /p e= echo ingrese f set /p f=
set /a numerador_y=(%a%*%f%)-(%d%*%c%) set /a denominador_y=(-%d%*%b%)+(%e%*%a%)
set /a numerador_x=(-%c%*%d%*%b%)+(%c%*%e%*%a%)-(%b%*%a%*%f%)+(%d%*%c%*%b%) set /a denominador_x=(-%d%*%b%*%a%)+(%e%*%a%*%a%)
echo el numerador de y es %numerador_y% echo el denominador de y %denominador_y% echo el numerador de x es %numerador_x% echo el denominador de x %denominador_x% echo divida ud...puede ser que de decimales pause >nul es lo que salio ....y sobre la raiz cuadrada me acorde algo parecido estudiaba para matematicas pero para contador publico...pero si se puede sacar manalmente te dejo un ejemplo
|
|
« Última modificación: 29 Junio 2010, 18:13 pm por flony »
|
En línea
|
si un problema no tiene solucion entonces no es un problema...es algo inevitable
|
|
|
FerJGS
Desconectado
Mensajes: 75
|
Gracias por el código, me vendrá muy bien.
En cuanto a las ecuaciones de segundo grado de tipo 3, yo se hacer perfectamente la raíz cuadrada, el problema es principalmente lo de los números negativos, que cambia de signo y todo eso. Ahí está la dificultad, ¿alguien me ayuda? no puedo pedir que ingresen el número con el signo porque si no, la variable no es numérica y no puedo sumarla.
Y también he preguntado sobre como hacer identidades notables. Pero muchas gracias por los códigos,me estáis ayudando bastante.
|
|
|
En línea
|
|
|
|
flony
Desconectado
Mensajes: 584
|
lo de los signos deberias hacer un funcion en el codigo tuyo que la llamas con call para que no tarde y usar el concepto de lo absolutos para suma o resta...seria ver cual es mas grande y que signo tiene y ese queda ....y la multiplicacion o division seria puro regla de signos y ponerlo con el resultado pero no como una variable numerica...en ambos casos suma o multiplicacion hacerlo con extraccion de caracteres seria con un if para que se fije si tiene el simbolo - ...me pongo a pensar algo y veo ...pero bue para mi que algun chango (pibe en catamarca argentina) que conozca mas de batch se juega y te da una mano
|
|
|
En línea
|
si un problema no tiene solucion entonces no es un problema...es algo inevitable
|
|
|
FerJGS
Desconectado
Mensajes: 75
|
No he entendido nada jeje...¿Podríais explicármelo mejor? Y lo de las identidades notables ¿cómo hago para diferenciar si tiene x y exponente? se pueden usar filtros con los if (*,?)como hago para separar tres dígitos en variables?
Eso me vendrá también muy bien para lo de las ecuaciones de 2º grado.
|
|
|
En línea
|
|
|
|
flony
Desconectado
Mensajes: 584
|
Como hago para separar tres digitos en variables? es un tutorial de....bue no recuerdo y no quiero hacer plagio ...pero lo busco y lo pongo respuesta a leer Extracción de carácteres:
Bien esta es una parte muy interesante, nos permita obtener "trozos" de variables llamados subcadenas, existen varias formas para ello, siendo la principal: Código: SET VariableResultado=%VariableOriginal:~m,n%
Almacena en la VariableResult ado la subcadena que existen en la VariableOrigin al desde la posición "m" durante "n" caracteres.
Ejemplo: Código: SET VAR=123456789 SET RES=%VAR:~3,2% ECHO %RES%
Mostraría por pantalla: 45 (los dos caracteres a partir del tercero)
Como en la sustitución de caracteres, la VariableResult ado y la VariableOrigin al pueden ser las mismas.
Si "m" o "n" son iguales a 0 pueden omitirse, por ejemplo: Código: SET VAR=123456789 SET RES1=%VAR:~,5% SET RES2=%VAR:~0,5% IF %RES1%==%RES2% ECHO Funciona ECHO %RES1%=%RES2%
Mostraría por pantalla, "Funciona" y después: 12345=12345
Lo mismo con el siguiente code: Código: SET VAR=123456789 :: Lo siguiente significa extraer a partir del caracter 5º hasta el final SET RES1=%VAR:~5% SET RES2=%VAR:~5,4% IF %RES1%==%RES2% ECHO Funciona ECHO %RES1%=%RES2%
Mostraría primero por pantalla "Funciona" y después: 6789=6789
Estos métodos abreviados son útiles para cuando no conocemos el numero de caracteres de la variable, sobre todo el 2º, ya que si queremos extraer los 3 últimos caracteres pero no sabemos a partir del cual seria eso no lo podríamos hacer.
Ejemplos bastante usados: Código: SET DIA=%DATE:~,2% SET MES=%DATE:~3,2% SET AÑO=%DATE:~6%
Lo mismo para sacar las horas, minutos y segundos de la variable %TIME%, etc...
Fin de la 1º Clase, si tenéis dudas posteralas que las resolveré, si tenéis criticas ponerlas también.
y para no desmerecer a los chicos del foro aca esta el de ellos http://foro.elhacker.net/scripting/programacion_batch_avanzada_nuevo-t132924.0.htmly sobre identidades notables una vez obtenida la formula de bascara tenes los posibles binomios que la conforman el polinomio de la identidad y para pensar en algebra teorica...la x es solo un numero que no conoces...a ver si lo ves tranqui vas a ver que el resultado de obtener por ejemplo (a ± b)^2 = a^2 ± 2 · a · b + b^2 la parte (a ± b)^2 es el resultado usando bascara del polinomio a^2 ± 2 · a · b + b^2 y que tenga una x lo unico que hace es que se multiplique en cada termino
|
|
« Última modificación: 1 Julio 2010, 14:35 pm por flony »
|
En línea
|
si un problema no tiene solucion entonces no es un problema...es algo inevitable
|
|
|
FerJGS
Desconectado
Mensajes: 75
|
Gracias, aunque eso me lleva a preguntar, ya que mencionas que los ceros se omiten....¿cómo hago para que reste con un cero delante?
Lo que quiero hacer es que al restar 11040 - 11000 me de 040, y no 40. Es para unos decimales, si puede ser.
Ahora estoy de vacaciones pero me llevo el portátil, solo tengo Internet durante unas horas, voy a ir programando pero, por si no lo he dicho antes, esto es para una calculadora científica y completa y ahora estoy con el apartado de geometría. Si me surge alguna duda, ya os la preguntaré...Cuando termine el apartado, que me va a costar porque es muy completo, ya me pondré con ecuaciones. Pero gracias por vuestros códigos, estoy seguro de que me será útil ese último de separar variables.
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Es cuestión de concatenar un 0 antes de la expansión de la variable: set /a operacion=11040 - 11000 echo Resultado : %operacion% set operacion=0 %operacion% echo Resultado : %operacion%
|
|
|
En línea
|
|
|
|
FerJGS
Desconectado
Mensajes: 75
|
Lo había pensado y tal pero ese no es exactamente el problema.
Lo que quiero hacer es que me de el resultado 11,04
entonces lo que yo hago es
11040/1000 --> 11 11*1000 -->11000 11040-11000--->>40 y tendría que darme 040 para así poder hacer
%11% , %040%
pero las que no llevan un 0 delante como por ejemplo 11.500 (11.5) no necesito poner el 0 delante. ¿Cómo lo hago?
Y POR CIERTO
tengo un problema gordo chicos, necesito que me ayudéis un poco.
al hacer 2500*3500*31416 me da 12093056, y el resultado real es 274890000000
¿Por qué pasa esto? me hace, junto con lo de arriba, que todo tenga posibilidad de fallo. Ayudadme por favor.
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Lo había pensado y tal pero ese no es exactamente el problema.
Lo que quiero hacer es que me de el resultado 11,04
entonces lo que yo hago es
11040/1000 --> 11 11*1000 -->11000 11040-11000--->>40 y tendría que darme 040 para así poder hacer
%11% , %040%
pero las que no llevan un 0 delante como por ejemplo 11.500 (11.5) no necesito poner el 0 delante. ¿Cómo lo hago?
Y POR CIERTO
tengo un problema gordo chicos, necesito que me ayudéis un poco.
al hacer 2500*3500*31416 me da 12093056, y el resultado real es 274890000000
¿Por qué pasa esto? me hace, junto con lo de arriba, que todo tenga posibilidad de fallo. Ayudadme por favor.
Batch no maneja números muy grandes, estás fuera del rango de los enteros.
|
|
|
En línea
|
|
|
|
FerJGS
Desconectado
Mensajes: 75
|
Mmm ya...pues es una faena. Bueno, de momento pues me conformo con saber cómo hacer para calcularlas aunque los números sean correctos, me basta con saber que soy capaz de hacer lo que me propongo, de modo que voy a reservar BATCH para base, me interesa saber cómo hacer eso de las ecuaciones de 2º grado, identidades notables y de doble incógnita, después ya solo necesito aprender más como por ejemplo lo del debug, el ratón en batch y cosas así. Después me iniciaré en C.
¿ Podéis ayudarme a sacar esas cosas de las ecuaciones? Gracias.
|
|
|
En línea
|
|
|
|
|
|