Wskaźniki - praca z tablicami i funkcjami - problem

0

Witam, mam napisać program, który za pomocą operatorów new stworzy trzy tablice double i dwie z nich wypełni jakimiś wartościami. Następnie mam napisać funkcję, która do tablicy 3 przypisze każdy element tablicy pierwszej pomnożony przez element tablicy drugiej. Mam takie coś ale niezbyt działa:

 #include <iostream>
using namespace std;

void fun(double *wsk1, double *wsk2, double *wsk3);

int main()
{
    double *wsk1 = new double[20];
    double *wsk2 = new double[20];
    double *wsk3 = new double[20];

        /* Wypelnienie pierwszych dwoch tablic */
    for(int i = 0; i < 20; i++)
        {
            wsk1[i] = i;
        }
    for(int i = 0; i < 20; i++)
        {
            wsk2[i] = i;
        }
        /* ***************************************** */
fun(wsk1, wsk2, wsk3);

    for(int i = 0; i < 20; i++)
    {
        cout << *wsk3 << endl;
    }

}

/*********************************************/
void fun(double *wsk1, double *wsk2, double *wsk3)
    {
        for(int i = 0; i < 20; i++)
            {
                wsk3[i] = wsk1[i] * wsk2[i];
            }

    }
0

Rozwiązałem to w taki sposób i działa:

 #include <iostream>
using namespace std;

void fun(double *wsk1, double *wsk2, double *wsk3);

int main()
{
    double *wsk1 = new double[20];
    double *wsk2 = new double[20];
    double *wsk3 = new double[20];

        /* Wypelnienie pierwszych dwoch tablic */
    for(int i = 0; i < 20; i++)
        {
            wsk1[i] = i;
        }
    for(int i = 0; i < 20; i++)
        {
            wsk2[i] = i+2;
        }
        /* ***************************************** */
fun(wsk1, wsk2, wsk3);

}

/*********************************************/
void fun(double *wsk1, double *wsk2, double *wsk3)
    {
        for(int i = 0; i < 20; i++)
            {
                wsk3[i] = wsk1[i] * wsk2[i];
                cout << wsk3[i] << endl;
            }

    }

Powiedzcie mi, czy może tak być?

P.S Ten wyżej to ja tylko mi się logować nie chciało.

0

a gdzie zwalniasz pamięć?

0

Zapomniałem:P Byłem zbyt zajęty tym, że nie działa :)
Edit: zrobione :)

 #include <iostream>
using namespace std;

void fun(double *wsk1, double *wsk2, double *wsk3);

int main()
{
    double *wsk1 = new double[20];
    double *wsk2 = new double[20];
    double *wsk3 = new double[20];

        /* Wypelnienie pierwszych dwoch tablic */
    for(int i = 0; i < 20; i++)
        {
            wsk1[i] = i;
        }
    for(int i = 0; i < 20; i++)
        {
            wsk2[i] = i+2;
        }
        /* ***************************************** */
fun(wsk1, wsk2, wsk3);

delete [] wsk1;
delete [] wsk2;
delete [] wsk3;

}

/*********************************************/
void fun(double *wsk1, double *wsk2, double *wsk3)
    {
        for(int i = 0; i < 20; i++)
            {
                wsk3[i] = wsk1[i] * wsk2[i];
                cout << wsk3[i] << endl;
            }

    }
0

    for(int i = 0; i < 20; i++)
    {
        cout << *(wsk3+i) << endl; // Tutaj był błąd
    }

Dodatkowo obydwie tablice możesz wypełnić w jednej pętli a nawet w jednym przypisaniu.


            /* Wypelnienie pierwszych dwoch tablic */
        for(int i = 0; i < 20; i++)
            {
                wsk1[i] = wsk2[i] = i;
            }
0

Mogę tak zrobić przy jednym przypisaniu ale w drugiej chcę zrobić i + 2 wtedy już tak nie mogę :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0