Η Απάντηση είναι ΝΑΙ 👇 αλλά απλό στον προγραμματισμό δεν είναι τίποτα όμως διαβάζοντας τις απαντήσεις θεωρώ οτι υπάρχει μια παρεξήγηση γενικότερα για τα batch αλλά και τα scripts γενικότερα!
Τα Windows batch / cmd, όπως και τα Linux/Mac shell δεν υπάρχουν για να κάνουν υπολογισμους/μεταφορες/τροποιησεις κλπ ενεργειες τα ΙΔΙΑ αλλά για να πουν σε άλλα command line executables τι πρεπει να κάνουν!
και αφού έγραψα εξαρχής οτι δεν είναι δουλειά της batch να κάνει υπολογισμούς η Απάντηση στο ερώτημα σου ειναι οτι υπάρχουν αρκετά command line executables που κάνουν υπολογισμούς και το πιο γνωστό ειναι το GNU bc.exe που λόγω fsf.org ειναι open source και φυσικα fork απο τα Linux και θα το βρείτε για κατέβασμα αλλά και τον κωδικα του στο λινκ που έβαλα που μόνο του δεν δουλεύει, θέλει και το readline5.dll που είναι το από κάτω zip με τα dependecies στο ίδιο λινκ πάλι.
Το άσχημο με το bc.exe εκτελέσιμο είναι οτι δουλεύει με pipe και αυτό το σημείο με δυσκόλεψε χθες περισσότερο από όλα όταν είδα το μήνυμα και σκέφτηκα να το φτιάξω μπας και ενδιαφερθείς με τον προγραμματισμό.
ΕΠΊΣΗΣ αυτός ο μαθηματικός τύπος είναι λάθος και πρόβλημα για 3 λόγους
δεν είναι ομαδοποιημένoς σε group με τις προτεραιότητες εκτέλεσης πράξεων (αλλο το (1/2+3)/8=0,4375 και άλλο το 1/2+3/8=0,875 . το καθένα βλέπεις βγάζει άλλο αποτέλεσμα) και οσο μεγαλύτερους ΒΑΘΜΟΥΣ βάζεις τόσο μικραίνει το αποτέλεσμα!
δεν βγάζει νόημα να αφαιρείς ΒΑΘΜΟΛΟΓΙΑ απο το 0.01... κάτι άλλο μπορεί να είναι, 0.01. βαθμολογία όμως δύσκολο και φυσικά
Κόμμα(,) δεν χρησιμοποιεί το bc για να κάνει τους υπολογισμούς του. μόνο τελείες (.), έτσι το 8,5 είναι 8.5!
έτσι το πρόβλημα σου με τα 3 inputs ως Βαθμούς (θα μπορούσα να κάνω και δυναμικά τα inputs αλλά θα δυσκόλευε πολυ η ανάγνωση του script) και φυσικά φέρνοντας ως αποτέλεσμα μονο 3 δεκαδικούς ο BATCH κώδικας είναι αυτός
@echo off
rem Αν σας κλείσει το batch σημαινει οτι χρησιμοποεiτε No utf-8 fonts.
rem τα default στα windows 10,11 ειναι τα consolas που ειναι utf-8
rem το bc.exe + readline5.dll ειναι απο εδω https://gnuwin32.sourceforge.net/packages/bc.htm
chcp 65001>NUL
setlocal && cd /D "%~dp0"
setlocal enabledelayedexpansion
:dedomena
echo.
echo Υπολογισμός με 3 Θετικούς Ακέραιους Αριθμούς.
echo.
goto input1
:input1
echo.
set /p StartINPUT1=Γράψε τον 1ο Βαθμό:
echo.
call :checkPositiveNumber0 "%StartINPUT1%"
if %errorlevel% neq 0 (
call :erroMSG
goto :input1
) else (
goto :input2
)
:input2
echo.
set /p StartINPUT2=Γράψε τον 2ο Βαθμό:
echo.
call :checkPositiveNumber0 "%StartINPUT2%"
if %errorlevel% neq 0 (
call :erroMSG
goto :input2
) else (
goto :input3
)
:input3
echo.
set /p StartINPUT3=Γράψε τον 3ο Βαθμό:
echo.
call :checkPositiveNumber0 "%StartINPUT3%"
if %errorlevel% neq 0 (
call :erroMSG
goto :input3
) else (
goto :ypologismos
)
:erroMSG
echo λάθος αριθμός Βαθμού ...
echo Πρέπει να είναι θετικός αριθμός και μεγαλύτερος του 0
echo ξαναγράψε τον Βαθμό
pause
exit /b
:ypologismos
set /a "apo1=%StartINPUT1%"
set /a "apo2=%StartINPUT2%"
set /a "apo3=%StartINPUT3%"
echo (8.5-!StartINPUT1!*0.01-!StartINPUT2!*0.02-!StartINPUT3!*0.01)/0.6 > temp.txt
for /f "tokens=*" %%a in ('bc -l ^< temp.txt') do set apotelesma=%%a
rem και οι 3 δεκαδικοί που ζητησες...
set "finalapotelesma=!apotelesma:~0,-17!"
cls
echo.
echo Τα δεδομένα μας είναι: %StartINPUT1%, %StartINPUT2%, %StartINPUT3%
echo.
echo Και το αποτέλεσμα του υπολογισμού είναι: %finalapotelesma%
pause
cls
goto dedomena
rem Αλγόριθμος που ελέγχει αν είναι θετικός αριθμός και όχι 0 μιας και μιλαμε για ΒΑΘΜΟΛΟΓΙΑ!
rem πηγή: https://el.gamelink.gr/blog/Pws-Mporeite-Na-Enswmatwsete-Watermark-sta-Video-gia-tis-MkDocs-Selides-me-to-FFmpeg/
:checkPositiveNumber0
set "validNumber=0"
if 1%~1 neq +1%~1 ( set /a "validNumber+=1" )
if %~1 equ 0 ( set /a "validNumber+=1" )
exit /b %validNumber%
:End
exit /b 0
Γάμο με 3 είχαμε. Μόνο μια φορά θυμάμαι με το Kadett B caravan του 1967 του πατέρα τη δεκαετία του 90 έσπασε ένα γρανάζι της 3ης και χτύπαγε το σασμάν. Κι άλλη μια φορά μας άφησε από βενζίνη.
Το Astra G του 1999 του πατέρα, μια χαρά είναι από τότε. Ούτε έχει βγάλει σοβαρή βλάβη, ούτε όμως και καμιά οδηγική χαρά και συγκίνηση.
Είχα κι εγώ ένα Kadett D για ένα μήνα. 2 συγκινήσεις είχα με αυτό, μία όταν μου το χάρισαν και άλλη μία όταν με τράκαραν και μου το διέλυσαν.
Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.