Структура "Работники" - для всех людей выводится одна и та же зарплата - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задание состоит в том чтоб сделать структуру с людьми которые работают в цеху, и посчитать их зарплату, пользователь вводит кол людей, кол изделей собраных каждым работником класса а, в, с, и расценку, в структуре вывессти зарплату. У меня как бы все выходит только вывод зарплату последнего из работников и такую же приписывает всем.
Листинг программы
  1. # include <stdio.h>
  2. # include <conio.h>
  3. # include <string.h>
  4. # include <math.h>
  5. # include <stdlib.h>
  6. FILE* file;
  7. int main ()
  8. {
  9. int i,n,k,sa,sb,sc;
  10. float seredne;
  11. seredne=0;
  12. k=0;
  13. sa=10;
  14. sb=15;
  15. sc=20;
  16. struct ludy
  17. {
  18. char surname[20];
  19. char ceh[20];
  20. int a;
  21. int b;
  22. int c;
  23. }zavod[100];
  24. printf("Vvedit` kil`kist` ludey ");
  25. scanf("%d",&n);
  26. for(i=1;i<=n;i++)
  27. {
  28. printf("Vvedit` prizvusche %d luduny ",i);
  29. scanf("%s",zavod[i].surname);
  30. printf("\n%s\n", zavod[i].surname);
  31. printf("Vvedit' ceh %d ludynu " ,i);
  32. scanf("%s",zavod[i].ceh);
  33. printf("Vvedit' kol vyrobiv A ");
  34. scanf("%d",&zavod[i].a);
  35. printf("Vvedit' kol vyrobiv B ");
  36. scanf("%d",&zavod[i].b);
  37. printf("Vvedit' kol vyrobiv C ");
  38. scanf("%d",&zavod[i].c);
  39. k=(sa*zavod[i].a)+(sb*zavod[i].b)+(sc*zavod[i].c);
  40. }
  41. file=fopen("ludy.txt","w+");
  42. for(i=1;i<=n;i++)
  43. {
  44. for(i=1;i<=n;i++)
  45. fprintf(file,"%s %s %d %d %d %d ",zavod[i].surname,zavod[i].ceh,zavod[i].a,zavod[i].b,zavod[i].c, k);
  46. {
  47. }
  48. }
  49. fclose(file);
  50. getch ();
  51. }
пример для 2-х работников при вводе а=1 в=2 с=3 должно вывести зарплату 85 при вводе а=4 в=5 с=6 должно вывести 235 проблема в том что оно выводит всем зарплату последнего
teplov lol 1 2 3 235 tkachenko kol 4 5 6 235 то есть всем зарплату 235 выбило как исправить не знаю

Решение задачи: «Структура "Работники" - для всех людей выводится одна и та же зарплата»

textual
Листинг программы
  1. int zp(struct ludy* lydu){
  2. return (sa*lydu->a)+(sb*lydu->b)+(sc*lydu->c);
  3. }

Объяснение кода листинга программы

В данном коде:

  1. zp - это функция, которая принимает один аргумент типа struct ludy по имени lydu.
  2. struct ludy - это структура данных, которая содержит три поля: a, b и c.
  3. Функция zp возвращает результат вычисления выражения (sa*lydu->a)+(sb*lydu->b)+(sc*lydu->c), где sa, sb и sc - это константы, а lydu->a, lydu->b и lydu->c - это поля структуры lydu.
  4. Значение выражения (sa*lydu->a)+(sb*lydu->b)+(sc*lydu->c) будет зарплатой, которая вычисляется на основе значений полей структуры lydu.
  5. Предполагается, что для всех работников значение полей lydu->a, lydu->b и lydu->c одинаково, поэтому и зарплата для всех будет одинаковой.
  6. Если поля lydu->a, lydu->b и lydu->c будут разными для разных работников, то зарплата для них будет разной.
  7. Возможно, что sa, sb и sc - это коэффициенты, которые определяют вклад каждого из полей в общую зарплату.
  8. Функция zp может использоваться для вычисления зарплаты для каждого работника в цикле, если она вызывается для каждого работника и результат сохраняется в отдельной переменной.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы