Перестановкой двух цифр числа найти наибольшее. Где ошибка? - 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;
}