DEV C++ 第 69 行 [错误] ISO "for" 范围更改了"i"的名称查找 [-允许]

DEV C++ Line 69 [Error] name lookup of 'i' changed for ISO 'for' scoping [-fpermissive]

本文关键字:允许 查找 for C++ 错误 范围 DEV ISO      更新时间:2023-10-16

我已经为这段代码工作了一段时间,我已经编译了它,但它没有完成我想要它做的事情。

这是一个问题,所以你可以看到我在做什么。

开发一个可以解决以下问题的程序:Panamericana美国您想要修改并打印您的5名员工的信息。每一个项目都必须注明姓名、工作时间、支付基数和年龄。例如,一组典型的数据可以是:

  • 40岁以上员工的全额薪酬
  • 45岁以下员工的平均总薪酬
  • 工资总额最高的员工的姓名和工资总额(假设没有平局(
#include<iostream>
#include<cstdlib>
#include <windows.h>
using namespace std;
struct Empleados{
char nombre[20];
char apellido[20];
double edad;
float horas;
float salporhora;
float imp;
float salbruto;
float salneto;
}emp[2];
int main(){
int posM = 0, posm = 0;
float sal=40;
float impuesto = 200;
float sa,prom45;
float mayor = 0, menor = 99999;
for(int i=0;i<2;i++)
{
fflush(stdin);
cout<<"Introduzca nombre del empleado: ";
cin.getline(emp[i].nombre,20,'n');
cout<<"Introduzca Apellido del empleado: ";
cin.getline(emp[i].apellido,20,'n');
cout<<"Introduzca su edad: ";
cin>>emp[i].edad;
cout<<"Introduzca sus horas de trabajo: ";
cin>>emp[i].horas;
cout<<"Pago por hora: ";
cin>>emp[i].salporhora;
cout<<"n";
}
for(int i=0;i<2;i++){
sa = emp[i].salbruto * 1.5;
emp[i].salbruto = sa + (emp[i].horas * emp[i].salporhora);  
}
for(int i=0;i<2;i++){
if (emp[i].salneto > mayor){
mayor = emp[i].salneto;
posM = i;
}
if (emp[i].salneto < menor){
menor = emp[i].salneto;
posm = i;
}
}
for (int i=0;i<2;i++){          
emp[i].imp = emp[i].salbruto * 0.20;
emp[i].salneto = emp[i].salbruto - emp[i].imp;
}


cout<<"NOMBRE"<<"t "<<"APELLIDO"<<"t "<<"HORAS"<<"t "<<"SUELDO"<<"t "<<"EDAD"<<"t "<<"TOTAL"<<"t "<<"IMP%"<<"t "<<"NETO"<<"n";
cout<<emp[i].nombre<<"t "<<emp[i].apellido<<"t "<<emp[i].horas<<"t "<<emp[i].salporhora<<"t "<<emp[i].edad<<"t "<<emp[i].salbruto<<"t "<<emp[i].imp<<"t "<<emp[i].salneto<<"n";
for(int i=0;i<2;i++){
if (emp[i].edad >= 40){
cout<<"Los Pagos totales de los empleados de almenos 40 "<<emp[i].salneto<<"n";
}
if (emp[i].edad < 45){
prom45 = emp[i].salneto/2;
cout<<"El Promedio de Los Pagos totales de los empleados de menos de 45 anos "<<prom45<<"n";
}
}
cout<<"nEl empleado con mayor salario es: "<<emp[posM].nombre<<endl;
cout<<"Que tiene un salario de: "<<posM<<endl;
Sleep (5000);
cout<<"nGracias Por su Tiempo"<<endl;
return 0;
}

您在一些地方定义了i,但它们的生存期&范围都限于它们各自的CCD_ 2循环。

但是这里

cout<<emp[i].nombre<<"t "<<emp[i].apellido<<"t "<<emp[i].horas<<"t "<<emp[i].salporhora<<"t "<<emp[i].edad<<"t "<<emp[i].salbruto<<"t "<<emp[i].imp<<"t "<<emp[i].salneto<<"n";

您正在使用i,但在此范围中没有定义i。这就是错误的原因。

也许您的意思是将其包含在上面的for循环中?

for (int i=0;i<2;i++){          
emp[i].imp = emp[i].salbruto * 0.20;
emp[i].salneto = emp[i].salbruto - emp[i].imp;
}