Gå til innhold

[løst]Problemer med bat-kalkulator (kun batch!)


Anbefalte innlegg

Sitter her i Notepad og prøver å lage en kalkulator som skal regne ut tilført effekt i en trefasemotor. Problemet er at svare blir helt feil.

 

Formelen for å regne ut effekten er

P=U*I*[kvadratroten i 3 (eller 1,73205081)]*cos phi

 

P=Effekt (oppgis i W (watt))

U=Spenning (oppgis i V (volt))

cos phi (cosinus phi)=effektfaktor

 

Sånn ser programmet ut sålangt:

@echo off
set /p voltage=U: 
set /p ampere=I: 
set /p cosphi=cos phi: 
echo P=U*I*1,73205081*cos phi
echo =%voltage%V*%ampere%A*1,73205081*%cosphi%
set /a power=%voltage%*%ampere%*1,73205081*%cosphi%
echo =%power%W
pause

 

Her har jeg et eksempel her, der U=230V, I=33A og cos phi=0,84.

U: 230

I: 33

cos phi: 0,84

P=U*I*1,73205081*cos phi

=230V*33A*1,73205081*0,84

=7590W

Press any key to continue . . .

 

Men når jeg regner ut med en annen kalkulator, blir svaret 11042,863144236, og da må det jo være noe feil i bat-fila men jeg finner ikke noen feil selv. Noen som kan hjelpe meg? :huh:

 

Edit: Forandra emnetittel

Endret av ;P
Lenke til kommentar
Videoannonse
Annonse

Jeg har ingen direkte løsning på problemet, men jeg råder deg til å gå over på et programmeringsspråk, f.eks. Python. Da får du løst problemet mye enklere, og på en bedre måte enn med .bat-filer.

 

Jeg forstår i grunn ikke hvorfor alle er så opptatte av .bat-filer her? .bat er laget for å automatisere terminaloperasjoner ved å kjøre flere kommandoer etter hverandre, ikke for å lage programmer i.

Lenke til kommentar

Batchscript regner ikke med flyttall.

Men dette kan enkelt gjøres i et hvilket som helst annet programmeringsspråk.

 

edit: oppdatert kalkulatorprogrammet mitt (C#)

Krever .NET Framework 2.0 for å kjøre

Skriv inn et uttrykk i tekstboksen, og den vil løse det

støttede operasjoner er:

Klikk for å se/fjerne innholdet nedenfor

funksjoner:

sin

cos

cosh

tan

trunc

tanh

asin

acos

atan

sinh

exp

log

floor

ceiling

pow

round

sqrt

modulus

abs

 

Konstanter:

pi

phi

 

Integer funksjoner er ikke støttet, dette gjelder:

<<

>>

&

|

^

~

 

en test vil se slik ut:

(verdi [test] verdi ? [sann] : [usann])

Samme som Iif i Visual Basic

test kan være:

==

!=

<

<=

>

>=

 

man kan også bruke logical operasjoner, som og, eller osv:

&& (And)

|| (Or)

^^ (Exclusive Or)

! (Logical Not)

 

Listen vil inneholde variabler.

Fordelen med variabler, er at du kan endre de, uten at funksjonen må kompileres på nytt, pluss at du enkelt kan bytte ut deler av uttrykket uten å endre selve uttrykket.

CSharpMath.zip

Endret av GeirGrusom
Lenke til kommentar

Du må nok bruke et annet programmerings-/skripspråk til dette. Et mulig alternativ kan være VBScript. Large følgende kode i en fil med navn Kalkulator.vbs:

Klikk for å se/fjerne innholdet nedenfor
' Kvadratroten av 3

Const Multiplyer = 1.73205081

 

' Henter variabler

U = CDbl(InputVariable("Enter voltage"))

I = CDbl(InputVariable("Enter ampere"))

PowerFactor = CDbl(InputVariable("Enter power factor"))

 

' Utfør kalkulasjon

P = U * I * Multiplyer * PowerFactor

 

' Skriv ut resultat

With WScript

    .Echo "P = U * I * " & Multiplyer & " * PowerFactor"

    .Echo "  = " & U & "V * " & I & "A * " & Multiplyer & " * " & PowerFactor

    .Echo "  = " & P & "W"

End With

 

Pause

 

' Nødvendige støttemetoder

Function InputVariable(Text)

 

    With WScript

        ' Fortell brukeren at vi behøver inndata

        .StdOut.Write Text & ": "

 

        ' Returner inndata

        InputVariable = WScript.StdIn.ReadLine()

    End With

 

End Function

 

Sub Pause()

    ' Venter til brukeren responderer

    WScript.StdOut.Write "Press any key to continue ..."

    WScript.StdIn.Skip(1)

End Sub

Høyreklikk så på resultatfilen og velg Kjør i kommandomodus. Du vil da få opp en tilsvarende kommandolinje som BAT-filen din, men med flyttallstøtte.

Endret av aadnk
Lenke til kommentar

Kan du ikke bare forstå at det ikke går å regne med flyttall i batch? Du bruke et mer avansert språk (vel, det kan vel gå med nok fikling, men da sitter du der med kode som stort sett uleselig).

 

Få det inn i hodet at batch er laget for å automatisere kommandolinjeoperasjoner, ikke for å lage slike programmer du prøver på.

 

Tror neppe du kommer til å få noen svar på problemet ditt. Om du vil få det til, gå over på et annet språk. Deal with it.

Lenke til kommentar

Flyttall? Hva er det? *noob* :blush:

 

Er dette noe mer avansert enn simpel multiplikasjon? Et tall ganger enda et tall ganger enda et tall ganger enda et tall.

 

Men ok. Får la den tråden dø, så får jeg se om jeg gir opp eller prøver på egenhånd. Windowskalkulatoren, som er spekka full med diverse funksjoner, kan jo ikke regne ut kvadratroten da.

 

Btw: Skal se om kalkulatoren i Vista kan det. Bare vent 5-10 min. Skal starte det opp først.

Lenke til kommentar
Flyttall? Hva er det? *noob* :blush:

 

Er dette noe mer avansert enn simpel multiplikasjon? Et tall ganger enda et tall ganger enda et tall ganger enda et tall.

 

8197392[/snapback]

 

flyttall er enkelt forklart tall med komma f. eks. 3,14 4,006 2,545 osv...

 

Så uten flyttall blir 3,14 +5,4 = 8

 

Og det å regne ut effekten til en motor kan fort bli veldig veldig grovt.

Cos phi f. eks konvertert til enten 1 eller 0 og da blir jo alle utregninger totalt ubrukelig

 

Jeg kan anbefale excel til enkle utregninger som du driver med, laga noe lignans det du vil lage når jeg gikk på gk elektro.

Endret av Giddion
Lenke til kommentar
  • 2 uker senere...
Så uten flyttall blir 3,14 +5,4 = 8

8197580[/snapback]

 

Så 1,5+1,5=2+2=4?

 

Faen ta M$ og de dumme funksjonene sine. :p

8302265[/snapback]

 

Du har ingenting å klage på. Batch er ikke laget for å kunne rekne flyttall, så du kan ikke forvente det heller. Når du støter på et sånt problem, er det helt klart at du må begynne å se på et annet språk, f.eks. vbscript som foreslått her, eller enkelt og greit bare Excel.

Lenke til kommentar
Gjest
Dette emnet er stengt for flere svar.
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...