Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2010, 16:02   #1
lutuygrey1
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 30
По умолчанию cu/cu++

массиве а[10] поменять max и min элементы.
вывести исходный и результирующий массивы.
#include<stdio.h>
#define n 10
int main(void)
{int i, max, min,b;
int a[n];
printf("\nvvedite %d chisel:\n",n);
for(i=0; i<n; i++)
scanf("%d", a+i);
for(i=0; i<n; i++)
if (a[i]>max)
{max=a[i];
printf("\n maximalnuy element massiva %d\n",max);
}
for(i=0; i<n; i++)
if(a[i]<min)
{min=a[i];
printf("\nminimalnuy element massiva %d\n",min);
}
for(i=0; i<n; i++)
if (max>min)
{max=b;
min=max;
b=min;
}
printf("\n resultiruuchii massiv\n");
for(i=0; i<n; i++)
printf("%d ", a[i]);
return 0;
}
если может укажите на места с ошибками или как их исправить..
lutuygrey1 вне форума Ответить с цитированием
Старый 15.05.2010, 18:31   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

min и max не инициализированы перед циклами, в них может быть что угодно.
Цитата:
Код:
for(i=0; i<n; i++)
  if (max>min)
  {
    max=b;
    min=max;
    b=min;
  }
Это то же, что и
Код:
b = min = max = b;
Ни на какие мысли не наводит? К тому же, чего ты хотел добиться, поместив это в цикл.
Somebody вне форума Ответить с цитированием
Старый 15.05.2010, 22:07   #3
lutuygrey1
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 30
По умолчанию

а как тогда лучше написать ? объявить переменные max и min =1?
lutuygrey1 вне форума Ответить с цитированием
Старый 15.05.2010, 22:33   #4
miftayka
Пользователь
 
Регистрация: 09.05.2010
Сообщений: 17
По умолчанию

переменным max и min до циклов их нахождения присвоить значения первого элемента, чтобы было с чем сравнивать. Тогда цикл можно начинать с i=1, но работать будет и так.
А вот
Код:
printf("\n maximalnuy element massiva %d\n",max);
(и для min) надо написать после цикла - сначала ищем мах и мин значения (в циклах) и только потом выводим. Иначе, например если массив = 6, 5, 3, 7, 4, 2, то в цикле для минимума выведутся строки, что мин элемент есть 6, потом 5, потом 3 и 2.
Чтобы поменять их местами надо еще хранить индексы, в которых хранятся эти самые минимальное и максимальное - их же в массиве надо изменить, а не в переменных min и max.
Чтобы поменять значения переменных a и b: t=a; a=b; b=t;
плюс нужно что-то сделать со случаем, когда несколько мин. и макс. значений.
miftayka вне форума Ответить с цитированием
Старый 15.05.2010, 22:53   #5
lutuygrey1
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 30
По умолчанию

#include<stdio.h>
#define n 10
int main(void)
{int i, max, min,b;
int a[n];
printf("\nvvedite %d chisel:\n",n);
for(i=0; i<n; i++)
scanf("%d", a+i);
for(i=0; i<n; i++)
if (a[i]>max)
{max=a[i];
printf("\n maximalnuy element massiva %d\n",max);
}
min=a[1];
for(i=0; i<n; i++)
if(a[i]<min)
{min=a[i];
printf("\nminimalnuy element massiva %d\n",min);
}
max=a[1];
for(i=0; i<n; i++)
if (max>min)
{max=b;
min=max;
b=min;
}
printf("\n resultiruuchii massiv\n");
for(i=0; i<n; i++)
printf("%d ", a[i]);
return 0;
}
вот так? только максимаьлный элемент всё равно не ищет и перестановка не происходит..
lutuygrey1 вне форума Ответить с цитированием
Старый 16.05.2010, 00:42   #6
Bearw08
Boom-boom)
Форумчанин
 
Аватар для Bearw08
 
Регистрация: 02.02.2009
Сообщений: 500
По умолчанию

Код:

   int n = 0;
   vector<int>v;
   cout << "Input size of array: " << endl;
   cin >> n;
   v.resize(n);
    for (int i = 0; i < n; i++)
    {
        cout << "Input " << i+1 << " element " <<endl;
         cin >> v[i];
    }

     cout << endl << "Array before : " << endl;
     for(vector<int>::iterator it = v.begin(); it != v.end(); ++it)
        cout << *it << " ";


     cout << endl << "The smallest element is " << *min_element(v.begin(),v.end()) << endl;
     cout << "The largest element is " << *max_element(v.begin(),v.end()) << endl;

     swap(*min_element(v.begin(),v.end()), *max_element(v.begin(),v.end()));

     cout << endl << "Array after : " << endl;

     for(vector<int>::iterator it = v.begin(); it != v.end(); ++it)
        cout << *it << " ";
¡ʁɔvʎнdǝʚǝdǝu dиw
Bearw08 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск