• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите разобраться с С++

  • Автор темы Автор темы smthelse
  • Дата начала Дата начала

smthelse

Ученик
Регистрация
6 Ноя 2011
Сообщения
3
Реакции
0
Баллы
0
Помогите разобраться с С++

"Дан одномерный массив из N действительных случайных чисел в диапазоне от 1 до 50. Найти минимальный элемент среди элементов с нечетным индексом и максимальный среди элементов с четным."

только только знакомлюсь с языком С++(пошла на программиста). как можно вывести минимальный элемент среди элементов с нечетным индексом и максимальный среди элементов с четным
 
как вариант, анализируйте на четность/нечетность счетчик цикла, который обычно используется как индекс при обращении к элементам массива. Если нечетный - сравнивайте текущий элемент и предыдущий минимальный, если четный - сравнивайте текущий элемент и предыдущий максимальный. Естественно, результат сравнения должен привести либо к изменению значения минимального/максимального элемента, либо они должны остаться неизменными.
Определить четное или нечетное значение индекса можно обычным целочисленным делением, если остаток от деления на 2 равен 0, то элемент имеет четный индекс, иначе - нечетный.
 
"если остаток от деления на 2 равен 0, то элемент имеет четный индекс, иначе - нечетный."
это я знаю..но не могу понять как это будет выглядеть на С++
какие операнты? в библиотеке не могу найти:(
 
% - остаток от деления.

a=i%2;

Переменной а будет присвоен остаток от деления пременной i на число 2.
 
Вот алгоритм решения:
Код:
алг 
нач
  цел 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
 кон
А уж в C++ вы это решение сами преобразуйте :))
 
А вот и код, если это еще актуально
Код:
#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");
}
 
shrek, спасибо,вы используете BCB?
просто нам,студентам,говорят работать в вижуал с++..
 
Код переносимый между компиляторами. И отвратный.
Решение на Паскале, переведенном ПРОМТОМ такое же отвратное, так как использует совершенно не нужную проверку на четность, а так же совершенно лишнее начало проверки с 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];
     }
  }
Работает гораздо быстрее, читается в разы удобнее.
 
Назад
Сверху