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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2014, 20:55   #1
Maxim93m
 
Регистрация: 12.11.2014
Сообщений: 5
По умолчанию Произведение между максимальным и минимальным значениями массива

Добрый вечер!
Подскажите,пожалуйста, почему не считает произведение между максимальным и минимальным значениями массива.
Код:
#include <stdio.h>
#include <conio.h>


int main ()
{
 const int n = 5;
 float mass [n] = {3, 2, 1, 4, -5};
 float sum,sum1;
 int indx;
 float pr;


   	 for(indx=0,sum=0;indx<n;indx++){
   if (mass[indx]<0) { sum+=mass[indx];}}
   	 for(indx=0,sum1=0;indx<n;indx++){ sum1+=mass[indx];}
       for(indx=0;indx<n-1;indx++){
  int imin=indx;
  		 for (int j=indx+1; j<n; j++)
   if( mass[j]<mass[imin]) imin =j;
   float a=mass[indx];
   mass[indx]=mass[imin];
   mass[imin]=a;
  }


      for(indx=1,pr=1;indx<n-1;indx++){ pr*=mass[indx];}

  printf("\nsumma otric = %0.2f\n", sum);
  printf("summa vseh = %0.2f\n", sum1);
  printf("\nV porjadke vozrast:\n");
  for(indx=0;indx<n;indx++){ printf("%0.2f\n", mass[indx]);}
  printf("proizved = %0.2f\n",pr);
 }
Maxim93m вне форума Ответить с цитированием
Старый 19.11.2014, 00:26   #2
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

А так разве не вариант?
Код:
    pr = mass[0] * mass[n - 1];
вместо
Код:
      for(indx=1,pr=1;indx<n-1;indx++){ pr*=mass[indx];}
Или я что-то не так понимаю?

Последний раз редактировалось Lardes; 19.11.2014 в 00:28.
Lardes вне форума Ответить с цитированием
Старый 19.11.2014, 07:37   #3
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

На C++11 эта программа будет короче, проще и надёжнее

Произведение элементов массива между максимальным и минимальным:

Код:
#include <iostream>     // std::cout
#include <algorithm>    // std::min_element std::max_element std::accumulate

int main( )
{
    // Определяем массив
    int myints[] = { 3, 2, 1, 4, -5 };
    const size_t n = sizeof( myints ) / sizeof( myints[0] );

    // Копируем массив в контейнер
    std::vector<int> vec( myints, myints + n );

    // Максимальный элемент
    auto itMax = std::max_element( vec.cbegin(), vec.cend() );

    // Минимальный элемент
    auto itMin = std::min_element( vec.cbegin(), vec.cend() );

    // Вычисляем индексы максимального и минимального элементов
    int indexMax = std::distance( vec.cbegin(), itMax );
    int indexMin = std::distance( vec.cbegin(), itMin );

    // Вычисляем произведение
    int product;
    if ( indexMax < indexMin ) { // Проверка очерёдности max-min
        product = std::accumulate( itMax,
                                   itMin,
                                   1,
                                   [] ( int a, int b ) { return a * b; } );
        std::cout << "Product is " << product << "\n\n";
    } else {
        std::cerr << "Error: the max element must be first." << "\n\n";
    }

    return 0;
}

Последний раз редактировалось 8Observer8; 19.11.2014 в 07:40.
8Observer8 вне форума Ответить с цитированием
Старый 19.11.2014, 18:42   #4
Maxim93m
 
Регистрация: 12.11.2014
Сообщений: 5
По умолчанию

Спасибо всем! Я попробую.
Maxim93m вне форума Ответить с цитированием
Старый 19.11.2014, 19:55   #5
Maxim93m
 
Регистрация: 12.11.2014
Сообщений: 5
По умолчанию

Решил задачу. Всем огромное спасибо!

Последний раз редактировалось Maxim93m; 19.11.2014 в 19:58.
Maxim93m вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами? xEk Помощь студентам 1 09.05.2012 21:20
Посчитать произведение эл-ов массива, расположенных между максимальным и минимальными элементами. Fri Помощь студентам 4 23.10.2011 20:35
Дан массив [3*4]. Определить разницу между максимальным и минимальным значениями. vbchristy46 Помощь студентам 7 15.06.2010 23:29
Разность между максимальным и минимальным значениями StudeHt Помощь студентам 7 23.04.2009 22:26