Ecuaciones (BATCH)

Iniciado por FerJGS, 21 Junio 2010, 11:43 AM

0 Miembros y 3 Visitantes están viendo este tema.

flony

#10
a modo de idea falta pensarlo un poco pero me sale con los datos que me diste
Citar{ 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  :P....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
Citarhttp://autorneto.com/referencia/matematica/como-sacar-la-raiz-cuadrada-de-un-numero-manualmente/
si un problema no tiene solucion entonces no es un problema...es algo inevitable

FerJGS

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.

flony

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  :rolleyes:....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 -  :silbar:...me pongo a pensar algo y veo  :P...pero bue para mi que algun chango (pibe en catamarca argentina) que conozca mas de batch se juega y te da una mano  ;D
si un problema no tiene solucion entonces no es un problema...es algo inevitable

FerJGS

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.

flony

#14
Como hago para separar tres digitos en variables?
es un tutorial de....bue no recuerdo y no quiero hacer plagio  :rolleyes:...pero lo busco y lo pongo
respuesta  ;) a leer  ;D

CitarExtracció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.html

y 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
Citar(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

si un problema no tiene solucion entonces no es un problema...es algo inevitable

FerJGS

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.

leogtz

Es cuestión de concatenar un 0 antes de la expansión de la variable:
Código (dos) [Seleccionar]
set /a operacion=11040 - 11000
echo Resultado : %operacion%
set operacion=0%operacion%
echo Resultado : %operacion%
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

FerJGS

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.

leogtz

Cita de: FerJGS en  8 Julio 2010, 18:23 PM
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.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

FerJGS

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.