获得最接近的数量在批处理完美的正方形 [英] Get closest number to perfect square in batch

查看:170
本文介绍了获得最接近的数量在批处理完美的正方形的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用批处理脚本,我想检查,如果用户输入的数字是一个完美的正方形,如果没有发现这是一个完美的正方形最接近的数字。

 关闭@echo和放大器;&安培; CLS
设置/ P输入=
如果输入%==%完美的广场呼应完美的正方形
如果输入%未%==完美的广场做(
::找到最接近完美的正方形


解决方案

 关闭@echo和放大器;&安培; CLS
SETLOCAL enabledelayedexpansion集/ P输入=集J = 0
对/ L %%我在(0,1%输入%)做(
  设置/测试= %%我* %%我
  如果!测试! EQU%输入%(
    回声完全平方
    转到:BRK1
  )
  如果!测试! GTR%输入%(
    设定/增量=测试 - !!!输入!
    设置/ A TEST0 =!J 1 *!J 1
    设置/ A delta0 =输入 - !TEST0!
    如果!delta0! LSS!三角洲! (设置/ A S =!J 1)其他(SET / A S = %% I)
    集/结果=!小号!*!小号!
    呼应最接近完美的正方形:!结果!
    转到:BRK1
  )
  集J = %%我

:BRK1

Using a batch script I would like to check if the number a user enters is a perfect square and if not find the closest number that is a perfect square.

@echo off  && cls 
Set /p input=
if %input% == PERFECT SQUARE echo perfect square
If %input% not == PERFECT SQUARE do (
::find closest perfect square

解决方案

@echo off && cls
setlocal enabledelayedexpansion

set /p input=

set j=0
for /l %%i in (0,1,%input%) do (
  set /a test=%%i*%%i
  if !test! equ %input% (
    echo perfect square
    goto:brk1
  )
  if !test! gtr %input% (
    set /a delta=!test!-!input!
    set /a test0=!j!*!j!
    set /a delta0=!input!-!test0!
    if !delta0! lss !delta! (set /a s=!j!) else (set /a s=%%i)
    set /a result=!s!*!s!
    echo closest perfect square: !result!
    goto:brk1
  )
  set j=%%i
)
:brk1

这篇关于获得最接近的数量在批处理完美的正方形的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