-4

我在这个算法项目的最后一部分遇到了问题。我的向量的 .size() 有问题。它没有给我任何东西。每次我尝试调试它时,它都是0。我不知道这是否意味着我的功能无法正常工作。

我是编程新手,我需要一些帮助。

Edit1:我添加了给我一个例外的新代码。

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <vector>


using namespace System;
using namespace std;


typedef struct Linea {
    int a;
    int q;
    int b;
    int r;
} SLinea;

int algoritmoeuclides(int a,int b)
{
    if (a%b==0)
        return b;
    return algoritmoeuclides(b,a%b);
}

std::pair<int, int>division(int dividendo,int divisor)
{
    int resultado=0;
    int residuo=0;

    residuo=dividendo%divisor;
    resultado=dividendo/divisor;
    std::pair<int, int>retorno;
    retorno.first=resultado;
    retorno.second=residuo;
    return retorno;

}

std::pair<int, int>EuclidesExtendido(int a,int b,vector<SLinea*> aux)
{
    std::pair<int, int> tsqt;
    int q,r,s,t;
    SLinea *var;

    if (b == 0)
        return std::pair<int, int> (1, 0);
    else
    {

        std::pair<int, int>qr = division(a, b);
        q=qr.first;
        r=qr.second;
        std::pair<int, int>st = EuclidesExtendido(b, r,aux);
        s=st.first;
        t=st.second;
    }
    tsqt.first=t;
    tsqt.second=s-q*t;
    var->a=a;
    var->b=b;
    var->q=q;
    var->r=r;
    aux.push_back(var);

    return tsqt;



}
int main()

{
    int a=23;
    int b=120;
    int s,t;
    vector<SLinea*> Ecuacion;


    std::pair<int, int>st=EuclidesExtendido(a,b,Ecuacion);
    s=st.first;
    t=st.second;
    int resultado=algoritmoeuclides(a,b);
    int n=Ecuacion.size();
    for (int i=0;i<n;i++)
    {

        printf("%d=%dx%d+%d\n",Ecuacion[i]->a,Ecuacion[i]->b,Ecuacion[i]->q,Ecuacion[i]->r);



    }
    printf("MCD= %d\n ",resultado);
    printf("s=%d  \nt=%d",s,t);
    system("pause");

}  

    #include "stdafx.h"
    #include <iostream>
    #include <conio.h>
    #include <vector>


    using namespace System;
    using namespace std;


    typedef struct Linea {
        int a;
        int q;
        int b;
        int r;
    } SLinea;

    int algoritmoeuclides(int a,int b)
    {
        if (a%b==0)
            return b;
        return algoritmoeuclides(b,a%b);
    }

    std::pair<int, int>division(int dividendo,int divisor)
    {
        int resultado=0;
        int residuo=0;

        residuo=dividendo%divisor;
        resultado=dividendo/divisor;
        std::pair<int, int>retorno;
        retorno.first=resultado;
        retorno.second=residuo;
        return retorno;

    }

    std::pair<int, int>EuclidesExtendido(int a,int b,vector<SLinea> aux)
    {
        std::pair<int, int> tsqt;
        int q,r,s,t;
        SLinea var;

        if (b == 0)
            return std::pair<int, int> (1, 0);
        else
        {

            std::pair<int, int>qr = division(a, b);
            q=qr.first;
            r=qr.second;
            std::pair<int, int>st = EuclidesExtendido(b, r,aux);
            s=st.first;
            t=st.second;
        }
        tsqt.first=t;
        tsqt.second=s-q*t;
        var.a=a;
        var.b=b;
        var.q=q;
        var.r=r;
        aux.push_back(var);

        return tsqt;



    }
    int main()

    {
        int a=23;
        int b=120;
        int s,t;
        vector<SLinea> Ecuacion;


        std::pair<int, int>st=EuclidesExtendido(a,b,Ecuacion);
        s=st.first;
        t=st.second;
        int resultado=algoritmoeuclides(a,b);
        int n=Ecuacion.size();
        for (int i=0;i<n;i++)
        {

            printf("%d=%dx%d+%d\n",Ecuacion[i].a,Ecuacion[i].b,Ecuacion[i].q,Ecuacion[i].r);



        }
        printf("MCD= %d\n ",resultado);
        printf("s=%d  \nt=%d",s,t);
        system("pause");

    }
4

1 回答 1

2
std::pair<int, int> EuclidesExtendido(int a,int b,vector<SLinea> aux)

该函数aux按值获取参数,这意味着它会获取用作参数的任何内容的副本。我会让你从那里拿走它...

于 2012-05-26T02:38:28.830 回答