Структура "Работники" - для всех людей выводится одна и та же зарплата - C (СИ)
Формулировка задачи:
Задание состоит в том чтоб сделать структуру с людьми которые работают в цеху, и посчитать их зарплату, пользователь вводит кол людей, кол изделей собраных каждым работником класса а, в, с, и расценку, в структуре вывессти зарплату. У меня как бы все выходит только вывод зарплату последнего из работников и такую же приписывает всем.
# include <stdio.h>
# include <conio.h>
# include <string.h>
# include <math.h>
# include <stdlib.h>
FILE* file;
int main ()
{
int i,n,k,sa,sb,sc;
float seredne;
seredne=0;
k=0;
sa=10;
sb=15;
sc=20;
struct ludy
{
char surname[20];
char ceh[20];
int a;
int b;
int c;
}zavod[100];
printf("Vvedit` kil`kist` ludey ");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("Vvedit` prizvusche %d luduny ",i);
scanf("%s",zavod[i].surname);
printf("\n%s\n", zavod[i].surname);
printf("Vvedit' ceh %d ludynu " ,i);
scanf("%s",zavod[i].ceh);
printf("Vvedit' kol vyrobiv A ");
scanf("%d",&zavod[i].a);
printf("Vvedit' kol vyrobiv B ");
scanf("%d",&zavod[i].b);
printf("Vvedit' kol vyrobiv C ");
scanf("%d",&zavod[i].c);
k=(sa*zavod[i].a)+(sb*zavod[i].b)+(sc*zavod[i].c);
}
file=fopen("ludy.txt","w+");
for(i=1;i<=n;i++)
{
for(i=1;i<=n;i++)
fprintf(file,"%s %s %d %d %d %d ",zavod[i].surname,zavod[i].ceh,zavod[i].a,zavod[i].b,zavod[i].c, k);
{
}
}
fclose(file);
getch ();
}
пример для 2-х работников
при вводе
а=1
в=2
с=3
должно вывести зарплату 85
при вводе
а=4
в=5
с=6
должно вывести 235
проблема в том что оно выводит всем зарплату последнего
teplov lol 1 2 3 235 tkachenko kol 4 5 6 235 то есть всем зарплату 235 выбило как исправить не знаю
Решение задачи: «Структура "Работники" - для всех людей выводится одна и та же зарплата»
textual
Листинг программы
int zp(struct ludy* lydu){
return (sa*lydu->a)+(sb*lydu->b)+(sc*lydu->c);
}
Объяснение кода листинга программы
В данном коде:
zp- это функция, которая принимает один аргумент типаstruct ludyпо имениlydu.struct ludy- это структура данных, которая содержит три поля:a,bиc.- Функция
zpвозвращает результат вычисления выражения(sa*lydu->a)+(sb*lydu->b)+(sc*lydu->c), гдеsa,sbиsc- это константы, аlydu->a,lydu->bиlydu->c- это поля структурыlydu. - Значение выражения
(sa*lydu->a)+(sb*lydu->b)+(sc*lydu->c)будет зарплатой, которая вычисляется на основе значений полей структурыlydu. - Предполагается, что для всех работников значение полей
lydu->a,lydu->bиlydu->cодинаково, поэтому и зарплата для всех будет одинаковой. - Если поля
lydu->a,lydu->bиlydu->cбудут разными для разных работников, то зарплата для них будет разной. - Возможно, что
sa,sbиsc- это коэффициенты, которые определяют вклад каждого из полей в общую зарплату. - Функция
zpможет использоваться для вычисления зарплаты для каждого работника в цикле, если она вызывается для каждого работника и результат сохраняется в отдельной переменной.