首先发布在这里。编码也有点新鲜。
现在我停了下来。我需要做的是从一个雇员id的用户那里获得输入,然后在struct数组变量中找到它,并继续询问,直到输入正确的一个...所有在do-while循环中。然后我需要打印该员工的薪水并将其更新为新的。
我很难弄清楚如何在struct数组中搜索该员工ID,然后在完成后,保存struct array的位置,这样我就可以打印员工薪水,然后将其更新为别的什么。
下面是一些代码来显示struct array
case 3: //Update Employee
printf("Update Employee Salary\n");
printf("======================\n");
int employid;
do{
printf("Enter Employee ID: ");
scanf("%d", &employid);
}while(employid != emp->id[SIZE]);
printf("The current salary is %lf", emp->salary[SIZE]);
break;
这里有一些显示我已完成的代码
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
new callApi().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, location);
} else {
new callApi().execute(location);
}
我知道这是错的。 While只是查看当前位置,而printf只打印当前阵列员工的工资。
任何帮助都将不胜感激。
加成: 注意当我分配/使用我的结构时,我必须输入“ - >”实际告诉我的编译器我指向结构中的特定变量。通常我把“。”并且不知道为什么我需要把 - > ..我刚刚在线找到了修复程序。
通常它会是“emp.id [SIZE];”
NOT“emp-> id [SIZE];”
有人有什么想法吗?
全部谢谢
答案 0 :(得分:0)
考虑到您对结构的输入是正确的,您可以做的事情很少。
问题是你需要意识到你需要一个while/for
循环来迭代雇员数组。
第二件事是,在这里你没有正确比较它。您只是与第一个元素进行比较。
现在你可以做的是
bool found = false;
int foundEmpId = -1;
do{
printf("Enter Employee ID: ");
scanf("%d", &employid);
for(size_t i = 0; i< SIZE; i++)
if( emp[i].id == employid ){
foundEmpId = employid;
found = true;
break;
}
}while(!found);
// do your work.
现在这只是O(n)
搜索。
除此之外,您可以在我的代码中看到一件事。我正在使用emp[i].id
。这里我考虑的结构是
struct employee{
int id ;
int age;
double salary;
};
如果您想到员工,这些是您需要在此处添加的属性。你所做的是与不同的群体员工合作。
在这里你会像这样工作
struct employee emps[SIZE];
...
...
// the attributes of employee will be inputted like this
// if( scanf("%d",&emps[i].id) == 1 ) { /* */ }
...
emp->id[SIZE]
?解析emp->id[SIZE]
相当于(*emp).id[SIZE]
或更精确emp[0].id[SIZE]
。
总结问题/建议: -
P 您显示的代码部分表明您没有与所有员工进行比较。
P 您已创建了一组员工。但您不是在迭代或使用所有组。您刚刚参加了第一个员工小组。
S 您应该只使用一组员工,而不是使用员工组数组。或者即使你使用了一组enployess,那么只需要一个组即可。