编译时出现矢量错误

时间:2014-05-18 15:18:40

标签: c++ visual-c++ vector

这是我制作的一个程序,我是C ++的新手(昨天开始),该程序假设通过从用户获取字符串形式的函数并使用“ccc_win.h”绘制它来绘制多项式函数。图书馆但是 每次我尝试编译程序时都会出现此消息:

Debug Assertion Failed !!

表达式:向量下标超出范围

我不知道问题是什么,请你帮我。

#include "ccc_win.h"
#include <iostream>
#include <string>
#include <vector>
#include <math.h>
using namespace std;

int ccc_win_main()
{
    vector <double> coefficient;
    vector <double> power;


    string input = cwin.get_string("enter the equation >>");
    int length = input.length();
    int i = 0;
    while (i <length)
    {
        if (input[i] == '=' || input[i] == '+' || input[i] == '-')
        {
            string c;
            int j = i + 1;
            while (input[j] != '(')
            {
                c += input[j];
                j += 1;
            }
            double c_double = ::atof(c.c_str());
            coefficient.push_back(c_double);

        }

        else if (input[i] == '^')
        {
            string p;
            int j = i + 1;
            while (input[j] != ')')
            {
                p += input[j];
                j += 1;
            }

            double p_double = ::atof(p.c_str());
            power.push_back(p_double);

        }

        i++;
    }

    cwin << Line(Point(0, -10), Point(0, 10)) << Line(Point(-10, 0), Point(10, 0));
    double x = 0, y = 0;
    for (x = 10; x <= 10; x += 0.001)

    {
        for (int k = 1; k <= 10; k++)
        {


            y += (coefficient[i] * pow(x, power[i]));
        }

        Point a(x, y);
        cwin << a;
    }

    return 0;
}

1 个答案:

答案 0 :(得分:1)

int j = i + 1;对于指向最后一个元素的 i ,j将指向数组外部。设置后,您还需要检查是否j < length

同样在这里:

for (int k = 1; k <= 10; k++)
{
    y += (coefficient[i] * pow(x, power[i]));
}

您正在循环k但使用i作为系数。但是i ==那时的长度,因为前一个循环递增它并在i == length时结束。 您确定在上面的循环中不想要k而不是i吗? i当然肯定有不正确的值。