Перестановкой двух цифр числа найти наибольшее. Где ошибка? - C (СИ)

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

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

Доброй ночи. Проблема описана в комментарии в конце кода. Как поменять местами первый элемент в массиве и пятый? Спасибо.
#include <stdio.h>
// из интервала [0; 2147483647] то есть integer
// описываю функцию по нахождению наибольшего числа в массиве
int maximumValue(int *A, int b) {
    int i;
    int max;
        max = A[0];
        for(i = 1; i < b; i++) {
            if (A[i] > max) {
                max = A[i];
            }
        }
return max;
}
// описываю функцию по нахождению индекса того самого наибольшего числа
int maximumValueIndex(int *A, int b) {
    int i;
    int max, index;
        max = A[0];
        index = 0;
        for(i = 0; i < b; i++) {
            if (A[i] >= max) {
                max = A[i];
                index = i;
            }
        }
return index;
}
 
int main() {
    int i, c, index, maxValue, temp;
    int j;
    int B[] = {1, 2, 4, 4, 6, 6, 1, 3, 5};

    maxValue = maximumValue(B, 9);
    printf("MAX chislo: %d\n", maxValue);
    printf("Index MAX chisla: %d\n", maximumValueIndex(B, 9));
 
// вывожу массив    
    for(i = 0; i < 9; i++) {
        printf("%d ", B[i]);
    }
    printf("\n");
 
// И вот тут загвоздка. Как поменять местами первый элемент в массиве и пятый? 
 
    for(j = 0; j < 9; j++) {
        if (B[j] < maxValue) {
            temp = B[j];
            B[j] = maxValue;
            maxValue = B[5];
            break;
        }
            printf("%d ", B[j]);
    }
return 0;
}

Решение задачи: «Перестановкой двух цифр числа найти наибольшее. Где ошибка?»

textual
Листинг программы
#include <stdio.h>
 
/* можно найти индекс и значение сразу */
void maxValIndex(const int *array, int size, int *val, int *index)
{
    int i;
    *val = array[0];
 
    for (i = 0; i < (size / sizeof(int)); i++)
    {
        if (*val < array[i])
        {
            *val = array[i];
            *index = i;
        }
    }
}
 
/* поменять местами 2 элемента */
void swap(int *array, int first, int second)
{
    int temp = array[first];
    array[first] = array[second];
    array[second] = temp;
}
 
/* напечатать массив */
void printarray(const int *array, int size)
{
    int i;
 
    for(i = 0; i < (size / sizeof(int)) ; i++)
        printf("%d ", array[i]);
 
    printf("\n");
}
 
int main() {
    int maxIndex, maxValue;
    int B[] = {1, 2, 4, 4, 6, 6, 1, 3, 5};
 
    maxValIndex(B, sizeof(B), &maxValue, &maxIndex);
 
    printf("MAX chislo: %d\n", maxValue);
    printf("Index MAX chisla: %d\n", maxIndex);
 
    printarray(B, sizeof(B));
 
    swap(B, 0, 5); /* меняем местами 0 <-> 5 */
 
    printarray(B, sizeof(B));
 
    return 0;
}

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


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

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

11   голосов , оценка 4.182 из 5
Похожие ответы