“]之前的主要表达错误

时间:2016-04-02 06:26:19

标签: function pointers iostream dev-c++

嗨,我刚开始使用iostream和指针编程,我想知道为什么在我的函数buscar();在我想要打印的所有内容中,我在“]”之前收到主表达式错误。在另一个函数中,alta();我使用了一个函数指针,所以当我在函数buscar()中调用相同的信息时;使用函数alta();中的指针,结构的名称或对象的名称?

谢谢你的支持!!

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

        typedef struct libro {
                int registro;
                char nombre[50];
                char autor[50];
                char editorial[50];
                int year;
                int volumen;
            }lib;

            int n;
            int numper=0;
            int ye;
            char nom[25];
            int i=0;
            void alta(libro*puntero);
            void buscar();



            void alta(libro*p){

                for(i;i<n;i++){
                cout<<"Ingrese el nombre del libro:"<<endl;
                fflush(stdin);gets(p[i].nombre);
                cout<<"ingrese su registro"<<endl;
                cin>>p[i].registro;
                cout<<"ingrese el autor"<<endl;
                fflush(stdin);gets(p[i].autor);
                cout<<"ingrese el nombre del editorial"<<endl;
                fflush(stdin);gets(p[i].editorial);
                cout<<"ingrese el year del libro"<<endl;
                cin>>p[i].year;
                cout<<"ingrese la cantidad de volumenes que quiere ingresar"<<endl;
                cin>>p[i].volumen;
                }
            }

            void buscar(){
                int i, j, op;

            int encontrado= 0;
            cout<< "desea buscar por 1:nombre 2:telefono\n";
            cin>>op;
            switch (op)
                {
                    case 1: 
                    cout<<"escriba el nombre que va buscar\n";
                    cin>>nom;
                    for(i=0;i<numper;i++)
                        if (strcmp(libro[i].nombre,nom)==0)
                            {
                                if (libro[i].year!=0){
                                    cout<< "numero de registro: "<<libro[i].registro;
                                    cout<<"Nombre : "<<libro[i].nombre;
                                    cout<<"Editorial: "<<libro[i].editorial;
                                    cout<<"Year: "<<libro[i].year;
                                    cout<<"Volumenes: "<<libro[i].volumen;                                  
                                    cout<<"------------------------------"<<endl;
                                    j=1;
                                    system ("pause");
                                    system("cls");
                                }
                            }

                                if(j!=1){
                                    cout<<"no existe ese libro"<<endl;
                                    system ("pause");
                                    system ("cls");

                                }
                                break;

                    case 2: 
                    cout<<"Ingrese el Year del libro:\n";
                    cin>>ye;
                        for(i=0;i<numper;i++)
                            {
                                if (libro[i].year==ye)
                                    {
                                        encontrado=1;
                                        j=i;
                                    }
                            }
                            break;

                            if(encontrado==1)
                                {
                                    cout<< "numero de registro: "<<libro[i].registro;
                                    cout<<"Nombre : "<<libro[i].nombre;
                                    cout<<"Editorial: "<<libro[i].editorial;
                                    cout<<"Year: "<<libro[i].year;
                                    cout<<"Volumenes: "<<libro[i].volumen;                                  
                                    cout<<"------------------------------"<<endl;
                                }
                                else 
                                cout<<"no existe un libro con ese year.";
                                system("pause");
                                system ("cls");

                }//switch

                }


            int main(){
                libro r[50];
                int opc=0;
                do{
                    cout<<"Selecione opcion:"<<endl;
                    cout<<"1) Alta"<<endl;
                    cout<<"2) BUSCAR"<<endl;
                    cout<<"3) SALIR"<<endl;

                    cin>>opc;
                    switch(opc){
                        case 1:{
                        cout<<"cuantos libros quiere dar de alta"<<endl;
                        cin>>n;
                        alta(r);
                        break;
                        case 2:
                            buscar(r);

                        } break;
                    }
                } while(opc!=2);
                system("pause");
                return 0;
            }

1 个答案:

答案 0 :(得分:0)

问题是在调用alta时,您将书籍数据读入库数组r。因此,当您在buscar找到自己的图书时,您需要在数组中找到r

您需要编辑代码:

  1. buscar() - &gt; buscar(libro *p)
  2. 代码中的更多错误是:

    1. buscar功能中,您需要将libro替换为p。就像cout << int;没有意义一样(int是一种类型!),你必须做int i=1; cout << i;
    2. 之类的事情。
    3. while(opc!=2)需要替换为while(opc!=3)。您想在opc==3时退出,对吧?
    4. if(encontrado==1) {...}应放在switch块之外。