找回密码
 欢迎注册
查看: 116|回复: 13

[灌水] 你们用人工智能写的代码,遇到过bug吗?

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
想用人工智能写个简单的程序,的确是给出了代码,
看起来是正确的,但是实际运行的时候,给不出结果,
只好自己debug,最后还是靠我自己debug,最后得到了结果。

有别人有我这样的经历吗?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 3 天前 | 显示全部楼层
简单的程序没有问题,复杂的程序需要自己debug,平均每1百行要改2行
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 3 天前 | 显示全部楼层
KeyTo9_Fans 发表于 2025-2-18 13:52
简单的程序没有问题,复杂的程序需要自己debug,平均每1百行要改2行

  1. 用vba实现分段线性插值,增加检测第一列与第二列数组是否相等,给我详细的注释与说明。
  2. 如果插值点在范围外,用前两个点插值或者最后两个点插值,并且单元格里面的文字用红色显示。
  3. 确保数组下标不出问题。在程序的开始,详细地说明函数的功能以及各个参数代表的意义以及函数
  4. 返回值的意义
复制代码


我提这个要求给人工智能,基本上都错误,需要我自己debug!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 3 天前 | 显示全部楼层
nyy 发表于 2025-2-18 13:56
我提这个要求给人工智能,基本上都错误,需要我自己debug!

人工智能的好处是写注释很勤快,并且变量名很容易懂。但是遇上bug就只能人工来写了!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 前天 10:09 | 显示全部楼层
nyy 发表于 2025-2-18 13:56
我提这个要求给人工智能,基本上都错误,需要我自己debug!
  1. ' 函数名:PiecewiseLinearInterpolation
  2. ' 功能:该函数用于实现分段线性插值。分段线性插值是一种在给定的离散数据点之间进行线性插值的方法。
  3. '       它将数据点之间的区间视为线性函数,根据插值点所在的区间,利用该区间的两个端点进行线性插值计算。
  4. ' 参数:
  5. '   xArray:一维数组,代表已知数据点的 x 坐标,要求该数组中的元素必须按升序排列。
  6. '   yArray:一维数组,代表已知数据点的 y 坐标,其长度必须与 xArray 相同。
  7. '   xValue:要进行插值计算的 x 坐标值。
  8. ' 返回值:
  9. '   函数返回根据分段线性插值计算得到的对应 xValue 的 y 坐标值。如果输入的数组长度不相等,函数将返回错误值 CVErr(xlErrValue)。

  10. Function PiecewiseLinearInterpolation(xArray As Variant, yArray As Variant, xValue As Double) As Variant
  11.     ' 检查输入的 xArray 和 yArray 的长度是否相等
  12.     If UBound(xArray) - LBound(xArray) <> UBound(yArray) - LBound(yArray) Then
  13.         ' 如果长度不相等,返回错误值 CVErr(xlErrValue)
  14.         PiecewiseLinearInterpolation = CVErr(xlErrValue)
  15.         Exit Function
  16.     End If
  17.    
  18.     Dim i As Long
  19.     ' 查找插值点 xValue 所在的区间
  20.     For i = LBound(xArray) To UBound(xArray) - 1
  21.         If xValue >= xArray(i) And xValue <= xArray(i + 1) Then
  22.             ' 如果 xValue 在当前区间内,使用该区间的两个端点进行线性插值
  23.             PiecewiseLinearInterpolation = yArray(i) + (yArray(i + 1) - yArray(i)) * (xValue - xArray(i)) / (xArray(i + 1) - xArray(i))
  24.             Exit Function
  25.         End If
  26.     Next i
  27.    
  28.     ' 如果 xValue 在已知数据点的范围外
  29.     If xValue < xArray(LBound(xArray)) Then
  30.         ' 如果 xValue 小于最小的 x 坐标,使用前两个点进行插值
  31.         PiecewiseLinearInterpolation = yArray(LBound(yArray)) + (yArray(LBound(yArray) + 1) - yArray(LBound(yArray))) * (xValue - xArray(LBound(xArray))) / (xArray(LBound(xArray) + 1) - xArray(LBound(xArray)))
  32.         ' 将结果单元格的文字颜色设置为红色
  33.         Application.Caller.Font.Color = RGB(255, 0, 0)
  34.     Else
  35.         ' 如果 xValue 大于最大的 x 坐标,使用最后两个点进行插值
  36.         PiecewiseLinearInterpolation = yArray(UBound(yArray) - 1) + (yArray(UBound(yArray)) - yArray(UBound(yArray) - 1)) * (xValue - xArray(UBound(xArray) - 1)) / (xArray(UBound(xArray)) - xArray(UBound(xArray) - 1))
  37.         ' 将结果单元格的文字颜色设置为红色
  38.         Application.Caller.Font.Color = RGB(255, 0, 0)
  39.     End If
  40. End Function
复制代码

