Ir ao conteúdo
  • Cadastre-se

Como acessar um vetor na struct


Danilo Lopes

Posts recomendados

Não estou conseguindo acessar o vetor struct. Está dando um erro que não consegui entender.

Alguém saberia do que se trata? No meio da copilação para na linha 33.

 

# include <iostream>
# include <fstream>
# include <stdio.h>
using namespace std;

int main (){
    struct data {
        int dia;
        int mes;
        int ano;
    };
    
    data dvalidade;
    
    struct prod {
        int cod;
        char nome;
        float preco;
        float qde; // qde = quantidade disponível em estoque
        data dvalidade; // dvalidade = data de validade
    };
    
    prod produto;
    
    const int quantp = 10; // quantp = contidade de produtos que podem ser cadastrados
    int prodv[quantp]; // prodv = vetor que irá armazenar a quantidade de produto determinada.
    ifstream entrada;
    
    entrada.open("entrada.txt");
    
    for (int i = 0 ; i < quantp ; i++){
        cout << "Codigo: ";
        cin >> prodv.produto.cod;
        
        cout << "Nome: ";
        gets(nome) >> prodv.produto.nome;
    
        cout << "Preço: ";
        cin >> prodv.produto.preco;
    
        cout >> "Quantidade em estoque: ";
        cin >> prodv.produto.qde;
        
        cout >> "Data de Validade: ";
        cin >> prodv.produto.data.dia;
        cin >> prodv.produto.data.mes;
        cin >> prodv.produto.data.ano;
        
        entrada << prodv.produto.cod;
        entrada << prodv.produto.nome;
        entrada << prodv.produto.preco;
        entrada << prodv.produto.qde;    
        entrada << prodv.produto.data.dia;
        entrada << prodv.produto.data.mes;
        entrada << prodv.produto.data.ano;
    }
    
    entrada.close();
    
}

Link para o comentário
Compartilhar em outros sites

OK.

Não sei onde fica a linha 33, é meio complicado de entender as coisas quando vocês pedem ajuda desta maneira assim *****

principalmente para nos que a predemos ainda.

 

Observei nesse código aqui um erro. 

struct prod {        int cod;        char nome;        float preco;        float qde; // qde = quantidade disponível em estoque        data dvalidade; // dvalidade = data de validade    };

...

cout << "Nome: ";        gets(nome) >> prodv[i].produto.nome;
/* Tenha em mente que nome quando for para gravar em uma strings(nomes) tem que ser em uma matriz de char. */char nome[15]; //Isso é uma matriz de char tem 15 char um para cada letra.char nome;    // Isso não dar para gravar um nome tem apenas espaço para uma 1 letra;
Link para o comentário
Compartilhar em outros sites

Desculpa pelo forma que expus o problema e agradeço pela erro que encontrou.

Talvez assim eu consiga mostrar melhor o que está acontecendo. Quando entra no for ele encontra um erro logo após "prodv."

 

for (int i = 0 ; i < quantp ; i++){
cout << "Codigo: ";
cin >> prodv.produto.cod;
Link para o comentário
Compartilhar em outros sites

Ok! Não te preocupas, aqui todos estamos em fase de aprendizagem.
Observe o seguinte:

struct prod {        int cod;        char nome[15]; //No máximo 14 letras        float preco;        float qde; // qde = quantidade disponível em estoque        data dvalidade; // dvalidade = data de validade    };

Isso aqui em acima e sua estrutura com a modificação de nome. 

um vetor para declaramos assim;

struct prod database[20] //Por exemplo este vetor ter 20 estruturas prod.

Isto esta bom, porém no teu algoritmo está assim como segue abaixo

int prodv[quantp];// prodv = vetor que irá armazenar a quantidade de produto determinada.

Isto acima não é um vetor de produtos e sim de inteiros (int) que em nada tem a ver com a sua estrutura.

cin >> prodv[i].produto.cod; //Vai dar erro pois não é o tipo certo de dados prodv[i] não é a sua estrutura.

pois é um inteiro.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...