IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Обратный порядок, Си
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Дан массив из 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]);

}



????

Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 3)
сообщение
Сообщение #2


Гость






  printf (" %d",  & a[i]); // Здесь ошибка ...


Ты получается выводишь не сами элементы, а их адреса? Вот так будет лучше:
  printf (" %d",  a[i]);
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(Алена @ 22.03.2007 14:11) *

  printf (" %d",  & a[i]); // Здесь ошибка ...


Ты получается выводишь не сами элементы, а их адреса? Вот так будет лучше:
  printf (" %d",  a[i]);


ой, точно! спасибо!

но теперь выяснилось, что переставляется совсем не то, что нужно....
сново не пойму в чём дело...

Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






...
// находим индексы мин/макс элементов
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;
}
...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.10.2020 16:52
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name