Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void findMinAndDelete(int *array, int *length);
- void findMaxAndDelete(int *array, int *length);
- void addNumberToBeginningOfArray(int *array, int *length, int number);
- int main() {
- int
- *inputNumbers = NULL, n = 0, elem = 0,
- negativeNumbersSum = 0, positiveNumbersSum = 0,
- maxValue = INT32_MIN, minValue = INT32_MAX;
- // начало ввода даных
- do {
- printf("a[%d]= ", n);
- scanf("%d", &elem);
- inputNumbers = (int*) realloc(inputNumbers, (n + 1) * sizeof(int)); // выделяем память
- inputNumbers[n] = elem;
- if (elem >= 0) {
- positiveNumbersSum += elem;
- } else {
- negativeNumbersSum += elem;
- }
- if (elem > maxValue) { // ищем максимальное значение
- maxValue = elem;
- } else if (elem < minValue) { // ищем минимальное значение
- minValue = elem;
- }
- n++;
- } while (positiveNumbersSum >= -negativeNumbersSum);
- // конец ввода данных
- if (n > 1) { // проверяем, что было введено более чем 1 значение
- for (int i = 1; i < n; i++) {
- if (inputNumbers[i] < inputNumbers[i - 1]) {
- printf("Массив не отсортирован по возрастанию\n");
- findMinAndDelete(inputNumbers, &n);
- findMaxAndDelete(inputNumbers, &n);
- addNumberToBeginningOfArray(inputNumbers, &n, maxValue + minValue);
- break;
- } else if (i == n - 1) {
- printf("Массив отсортирован по возрастанию\n");
- return 0;
- }
- }
- }
- for (int i = 0; i < n; i++) {
- printf("%d ", inputNumbers[i]);
- }
- return 0;
- }
- void findMinAndDelete(int *array, int *length) { // функция находит минмимальное число и удаляет его
- int minValue = INT32_MAX, minValueIndex = 0;
- for (int i = 0; i < *length; i++) {
- if (array[i] < minValue) {
- minValue = array[i];
- minValueIndex = i;
- }
- }
- for (int i = minValueIndex; i < *length - 1; i++) {
- array[i] = array[i + 1];
- }
- *length -= 1;
- }
- void findMaxAndDelete(int *array, int *length) { // функция находит максимальное число и удаляет его из массива
- int maxValue = INT32_MIN, maxValueIndex = 0;
- for (int i = 0; i < *length; i++) {
- if (array[i] > maxValue) {
- maxValue = array[i];
- maxValueIndex = i;
- }
- }
- for (int i = maxValueIndex; i < *length - 1; i++) {
- array[i] = array[i + 1];
- }
- *length -= 1;
- }
- void addNumberToBeginningOfArray(int *array, int *length, int number) { // сдвигаем все элементы массива вправо, а первым элементом ставим переданное число
- array = (int*) realloc(array, (*length + 1) * sizeof(int));
- for (int i = *length; i > 0; i--) {
- array[i] = array[i - 1];
- }
- array[0] = number;
- *length += 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement