“预期的主表达式在'之前。'令牌”在使用结构和数组时

时间:2019-11-16 22:09:13

标签: c++ arrays struct

我目前正在从事一个小型c ++项目,并且将其用作期末考试的练习,因此这可能是一个愚蠢的错误。所以...问题是,我声明了一个将其用作购物清单的结构数组,其中“ articulo”(指商品或产品)具有名称和数量字段。然后声明“ articulo”结构像一个名为“ ListaArticulos”的列表(即产品列表),最多包含100个产品。我的问题是,我在哪里弄乱这件事?我的意思是,我尝试将值存储在struct中,然后将它们保存到数组中,并且不断得到:'之前的预期主表达式。 “ cin >> articulo.prod;” “ cin >> articulo.cant;” 中的令牌

#include <iostream>
#include <iomanip>
#include <stdlib.h>

using namespace std;

typedef struct
{
    char prod[30];
    int cant;
}articulo;

typedef articulo ListaArticulos[100];

int nElem,opc;

int main()
{

    while( opc!=3 ){
        cout << "Bienvenido al la lista!." << "\n";
        cout << "\n[1]. Agregar articulos a la lista.";
        //cout << "\n[2]. Ver articulos actuales.";
        //cout << "\n[3]. Salir del programa." << "\n";
        cout << "\nElija una opción para continuar: ";

        cin >> opc;

        switch(opc)
        {
            default:
                cout << "\nCuantos articulos?: ";
                cin >> nElem;
                ListaArticulos LA;
                for(int i=0; i<nElem; i++){
                    cout << "Ingrese articulo " << i++ << ": ";
                    cin >> articulo.prod;
                    cout << "Ingrese cantidad: ";
                    cin >> articulo.cant;
                    LA[i] = articulo;
                }
            break;

        }
    }
return 0;
}

任何有关此的提示将不胜感激。谢谢大家!

2 个答案:

答案 0 :(得分:0)

articulo是一种类型。您想使用这种类型的变量。

用以下这些替换for循环内的行:

cout << "Ingrese articulo " << i+1 << ": ";
cin >> LA[i].prod;
cout << "Ingrese cantidad: ";
cin >> LA[i].cant;

它将起作用。

我还要指出,您在i++中使用cout作了错字。您已经在i中增加了for(int i=0; i<nElem; i++),所以这里不需要增加它。如果要以此方式打印1索引号,请使用i+1,如图所示。

答案 1 :(得分:0)

articulo是一种类型,而不是对象。 如果要写入元素LA[i],请这样做:std::cin >> LA[i].prod;

但是我真的很想建议您获得有关C ++的好书或教程。这段代码确实很糟糕。