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

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

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

Заданный массив. Поменять местами его первый и минимальный элементы. Если элементов с минимальным значением несколько, взять последний из них.

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define SIZE 11
  5.  
  6. int main ( void )
  7. {
  8.   unsigned char numberArray[SIZE], counter, tempCounter = 0, minValue = 0;
  9.   unsigned char tempVariable = 0;
  10.  
  11.   srand( time( NULL ));
  12.  
  13.   // заполняет массив значениями
  14.   for ( counter = 0; counter < SIZE; ++counter ) {
  15.    
  16.     if ( counter == 0 )
  17.         printf( "%s", "Before: " );
  18.  
  19.     printf( "%3hhu", numberArray[counter] = 1 + rand () % 10 );
  20.   }
  21.  
  22.   minValue = numberArray[0];
  23.  
  24.  
  25.   for ( counter = 1; counter < ( SIZE * 2 ) + 1; ++counter ) {
  26.  
  27.     // ищет мин элемент
  28.     if ( numberArray[counter] < minValue && counter < SIZE ) {
  29.         minValue = numberArray[counter];
  30.         tempCounter = counter;
  31.     }
  32.  
  33.     // если мин элементов больше одного - выбирает последний
  34.     if ( tempCounter > 0 && minValue == numberArray[counter] && counter < SIZE )
  35.         tempCounter = counter;
  36.  
  37.     // если мин элемент совпадает с первым нет смысла продолжать
  38.     if ( counter == SIZE && minValue == numberArray[0] ) {
  39.         puts( "\nImpossible change values" );
  40.         break;
  41.     }
  42.    
  43.     // меняет элементы местами
  44.     if ( counter == SIZE ) {
  45.         printf( "\n%s", "After: " );
  46.         tempVariable = numberArray[0];
  47.         numberArray[0] = numberArray[tempCounter];
  48.         numberArray[tempCounter] = tempVariable;
  49.         tempCounter = 0;
  50.     }
  51.  
  52.     // выводит новый порядок на экран
  53.     if ( counter > SIZE )
  54.         printf( "%3hhu", numberArray[tempCounter++] );
  55.   }
  56.  
  57.   puts( "" );
  58.   return 0;
  59. }

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


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

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

6   голосов , оценка 4.333 из 5

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

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

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