lundi 21 octobre 2019

Using functions to create and initialize an array from main

The elements of the Array are not being initialized, because when I run the code I only see the values from the memory and not the values that I set in the vector. Can you explain to me why is this happening and what should I do in future to avoid this mistake?


    #include <iostream>
    using namespace std;



    //ne va crapa deoarece nu am initializat valorile vectorului, de asta cream o functie de initializare vector

    void initialisingVector(int* vector, int n, int InitialValue)
    {
        for (int i = 0; i < n; i++)
        {
            vector[i] = InitialValue;
        }

    }
    //mereu vom pune initializarea inainte de afisare

    void displayingtheVector(int vector[], int n)
    {
        cout << endl << "The vector is:";
        for (int i = 0; i < n; i++)
        {
            cout << vector[i] << ",";
        }
    }

    int* creatingAndInitialisingtheVector(int* n)//nu avem nevoie de nr de elemente deoarece le ia din main;si nici de vector;
    {//nu avem nevoie de nimic la parametrii, totusi punem n deoarece ne da eroare-n main, ai comentat acolo

    //vom folosi in* n ca parametru deoarece n e o valoare ce se va modifica , prin urmare e transmisa prin pointer

    //vom avea eroare cu expected ; ,nu are legatura cu ; problema este de la int[] ,expected an identifier
    //nu o sa putem nici o data pune int[] la tipul unei functii, mereu vom pune int*, int[]---sa incercam sa uitam forma asta;
    //INTOTDEAUNA int*

        int vectorNou[30];
        int numberElements;
        int InitialValue;

        std::cout << std::endl << "Number of elements:";
        std::cin >> numberElements;
        *n = numberElements;

        std::cout << std::endl << "Initial value is:";
        std::cin >> InitialValue;


        initialisingVector(vectorNou, numberElements, 0);
        //afisareVector(vectorNou, numarElemente); nu are sens sa o facem in fct de creare

        return vectorNou;
    }


    int main()
    {
        int listaPreturi[30];
        int numarProduse;

        /*std::cout << std::endl<<"Numarul de produse este:";
        std::cin >> numarProduse;

        initializareVector(listaPreturi, numarProduse, 0);
        afisareVector(listaPreturi,numarProduse);
        */

        //listaPreturi=crearesiInitializareVector();//ne va trebui o variabila care sa prinda vectorul creat de functie,de asta punem listaPreturi
        //vom obtine o alta eroare dupa ce egalam variabila cu functia; expression must be a modifiable lvalue==>listaPreturi e o variabila constanta, si trebuie sa fie modifiable
        //dc avem o fct care inhtoarce un vector nu vom putea prinde vectorul nou intr-un alt vector deja creat static.
        //il va prinde u8n vetor dinamic in schimb
        int nrElements = 0;
        int* vectorNew = creatingAndInitialisingtheVector(&nrElements);//functioneaza

        //afisareVector(vectorNou, sizeof(vectorNou)); e periculos folosind sizeof(vectorNou) deoarece vectorNou are 4 , utilizatoru poate vrea mai multe elemente

        displayingtheVector(vectorNew, nrElements);



    }

I expect that the vector with the values set by the user to be displayed, and not the memory adreses.

Aucun commentaire:

Enregistrer un commentaire