我正在尝试生成一种方法,在该方法中用户可以通过按数字来执行操作(在这种情况下,它将客户端的假定策略从 True 传递到 False)。但是,当我在菜单中调用它时,控制台会告诉我错误。
错误:未在此范围内声明“polizaEnMemory”|
所以我想知道,我是否必须将向量作为参数传递?如果您有任何补充材料,我将不胜感激。代码。
菜单程序:
char menu(void)
{
char opcion;
cout <<"Polizas en memoria.\n\nSelecciones una opcion: "<< endl;
cout <<"1 - Cargar una nueva poliza" << endl;
cout <<"2 - Desactivar una poliza existente" << endl;
cout <<"3 - Buscar por numero de poliza" << endl;
cout <<"4 - Buscar por numero de DNI" << endl;
cout <<"5 - Listar polizas activas ordenadas por incidentes descendetemente" << endl;
cout <<"6 - Procesar incidentes" << endl;
cout <<"7 - Sobreescribir archivo y salir" << endl;
cout <<"8 - Crear incidente" << endl;
cout <<"Esc - Salir" << endl;
do
opcion = getch();
while ( (opcion < 49 || opcion > 57) && opcion != 27 );
switch(opcion)
{
case '1':
cout << 1;
break;
case '2':
desactivarPoliza(polizaEnMemoria,TAMANO);
break;
case '3':
cout << 3;
break;
case '4':
cout << 4;
break;
case '5':
cout << 5;
break;
case '6':
cout << 6;
break;
case '7':
cout << 7;
break;
case '8':
cout << 8;
break;
}
return opcion;
}
我调用菜单过程的主要内容:
int main()
{
poliza polizaEnMemoria[TAMANO];
levantarAsegurados(polizaEnMemoria, TAMANO);
char opcion;
do
opcion = menu();
while(opcion != 27);
return 0;
}
策略停用程序
void desactivarPoliza ( poliza V[],int tam)
{
int i = 0;
int PolizaADesactivar;
cout << "Ingrese numero de poliza que desea desactivar" << endl;
cin >> PolizaADesactivar;
bool encontrado = false;
while (i < tam && V[i].nroPoliza!=999999)
{
if (V[i].nroPoliza == PolizaADesactivar)
{
if (V[i].polizaActiva == 'f')
{
cout << "La poliza ya se encontraba desactivada" << endl;
getch();
}
if (V[i].polizaActiva == 'F')
{
cout << "La poliza ya se encontraba desactivada" << endl;
getch();
}
V[i].polizaActiva = 'F';
encontrado = true;
cout << "La poliza se desactivo correctamente" << endl;
getch();
}
i++;
}
if (encontrado == false)
{
cout << "No existe esa poliza" << endl;
getch();
return;
}
}
我的最后一个更普遍的问题是,创建一个菜单过程还是在 main 中编写代码更可取?
根据此代码段:
polizaEnMemoria
是仅存在于 中的局部变量main
。但是在函数中,menu
您正在执行以下操作:在最后一个函数中,没有要调用
polizaEnMemoria
的变量,因此编译器会抱怨。解决错误就像将数组传递给函数一样简单
menu()
:总是最好将程序分成小的和可管理的逻辑块。面对少数人,它的好处是巨大的。
一些窗户
缺点