Display the values of the c++ vector on the screen

Asked

Viewed 5,495 times

1

I cannot list (display) the products registered in my Vector. Someone can guide me, I’m learning c++.

#include<iostream>
using namespace std;

int main() {

    int op, i=0;
    string produto[10];
    double venda[10], custo[10];
    do {

        cout << "\n\tCadastro de Produto\n";
        cout << "\n<1> Novo Produto";
        cout << "\n<2> Listar Produtos";
        cout << "\n\tOpcao: ";
        cin >> op;
        system("cls");


        switch (op) {
            case 1:
                i++;
                system("cls");
                cout<<"Produto: ";
                cin>>produto[i];
                cout<<"\nCusto: ";
                cin>>custo[i];
                cout<<"\nVenda: ";
                cin>>venda[i];

                break;

           case 2:
                system("cls");
                cout<<"Os produtos Cadastrados sao:\n"<<produto;
                cout<<"\n\n\n\n";
                system ("pause");
                system("cls");
                break;

        }
    } while (op != 0);
    return 0;
}

3 answers

2

Vanusa, you need to keep in mind first that you are using three arrays to store product information and this imposes a limit to the registration of 10 products in your case.

To store an indefinite amount of elements would require the use of vectors themselves (defined in the include of the c standard library++).

Considering this fact it is necessary to limit the entry of data into your program so that an error is not caused when adding an 11th product.

Now to specifically answer your question:

It is necessary to make a loop, accessing each element of its array, as demonstrated by the code below:

    #include <iostream>
    #include <string>

    using namespace std;

    const int quantidade_de_produtos = 10;
    string produtos[quantidade_de_produtos];

    void listar_produtos()
    {
        //Percorre a lista de produtos, inclusive os que não foram preenchidos...
        for (int i = 0; i < quantidade_de_produtos; ++i)
        {
            //Verifica se há um produto no índice atual...
            if (!produtos[i].empty())
            {
                //Imprime a descrição do produto.
                cout << "Produto: " << produtos[i] << endl;
            }
        }
    }

    int main()
    {
        produtos[0] = "Carteira";
        produtos[1] = "Sapato";
        produtos[2] = "Casaco";

        listar_produtos();

        return 0;
    }

0

            case 1:

            system("cls");
            for(int i=0;i<10;i++){
            cout<<"Produto: ";
            cin>>produto[i];
            cout<<"\nCusto: ";
            cin>>custo[i];
            cout<<"\nVenda: ";
            cin>>venda[i];
            }

            break;

       case 2:
            system("cls");
            cout<<"Os produtos Cadastrados sao:\n";
            for(int i=0;i<10;i++){
            cout<<produto[i];
            cout<<"\n\n";
            }
            cout<<"\n\n";
            system ("pause");
            system("cls");
            break;

    }

tries to place a for inside the case and insert at each point of the vector same thing to read, another alternative is to use a while in place of the for as an undetermined loop. It’s my first time helping so I’m sorry if anything’s wrong.

0

Your error is initially in increment of i. The i++ should be at the end of the structure.

case 1:
    system("cls");
    cout<<"Produto: ";
    cin>>produto[i];
    cout<<"\nCusto: ";
    cin>>custo[i];
    cout<<"\nVenda: ";
    cin>>venda[i];
    i++;

    break;

The first position to be inserted is 0, then the value of i should only be incremented after data entry.

To print the data of a vector on the screen, a structure is required for or while

case 2:
    system("cls");
    cout<<"Os produtos Cadastrados sao:" << endl; # endl quebra a linha em c++
    for(int x=0; x<i; x++){
        cout << produto[x] << endl;
    }
    cout<<"\n\n\n\n";
    system ("pause");
    system("cls");
    break;

As it was inserted in the position n of product, must print the position n.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.