Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2022, 20:01   #1
LerDer
Пользователь
 
Регистрация: 12.12.2022
Сообщений: 14
По умолчанию Помогите найти ошибку в коде на языке C

Нужно найти ошибку в коде задачи 1, а затем, по возможности, изменить код задачи 1 под задачу 2.
Задача 1:
Пусть рассматривается два подразделения, в первом подразделении работает m
работников, во втором – m1. Работа каждого подразделения анализируется по n
последних лет. Для каждого работника указана заработная плата за соответствующий
год (сдается с клавиатуры). Необходимо определить, какой средний заработок у
каждом подразделении (реализовать с помощью функции). Отсортировать
заработная плата работников второго подразделения методом Шейкера (реализовать
в виде функции). Нарисовать схему алгоритма.

Задача 2:
Пусть рассматривается два подразделения, в первом подразделении работает m
работников, во втором – m1. Работа каждого подразделения анализируется по n
последних лет. Для каждого работника указана заработная плата за соответствующий
год (сдается с клавиатуры). Необходимо определить, кто оплатил самый большой
налог в каждом подразделении, если налоговая ставка составляет 20%
(реализовать с помощью функции). Отсортировать заработную плату работников
второго подразделения методом "пузырьки" (реализовать в виде функции).
Нарисовать схему алгоритма.

Код к задаче 1:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void inputGroupInfo(int workers, int years, float groupArray[][years])
{
 for(int j = 0; j < workers; j++)
 {
 printf("Работник%d:\n", j+1);
 for(int k = 0; k < years; k++)
 {
 scanf("%f", &groupArray[j][k]);
 }
 }
};
void outputGroupInfo(int workers, int years, float groupArray[][years])
{
 for(int j = 0; j < workers; j++)
 {
 printf("Работник%d:\n", j+1);
 for(int k = 0; k < years; k++)
 {
 printf("%f\n", groupArray[j][k]);
 }
 }
};
double avgSalaryCalc(int workers, int years, float groupArray[][years])
{
 double sumSalary = 0;
 for(int j = 0; j < workers; j++)
 {
 for(int k = 0; k < years; k++)
 {
 sumSalary += groupArray[j][k];
 }
 }
 return sumSalary / (years * workers);
};
void shekerSort(int workers, int years, float groupArray[][years])
{
 for(int i = 0; i < workers; i++)
 {
 int leftBorder = 0, rightBorder = years - 1, change;
 float tempStorage;
 while (leftBorder < rightBorder)
 {
 change = 0;
 for(int j = leftBorder; j < rightBorder; j++)
 {
 if(groupArray[i][j] > groupArray[i][j + 1])
 {
 tempStorage = groupArray[i][j];
 groupArray[i][j] = groupArray[i][j + 1];
 groupArray[i][j + 1] = tempStorage;
 change = j;
 }
 }
 rightBorder = change;
 for(int k = rightBorder; k > leftBorder; k--)
 {
 if(groupArray[i][k] < groupArray[i][k - 1])
 {
 tempStorage = groupArray[i][k];
 groupArray[i][k] = groupArray[i][k - 1];
 groupArray[i][k - 1] = tempStorage;
 change = k;
 }
 }
 leftBorder = change;
 }
 }
};
int main()
{
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 int m, m1, n; // m, m1 количество работников группы, n - количество лет
 double avgSalaryGroup1, avgSalaryGroup2;
 printf("Введите количество работников подраздела 1, подраздела 2,"
 " и количество лет\n");
 scanf("%d%d%d",&m,&m1,&n);
 float group1[m][n], group2[m1][n];
 printf("Введите зарплаты за %d лет для группы 1\n", n);
 inputGroupInfo(m, n, &group1);
 printf("Введите зарплаты за %d лет для группы 2\n", n);
 inputGroupInfo(m1, n, &group2);
 avgSalaryGroup1 = avgSalaryCalc(m, n, &group1);
 avgSalaryGroup2 = avgSalaryCalc(m1, n, &group2);
 printf("Средняя зарплата группы 1 = %f , группы2 = %f\n", 
avgSalaryGroup1, avgSalaryGroup2);
 shekerSort(m1, n, &group2);
 printf("Результат сортировки зарплат работников 2 группы\n");
 outputGroupInfo(m1, n, &group2);
 _getch();
 return 0;
}
LerDer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку в коде на языке C LerDer Помощь студентам 3 14.12.2022 22:07
Помогите найти ошибку в коде на языке C LerDer Помощь студентам 1 13.12.2022 17:00
Помогите, пожалуйста, найти ошибку в коде (найти сумму факториалов чётных чисел в заданном диапазоне) kris14 Паскаль, Turbo Pascal, PascalABC.NET 8 25.10.2017 15:42
помогите найти ошибку в коде Saka Помощь студентам 6 07.12.2009 11:43
Помогите найти ошибку в коде Jora_Kornev Общие вопросы Delphi 10 10.01.2009 17:00