2011年1月30日 星期日

c語言 陣列問題

I*V = 3*V3 + 4*V4 + 5*V5 + 6*V6 + 7*V7 + 8*V8 + 9*V9 + 10*V10 + 11*V11 + 12*V12

以上公式
將V3~V12設為陣列並寫入類別

將設定好的數放入
例如
(1,2,3,4,5)
(1,2,3,4)
(1,2,3)
但是在輸出後沒用到的陣列就別輸出了
例如
(1,2,3,4,5)
==>3*V3 + 4*V4 + 5*V5 + 6*V6 + 7*V7 = 3*1+4*2+5*3+6*4+7*5
(1,2,3,4)
==>3*V3 + 4*V4 + 5*V5 + 6*V6 = 3*1+4*2+5*3+6*4

該怎麼寫?

另解:
#include <cstdlib>
#include <iostream>
#include <stdarg.h>

using namespace std;

int IV2(int *V3, ...)
{
    int i, ans=0;

    int *num;
    va_list vl;
    va_start(vl, V3);

    ans = 3*(*V3);
    i=3;
    cout<<i<<"*"<<"V"<<i;

    do
    {
        i++;
        num = va_arg(vl, int*);

        if(num == NULL)goto end;
        ans = ans + i*(*num);

        cout<<" + "<<i<<"*"<<"V"<<i;
    }while(num != NULL);

    end:
    va_end(vl);
    cout<<" = ";
    cout<<ans<<endl;    
}

int main()
{
    int v[5] = {1,2,3,4,5};

    IV2(&v[0], &v[1], &v[2], &v[3], NULL);

    IV2(&v[0], &v[1], &v[2], &v[3], &v[4], NULL);

    system("PAUSE");
    return 0;
}

沒有留言:

張貼留言