Александр Сундуков
S:22:27:44 06.12
R:22:27:46 06.12
2 лаба
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>
// Функция для сортировки массива чисел в порядке возрастания
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// Обмен элементов
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// Функция для разделения чисел на положительные и отрицательные
void separateNumbers(int arr[], int n, int** positive, int* positiveCount, int** negative, int* negativeCount) {
// Определяем количество положительных и отрицательных чисел
for (int i = 0; i < n; i++) {
if (arr[i] > 0) {
(*positiveCount)++;
}
else if (arr[i] < 0) {
(*negativeCount)++;
}
}
// Выделяем память под массивы положительных и отрицательных чисел
*positive = (int*)malloc(*positiveCount * sizeof(int));
[id23816|*negative] = (int*)malloc(*negativeCount * sizeof(int));
// Заполняем массивы положительных и отрицательных чисел
int posIndex = 0;
int negIndex = 0;
for (int i = 0; i < n; i++) {
if (arr[i] > 0) {
(*positive)[posIndex++] = arr[i];
}
else if (arr[i] < 0) {
([id23816|*negative])[negIndex++] = arr[i];
}
}
}
int main() {
setlocale(LC_ALL, *.866*);
int n;
// Запрашиваем у пользователя количество элементов
wprintf(L*Введите количество элементов: *);
scanf_s(*%d*, &n);
// Создаем массив для хранения элементов
int* arr = (int*)malloc(n * sizeof(int));
// Заполняем массив элементами
wprintf(L*Введите элементы массива:\n*);
for (int i = 0; i < n; i++) {
wprintf(L*Элемент %d: *, i + 1);
scanf_s(*%d*, &arr[i]);
}
// Определяем количество положительных и отрицательных чисел
int positiveCount = 0;
int negativeCount = 0;
int* positiveNumbers;
int* negativeNumbers;
separateNumbers(arr, n, &positiveNumbers, &positiveCount, &negativeNumbers, &negativeCount);
// Сортируем положительные числа
bubbleSort(positiveNumbers, positiveCount);
// Сортируем отрицательные числа
bubbleSort(negativeNumbers, negativeCount);
// Выводим результат
wprintf(L*\nПоложительные числа (в порядке возрастания):\n*);
for (int i = 0; i < positiveCount; i++) {
wprintf(L*%d *, positiveNumbers[i]);
}
wprintf(L*\nОтрицательные числа (в порядке возрастания):\n*);
for (int i = 0; i < negativeCount; i++) {
wprintf(L*%d *, negativeNumbers[i]);
}
// Освобождаем память
free(arr);
free(positiveNumbers);
free(negativeNumbers);
return 0;
}