Jako coś nowego, próbuję ukończyć projekt Euler Problem 5 za pomocą skryptu wsadowego (https://projecteuler.net/problem=5). Jednak; Mam kilka problemów. Jeśli ktokolwiek mógłby przejrzeć mój kod, byłoby wspaniale.Wykonywanie arytmetyczne modułu w skrypcie wsadowym
@ECHO off
SET init=1
SET iter=1
SET /a func=%init% %% %iter%
cls
:Num
IF func==0 (
IF iter==20 (
ECHO Val = %init%
pause
exit
) ELSE (
SET /a iter+=1
GOTO Num
)
) ELSE (
SET iter=1
SET /a init+=1
GOTO Num
)
Co to ma zrobić, to sprawdzić, czy init mod iter
zwraca 0, a jeśli to robi, dodać 1 do wartości iter
, aż osiągnie 21. Jednakże; jeśli nie jest równe 0, liczba iteracji zostanie ustawiona ponownie na 0 i rozpocznie się ponowne obliczanie.
Przykładem co oznaczało wydarzy:
1 mod 1 = 0, Therefor add 1 to iter
1 mod 2 != 0, Therefor init is set to 0 and 1 is added to init
2 mod 1 = 0, Therefor add 1 to iter
2 mod 2 = 0, Therefor add 1 to iter
2 mod 3 != 0, Therefor init is set to 0 and 1 is added to init
I tak dalej, i tak dalej.
Przykładem tego, co dzieje się:
1 mod 1 != 0, Therefor add 1 to init
2 mod 1 != 0, Therefor add 1 to init
3 mod 1 != 0, Therefor add 1 to init
I tak dalej, i tak dalej.
Każda pomoc jest doceniana, dzięki.
Wprowadziłem jednak kilka zmian w kodzie; teraz całkowicie pomija arytmetykę modułów i mówi, że 1 mod 1 do 20 = 0. Myśli, dlaczego to robi? '@ECHO się SET init = 1 SET iter = 1 SET/a func = "% startowych% %%% iter%" CLS : Ilość IF "% func%" ==„0 "( \t IF "% iter%" == "21"( \t \t echo. \t \t ECHO Val =% startowych% \t \t echo. \t \t echo Naciśnij dowolny klawisz, aby wyjść... \t \t str ause> nul \t \t wyjście \t) else ( \t \t echo% startowych% Mod% iter% = 0; CONT \t \t SET/a iter + = 1 \t \t GOTO Lb \t) ) reszta ( echo% startowych% Mod% iter%!= 0; BREAK \t SET iter = 1 \t SET/a startowych + = 1 \t GOTO Num ) ' Przepraszam za brzydkie formatowania. – Sennsei
Nigdy nie przeliczyłeś '% func%'. – SomethingDark
Jak mogę to uwzględnić? – Sennsei