Поменять местами последний и максимальный элемент массива - C (СИ)

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

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

Добрый вечер, есть программа она меняет минимальный и максимальный элемент массива. Нужно еще сделать программку которая меняет местами последний элемент массива и максимальный, то есть {1,5,3,7,6,4,9,2} - исходной массив {1,5,3,7,6,4,2,9} - массив после смены. И если максимальных элементов несколько то взять первый из них.
Листинг программы
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include<conio.h>
  4. #include <time.h>
  5. #include <Windows.h>
  6. int main()
  7. {
  8. SetConsoleCP(1251);
  9. SetConsoleOutputCP(1251);
  10. int a[100], buf;
  11. int i, n, max, min, n_max, n_min;
  12. printf("Введите число n:");
  13. scanf_s("%d", &n);
  14. if (n <= 5) {
  15. printf("Массив должен состоять из 6 и больше чисел.\n");
  16. scanf_s("%d", &n);
  17. }
  18. srand(time(NULL));
  19. printf("Массив до смены:\n");
  20. for (i = 0; i<n; i++)
  21. {
  22. a[i] = rand() % 10000;
  23. printf("%d\t", a[i]);
  24. }
  25. printf("\n");
  26. max = a[0];
  27. min = a[0];
  28. for (i = 1; i<n; i++)
  29. {
  30. if (a[i]>max)
  31. {
  32. max = a[i];
  33. n_max = i;
  34. }
  35. if (a[i]<min)
  36. {
  37. min = a[i];
  38. n_min = i;
  39. }
  40.  
  41. }
  42. buf = a[n_max];
  43. a[n_max] = a[n_min];
  44. a[n_min] = buf;
  45. printf("\nМассив после смены:\n");
  46. for (i = 0; i < n; i++)
  47. printf("%d\t", a[i]);
  48. _getch();
  49. }
Дописал правильное условие задачи.
Помогите)
ап!!!

Решение задачи: «Поменять местами последний и максимальный элемент массива»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include<conio.h>
  3. #include <time.h>
  4. #include <Windows.h>
  5. int main()
  6. {
  7.     SetConsoleCP(1251);
  8.     SetConsoleOutputCP(1251);
  9.     int a[100], buf;
  10.     int i, n, max, min, n_max, n_min;
  11.     printf("Введите число n:");
  12.     scanf("%d", &n);
  13.     if (n <= 5) {
  14.         printf("Массив должен состоять из 6 и больше чисел.\n");
  15.         scanf("%d", &n);
  16.     }
  17.     srand(time(NULL));
  18.     printf("Массив до смены:\n");
  19.     for (i = 0; i<n; i++)
  20.     {
  21.         a[i] = rand() % 100;
  22.         printf("%d\t", a[i]);
  23.     }
  24.     printf("\n");
  25.  
  26.     for (i = n-1,max=0; i>=0; i--)
  27.     {
  28.         if (a[i]>max)
  29.         {
  30.             max = a[i];
  31.             n_max = i;
  32.         }
  33.  
  34.  
  35.  
  36.     }
  37.     buf = a[n_max];
  38.     a[n_max] = a[n-1];
  39.     a[n-1] = buf;
  40.     printf("\nМассив после смены:\n");
  41.     for (i = 0; i < n; i++)
  42.     printf("%d\t", a[i]);
  43.     _getch();
  44. }

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

В этом коде:

  1. #include , #include , #include , #include - подключают необходимые библиотеки для работы с консолью, временной зоной, случайными числами и окнами.
  2. int main() - функция main(), с которой начинается любая программа на C.
  3. SetConsoleCP(1251);, SetConsoleOutputCP(1251); - устанавливают кодировку консоли как 1251, чтобы правильно отображать кириллицу.
  4. int a[100], buf; - объявляют массив a размером 100 и переменную buf для временного хранения максимального элемента.
  5. int i, n, max, min, n_max, n_min; - объявляют переменные для цикла, для хранения максимального и минимального индексов и для временного хранения максимального и минимального элементов.
  6. printf(Введите число n:);, scanf(%d, &n); - запрашивают у пользователя число n и сохраняют его в переменную n.
  7. if (n <= 5) {, printf(Массив должен состоять из 6 и больше чисел.\n);, scanf(%d, &n); - если n меньше или равно 5, выводят сообщение об ошибке и запрашивают новое значение n.
  8. srand(time(NULL)); - инициализируют генератор случайных чисел текущим временем.
  9. printf(Массив до смены:\n);, for (i = 0; i < n; i++), a[i] = rand() % 100;, printf(%d\t, a[i]); - выводят сообщение Массив до смены, затем заполняют массив случайными числами от 0 до 99 и выводят каждое число на новой строке.
  10. for (i = n-1,max=0; i>=0; i--) - цикл для поиска максимального элемента, начиная с последнего элемента массива.
  11. if (a[i]>max) - если текущий элемент больше максимального значения, обновляют максимальное значение и запоминают индекс.
  12. buf = a[n_max];, a[n_max] = a[n-1];, a[n-1] = buf; - меняют местами максимальный и последний элементы массива.
  13. printf(\nМассив после смены:\n);, for (i = 0; i < n; i++), printf(%d\t, a[i]); - выводят сообщение Массив после смены, затем выводят все элементы массива.
  14. _getch(); - используют функцию _getch() для приостановки выполнения программы и ожидания нажатия клавиши.

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


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

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

15   голосов , оценка 3.867 из 5

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

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

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