Структура "Работники" - для всех людей выводится одна и та же зарплата - 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
может использоваться для вычисления зарплаты для каждого работника в цикле, если она вызывается для каждого работника и результат сохраняется в отдельной переменной.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д