0

我正在尝试在 matlab 中编写一个可以求解二次方程的代码,但是我在第 41 行的代码的第一位出现错误。代码的最后一位只是计算 x 的值并通知用户如果这些值有复根或正态数

function quadraticsolver1
    clc
    clear all

    fprintf ('Welcome to Quadratic Solver\n')
    fprintf ('Created by Rémi Tuyaerts 2013\n')

    % Get value for a
    a=input('enter value for a ', 's');
    % if value of a is empty or not numeric ask user to reenter it
    while isempty(a); ischar(a);
        disp ('The value entered for a is incorrect')
        a=input('Please reenter value for a ', 's');
    end

    % Get value for b
    b=input('enter value for b ', 's');
    % if value of b is empty or not numeric ask user to reenter it
    while isempty(b); ischar (b);
        disp ('The value entered for b is incorrect')
        b=input('Please reenter value for b', 's');
    end

    % Get value for c
    c=input('enter value for c ', 's');
    % if value of c is empty or not numeric ask user to reenter it
    while isempty (c); ischar (c);
        disp ('The value entered for a is incorrect')
        c=input('Please reenter value for c ', 's');

    end

    % calculating the value of the sqrt
    g = (b.^2)-(4*a.*c);
end
4

1 回答 1

2

我不确定是否可以在没有您使用的输入示例的情况下进行判断,但我认为问题在于:

c=input('Please reenter value for c ', 's');

's'意味着输入被视为字符串,而不是数字。然后,您尝试将其用作函数末尾的数字,这显然是错误的。有时这实际上会给出答案,但我怀疑您输入的数字具有不同的位数。这意味着,作为字符串,它们的大小会不同,你会得到一个错误。

's'解决方案是从所有函数中删除参数,input因为您不需要它们。

编辑:如果出于某种原因您最初确实希望它们作为字符串,您可以将字符串转换回这样的数字:

a = str2num(a);
于 2013-04-27T15:24:31.710 回答