Перестановкой двух цифр числа найти наибольшее. Где ошибка? - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д