这是豆包写的代码!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 前天 10:21 | 显示全部楼层
nyy 发表于 2025-2-19 10:09
这是豆包写的代码!

我告诉豆包
  1. 实际运行时,传递进来的xArray,是一个对象,而不是一维数组,你解决一下这个问题。
复制代码


然后豆包给我新生成了新的代码如下:

  1. ' 函数名:PiecewiseLinearInterpolation
  2. ' 功能:该函数用于实现分段线性插值。分段线性插值是一种在给定的离散数据点之间进行线性插值的方法。
  3. '       它将数据点之间的区间视为线性函数,根据插值点所在的区间,利用该区间的两个端点进行线性插值计算。
  4. ' 参数:
  5. '   xRange:Range 对象,代表已知数据点的 x 坐标所在的单元格区域,要求该区域中的元素必须按升序排列。
  6. '   yRange:Range 对象,代表已知数据点的 y 坐标所在的单元格区域,其行数必须与 xRange 相同。
  7. '   xValue:要进行插值计算的 x 坐标值。
  8. ' 返回值:
  9. '   函数返回根据分段线性插值计算得到的对应 xValue 的 y 坐标值。如果输入的区域行数不相等,函数将返回错误值 CVErr(xlErrValue)。

  10. Function PiecewiseLinearInterpolation(xRange As Range, yRange As Range, xValue As Double) As Variant
  11.     ' 将 Range 对象转换为一维数组
  12.     Dim xArray As Variant
  13.     Dim yArray As Variant
  14.     xArray = Application.Transpose(xRange.Value)
  15.     yArray = Application.Transpose(yRange.Value)
  16.    
  17.     ' 检查输入的 xArray 和 yArray 的长度是否相等
  18.     If UBound(xArray) - LBound(xArray) <> UBound(yArray) - LBound(yArray) Then
  19.         ' 如果长度不相等,返回错误值 CVErr(xlErrValue)
  20.         PiecewiseLinearInterpolation = CVErr(xlErrValue)
  21.         Exit Function
  22.     End If
  23.    
  24.     Dim i As Long
  25.     ' 查找插值点 xValue 所在的区间
  26.     For i = LBound(xArray) To UBound(xArray) - 1
  27.         If xValue >= xArray(i) And xValue <= xArray(i + 1) Then
  28.             ' 如果 xValue 在当前区间内,使用该区间的两个端点进行线性插值
  29.             PiecewiseLinearInterpolation = yArray(i) + (yArray(i + 1) - yArray(i)) * (xValue - xArray(i)) / (xArray(i + 1) - xArray(i))
  30.             Exit Function
  31.         End If
  32.     Next i
  33.    
  34.     ' 如果 xValue 在已知数据点的范围外
  35.     If xValue < xArray(LBound(xArray)) Then
  36.         ' 如果 xValue 小于最小的 x 坐标,使用前两个点进行插值
  37.         PiecewiseLinearInterpolation = yArray(LBound(yArray)) + (yArray(LBound(yArray) + 1) - yArray(LBound(yArray))) * (xValue - xArray(LBound(xArray))) / (xArray(LBound(xArray) + 1) - xArray(LBound(xArray)))
  38.         ' 将结果单元格的文字颜色设置为红色
  39.         Application.Caller.Font.Color = RGB(255, 0, 0)
  40.     Else
  41.         ' 如果 xValue 大于最大的 x 坐标,使用最后两个点进行插值
  42.         PiecewiseLinearInterpolation = yArray(UBound(yArray) - 1) + (yArray(UBound(yArray)) - yArray(UBound(yArray) - 1)) * (xValue - xArray(UBound(xArray) - 1)) / (xArray(UBound(xArray)) - xArray(UBound(xArray) - 1))
  43.         ' 将结果单元格的文字颜色设置为红色
  44.         Application.Caller.Font.Color = RGB(255, 0, 0)
  45.     End If
  46. End Function
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 前天 10:31 | 显示全部楼层

由于我会调试,我一调试,知道问题出在了哪里!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 昨天 11:02 | 显示全部楼层

代码显示太丑了,我不喜欢自动折行!

点评

nyy
140%显示浏览器页面,最后就自动折行了!  发表于 昨天 11:04
nyy
似乎不是网站的问题,是我浏览器的页面都是140%显示  发表于 昨天 11:04
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 昨天 17:41 | 显示全部楼层
我叫chatgpt寫一個求直線與圓的交點坐標,結果出錯,只好手工檢查哪裏出錯,後來找到它把一個加號弄錯了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 昨天 22:42 | 显示全部楼层
ejsoon 发表于 2025-2-20 17:41
我叫chatgpt寫一個求直線與圓的交點坐標,結果出錯,只好手工檢查哪裏出錯,後來找到它把一個加號弄錯了。 ...

具体代码发上来看看!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2025-2-21 23:36 , Processed in 0.069294 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表