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

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

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

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

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

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

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


void quickSort(int* arr, int size)
{

	int i = 0;
	int j = size - 1;

	int mid = arr[size / 2];


	do {

		while (arr[i] < mid)
		{
			i++;
		}
		while (arr[j] > mid)
		{
			j--;
		}


		if (i <= j)
		{
			int temp = arr[i];
			arr[i] = arr[j];
			arr[j] = temp;

			i++;
			j--;
		}
	} while (i <= j);



	if (j > 0)
	{
		quickSort(arr, j + 1);
	}
	if (i < size)
	{
		quickSort(&arr[i], size - i);
	}
}


int inputNumOfWorkers(int numOfSub)
{
	printf("Введите количество сотрудников в %d компании: ", numOfSub);
	int temp = 0;
	scanf("%d", &temp);

	return temp;
}


int inputNumberOfYearsToAnalyze()
{
	printf("За сколько последних лет проводится анализ?: ");
	int temp = 0;
	scanf("%d", &temp);

	return temp;
}


void initArray(int** arr, int weigth, int heigth)
{
	for (int i = 0; i < weigth; i++)
	{
		arr[i] = malloc(sizeof(**arr) * heigth);
	}
}


void fillingArray(int** array, int weigth, int heigth)
{
	for (int i = 0; i < weigth; i++)
	{
		for (int j = 0; j < heigth; j++)
		{
			printf("Введите зарплату %d работника за %d-й год: ", (i + 1), (j + 1));
			scanf("%d", &array[i][j]);
		}
		printf("\n");
	}
}


void outTwoDimensionalDynamiclArray(int** array, int weigth, int heigth)
{
	for (int i = 0; i < weigth; i++)
	{
		printf("Зарплата %d-го работника\n", (i + 1));
		for (int j = 0; j < heigth; j++)
		{
			printf("%d\t", array[i][j]);

		}
		printf("\n");

	}
}


void fillingAllData(int** firstArr, int** secondArr, int firstNumOfWorkers, int secondNumOfWorkers, int yearsForAnalys)
{
	printf("Первое подразделение:\n");
	fillingArray(firstArr, firstNumOfWorkers, yearsForAnalys);

	printf("Второе подразделение:\n");
	fillingArray(secondArr, secondNumOfWorkers, yearsForAnalys);
}


void sortSalaryInSubdivision(int** arr, int heigth, int weigth)
{
	for (int i = 0; i < weigth; i++)
	{
		int* temp = 0;
		temp = malloc(sizeof(*temp) * heigth);

		for (int j = 0; j < heigth; j++)
		{
			temp[j] = arr[i][j];
		}

		quickSort(temp, heigth);


		for (int j = 0; j < heigth; j++)
		{
			arr[i][j] = temp[j];
		}
	}
}


int sumSalaryInSubdivision(int** arr, int heigth, int weigth)
{
	int sum = 0;
	int temp = 0;

	for (int i = 0; i < weigth; i++)
	{
		for (int j = 0; j < heigth; j++)
		{
			temp = arr[i][j];
			sum += temp;
		}
	}
	return sum;
}


double sumOfSalaryAfterTax(int** arr, int heigth, int weigth)
{
	double sum = sumSalaryInSubdivision(arr, heigth, weigth);


	double onePercent = sum / 100;

	const taxPercent = 20;

	double tax = onePercent * taxPercent;

	return sum -= tax;
}


void outAllInfoForSalary(int** firstArr, int** secondArr, int firstNumOfWorkers, int secondNumOfWorkers, int yearsForAnalys)
{
	printf("Зарплата для сортировки\n");

	printf("Первое подразделение\n");
	outTwoDimensionalDynamiclArray(firstArr, firstNumOfWorkers, yearsForAnalys);

	printf("\n");

	printf("Второе подразделение\n");
	outTwoDimensionalDynamiclArray(secondArr, secondNumOfWorkers, yearsForAnalys);


	sortSalaryInSubdivision(secondArr, yearsForAnalys, secondNumOfWorkers);

	printf("\n");
	printf("Зарплата после сортировки\n");

	printf("Второе подразделение\n");
	outTwoDimensionalDynamiclArray(secondArr, secondNumOfWorkers, yearsForAnalys);


	int firstSallaryNoTax = sumSalaryInSubdivision(firstArr, yearsForAnalys, firstNumOfWorkers);
	int secondSallaryNoTax = sumSalaryInSubdivision(secondArr, yearsForAnalys, secondNumOfWorkers);

	printf("\nСумма зарплаты за все годы без учета налога\n");
	printf("В первом подразделе: %d\n", firstSallaryNoTax);
	printf("Во втором подразделе: %d\n", secondSallaryNoTax);

	double firstSallaryAfterTax = sumOfSalaryAfterTax(firstArr, yearsForAnalys, firstNumOfWorkers);
	double secondSallaryAfterTax = sumOfSalaryAfterTax(secondArr, yearsForAnalys, secondNumOfWorkers);

	printf("\nСумма зарплаты за все годы с учетом налога\n");
	printf("В первом подразделе: %lf\n", firstSallaryAfterTax);
	printf("Во втором подразделе: %lf", secondSallaryAfterTax);
}

int main()
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);

	const int firstSub = 1;
	const int secondSub = 2;

	int numOfWorkersFirstSub = inputNumOfWorkers(firstSub);
	int numOfWorkersSecondSub = inputNumOfWorkers(secondSub);
	int numOfYears = inputNumberOfYearsToAnalyze();


	int** firstSubArr = 0;
	firstSubArr = malloc(sizeof(*firstSubArr) * numOfWorkersFirstSub);
	initArray(firstSubArr, numOfWorkersFirstSub, numOfYears);

	int** secondSubArr = 0;
	secondSubArr = malloc(sizeof(*secondSubArr) * numOfWorkersSecondSub);
	initArray(secondSubArr, numOfWorkersSecondSub, numOfYears);


	fillingAllData(firstSubArr, secondSubArr, numOfWorkersFirstSub, numOfWorkersSecondSub, numOfYears);

	outAllInfoForSalary(firstSubArr, secondSubArr, numOfWorkersFirstSub, numOfWorkersSecondSub, numOfYears);
}
LerDer вне форума Ответить с цитированием
Старый 26.12.2022, 11:15   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Если бы читал Правила:
Цитата:
4. При создании новых тем запрещено:

4.2. создавать одинаковые темы;
И можешь не благодарить.
digitalis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решить поставленную задачу, используя средства управления вводом/выводом С++. Дана квадратная целочисленная матрица размером не более 10*10. burovano Помощь студентам 2 14.03.2018 18:32
Разработать программу, которая реализует поставленную задачу (на с++) VikkyLand Помощь студентам 0 24.01.2018 17:47
Как переделать код под задачу? - C (СИ) username12 Общие вопросы C/C++ 1 17.12.2015 20:38
SOS!!!!(на каком языке программа?)Нужно переделать программу,а я даже не знаю на каком она языке:eek::eek:,РЕБЯТА ПОМОГИ Нака Помощь студентам 10 19.11.2011 15:16
Переделать задачу Macuka Фриланс 2 09.12.2010 20:43