嗨,我刚开始使用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;
}
答案 0 :(得分:0)
问题是在调用alta
时,您将书籍数据读入库数组r
。因此,当您在buscar
找到自己的图书时,您需要在数组中找到r
。
您需要编辑代码:
buscar()
- &gt; buscar(libro *p)
代码中的更多错误是:
buscar
功能中,您需要将libro
替换为p
。就像cout << int;
没有意义一样(int
是一种类型!),你必须做int i=1; cout << i;
while(opc!=2)
需要替换为while(opc!=3)
。您想在opc==3
时退出,对吧?if(encontrado==1) {...}
应放在switch
块之外。