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

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

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

Доброй ночи. Проблема описана в комментарии в конце кода. Как поменять местами первый элемент в массиве и пятый? Спасибо.
Листинг программы
  1. #include <stdio.h>
  2. // из интервала [0; 2147483647] то есть integer
  3. // описываю функцию по нахождению наибольшего числа в массиве
  4. int maximumValue(int *A, int b) {
  5. int i;
  6. int max;
  7. max = A[0];
  8. for(i = 1; i < b; i++) {
  9. if (A[i] > max) {
  10. max = A[i];
  11. }
  12. }
  13. return max;
  14. }
  15. // описываю функцию по нахождению индекса того самого наибольшего числа
  16. int maximumValueIndex(int *A, int b) {
  17. int i;
  18. int max, index;
  19. max = A[0];
  20. index = 0;
  21. for(i = 0; i < b; i++) {
  22. if (A[i] >= max) {
  23. max = A[i];
  24. index = i;
  25. }
  26. }
  27. return index;
  28. }
  29. int main() {
  30. int i, c, index, maxValue, temp;
  31. int j;
  32. int B[] = {1, 2, 4, 4, 6, 6, 1, 3, 5};
  33.  
  34. maxValue = maximumValue(B, 9);
  35. printf("MAX chislo: %d\n", maxValue);
  36. printf("Index MAX chisla: %d\n", maximumValueIndex(B, 9));
  37. // вывожу массив
  38. for(i = 0; i < 9; i++) {
  39. printf("%d ", B[i]);
  40. }
  41. printf("\n");
  42. // И вот тут загвоздка. Как поменять местами первый элемент в массиве и пятый?
  43. for(j = 0; j < 9; j++) {
  44. if (B[j] < maxValue) {
  45. temp = B[j];
  46. B[j] = maxValue;
  47. maxValue = B[5];
  48. break;
  49. }
  50. printf("%d ", B[j]);
  51. }
  52. return 0;
  53. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. /* можно найти индекс и значение сразу */
  4. void maxValIndex(const int *array, int size, int *val, int *index)
  5. {
  6.     int i;
  7.     *val = array[0];
  8.  
  9.     for (i = 0; i < (size / sizeof(int)); i++)
  10.     {
  11.         if (*val < array[i])
  12.         {
  13.             *val = array[i];
  14.             *index = i;
  15.         }
  16.     }
  17. }
  18.  
  19. /* поменять местами 2 элемента */
  20. void swap(int *array, int first, int second)
  21. {
  22.     int temp = array[first];
  23.     array[first] = array[second];
  24.     array[second] = temp;
  25. }
  26.  
  27. /* напечатать массив */
  28. void printarray(const int *array, int size)
  29. {
  30.     int i;
  31.  
  32.     for(i = 0; i < (size / sizeof(int)) ; i++)
  33.         printf("%d ", array[i]);
  34.  
  35.     printf("\n");
  36. }
  37.  
  38. int main() {
  39.     int maxIndex, maxValue;
  40.     int B[] = {1, 2, 4, 4, 6, 6, 1, 3, 5};
  41.  
  42.     maxValIndex(B, sizeof(B), &maxValue, &maxIndex);
  43.  
  44.     printf("MAX chislo: %d\n", maxValue);
  45.     printf("Index MAX chisla: %d\n", maxIndex);
  46.  
  47.     printarray(B, sizeof(B));
  48.  
  49.     swap(B, 0, 5); /* меняем местами 0 <-> 5 */
  50.  
  51.     printarray(B, sizeof(B));
  52.  
  53.     return 0;
  54. }

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


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

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

11   голосов , оценка 4.182 из 5

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

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

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