Поменять местами первый и минимальный элементы массива - C (СИ) (70908)
Формулировка задачи:
Заданный массив. Поменять местами его первый и минимальный элементы. Если элементов с минимальным значением несколько, взять последний из них.
Решение задачи: «Поменять местами первый и минимальный элементы массива»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #define SIZE 11
- int main ( void )
- {
- unsigned char numberArray[SIZE], counter, tempCounter = 0, minValue = 0;
- unsigned char tempVariable = 0;
- srand( time( NULL ));
- // заполняет массив значениями
- for ( counter = 0; counter < SIZE; ++counter ) {
- if ( counter == 0 )
- printf( "%s", "Before: " );
- printf( "%3hhu", numberArray[counter] = 1 + rand () % 10 );
- }
- minValue = numberArray[0];
- for ( counter = 1; counter < ( SIZE * 2 ) + 1; ++counter ) {
- // ищет мин элемент
- if ( numberArray[counter] < minValue && counter < SIZE ) {
- minValue = numberArray[counter];
- tempCounter = counter;
- }
- // если мин элементов больше одного - выбирает последний
- if ( tempCounter > 0 && minValue == numberArray[counter] && counter < SIZE )
- tempCounter = counter;
- // если мин элемент совпадает с первым нет смысла продолжать
- if ( counter == SIZE && minValue == numberArray[0] ) {
- puts( "\nImpossible change values" );
- break;
- }
- // меняет элементы местами
- if ( counter == SIZE ) {
- printf( "\n%s", "After: " );
- tempVariable = numberArray[0];
- numberArray[0] = numberArray[tempCounter];
- numberArray[tempCounter] = tempVariable;
- tempCounter = 0;
- }
- // выводит новый порядок на экран
- if ( counter > SIZE )
- printf( "%3hhu", numberArray[tempCounter++] );
- }
- puts( "" );
- return 0;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д