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