Дан массив из 10 элементов.
Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами.
Вот что получилось, но выдаёт совершенно другие элементы, чем я ввожу....
#include <STDIO.H>
#define NUM 10
void main()
{
int a[NUM],i;
printf ("Vvedite 10 chelih 4isel :\n" );
for (i = 0; i < NUM; i++)
{
printf ("%d element massiva --> ", i);
scanf ("%d", &a[i]);
}
int min = a[0], max = a[0], i_min = 0, i_max = 0;
for (i=0; i<NUM; i++)
{
if (a[i] < min)
{
min = a[i];
i_min = i;
}
}
for (i=0; i<NUM; i++)
{
if (a[i] > max)
{
max = a[i];
i_max = i;
}
}
int b;
if (i_min < i_max)
{
for ( i = i_min; i <= i_max; i++)
{
b = a[i];
a[i] = a[i_max+1-i];
a[i_max+1-i] = b;
}
}
else {
b = a[i_min];
a[i_min] = a[i_max];
a[i_max] = b;
for ( i = i_min; i <= i_max; i++)
{
b=a[i];
a[i]=a[i_max+1-i];
a[i_max+1-i] = b;
}
}
for (i=0; i<NUM; i++)
printf (" %d", a[i]);
}
printf (" %d", & a[i]); // Здесь ошибка ...
printf (" %d", a[i]);
printf (" %d", & a[i]); // Здесь ошибка ...
printf (" %d", a[i]);
...
// находим индексы мин/макс элементов
int i_min = 0, i_max = 0;
for(i = 0; i < NUM; ++i) {
i_min = (a[i] < a[i_min]) ? i : i_min;
i_max = (a[i] > a[i_max]) ? i : i_max;
}
// и меняем порядок следования элементов между ними
int b;
if(i_min > i_max) {
b = i_min;
i_min = i_max;
i_max = b;
}
int k = 1;
for(i = i_min + 1; i < i_max - k; ++i) {
b = a[i];
a[i] = a[i_max - k];
a[i_max - k++] = b;
}
...