06.11.2011, 18:05 | #1 (permalink) |
Новичок
Регистрация: 06.11.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите разобраться с С++
только только знакомлюсь с языком С++(пошла на программиста). как можно вывести минимальный элемент среди элементов с нечетным индексом и максимальный среди элементов с четным |
06.11.2011, 18:05 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Пожалуйста, не делайте поспешный действий, лучше ознакомьтесь с похожими топиками Помогите разобраться Помогите разобраться |
06.11.2011, 18:25 | #2 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
как вариант, анализируйте на четность/нечетность счетчик цикла, который обычно используется как индекс при обращении к элементам массива. Если нечетный - сравнивайте текущий элемент и предыдущий минимальный, если четный - сравнивайте текущий элемент и предыдущий максимальный. Естественно, результат сравнения должен привести либо к изменению значения минимального/максимального элемента, либо они должны остаться неизменными.
Определить четное или нечетное значение индекса можно обычным целочисленным делением, если остаток от деления на 2 равен 0, то элемент имеет четный индекс, иначе - нечетный. |
06.11.2011, 18:34 | #3 (permalink) |
Новичок
Регистрация: 06.11.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
"если остаток от деления на 2 равен 0, то элемент имеет четный индекс, иначе - нечетный."
это я знаю..но не могу понять как это будет выглядеть на С++ какие операнты? в библиотеке не могу найти |
06.11.2011, 18:59 | #5 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Вот алгоритм решения:
Код:
алг нач цел n n:=10 вещтаб a[0:n] цел i вещ maxa, mina нц для i от 0 до n a[i]:=rnd(50) вывод a[i],' ' кц maxa:=a[0] mina:=a[1] нц для i от 2 до n если mod(i,2)=0 то если a[i]<mina то mina:=a[i] все иначе если a[i]>maxa то maxa:=a[i] все все кц вывод 'min=',mina,' ' вывод 'max=',maxa кон |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
08.11.2011, 14:55 | #6 (permalink) |
Студент БГПУ
Регистрация: 06.02.2010
Сообщений: 420
Записей в дневнике: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 470
|
А вот и код, если это еще актуально
Код:
#include <iostream> #include <stdlib.h> #include <time.h> using namespace std; int main () { srand(time(NULL)); int n=10,i; float a[n],maxa,mina; for (int i=0; i<=n; i++) { a[i]=rand()%50; cout<<a[i]<<" "; } maxa=a[1]; mina=a[0]; for (i=0; i<=n;i++) { if (i%2==0) if (a[i]<mina) mina=a[i]; if (a[i]>maxa) maxa=a[i]; } cout<<"\nmaximal \t"<<maxa<<endl;; cout<<"minimal \t"<<mina<<endl;; system ("pause"); } |
13.11.2011, 04:33 | #8 (permalink) |
Banned
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
|
Код переносимый между компиляторами. И отвратный.
Решение на Паскале, переведенном ПРОМТОМ такое же отвратное, так как использует совершенно не нужную проверку на четность, а так же совершенно лишнее начало проверки с 0 элемента массива. Более элегантное решение: Код:
const int msz=100500; cmax=a[0]; cmin=a[1]; for(int i=2;i<msz;i+=2) { if(cmax<a[i]) { cmax=a[i]; } } for(int i=3;i<msz;i+=2) { if(cmin>a[i]) { cmin=a[i]; } } |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Метки |
программирование, с++ |
|
|