Форум программистов, компьютерный форум CyberForum.ru

произведение элементов массива, расположенных между максимальным и минимальным элементами массива - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Seo-optimist
2 / 2 / 0
Регистрация: 04.12.2009
Сообщений: 95
26.09.2010, 16:42     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #1
Добый день.
Подскажите пожалуйста, что я сдалелал не так.
Задание
произведение элементов массива, расположенных между максимальным и минимальным элементами массива

Почему-то не ищется произведение. Помогите подправить код.
Спасибо.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 // Задание 3
float max=a[0];// обьявление переменой 
float min=a[0];// обьявление переменой
float pr=1;// обьявление переменой
int nommax=0;// обьявление переменой
int nommin=0;// обьявление переменой
    for(I=0;I<10;I++)// массив
     cin>>a[I];// ввод массива
        for(I=0;I<10;I++)
        if(a[I]>max)// находим максимальный элемент.
        {max=a[I]; I=nommax;
        }
        for(I=0;I<10;I++)
        if(a[I]<min)// находим минимальный элемент
        {min=a[I];I=nommin;
        }   
        cout<<"Max element massiva "<<max<<endl;// вывод маскимального элемента
        cout<<"Min element massiva "<<min<<endl;// вывод маскимального элемента
        for(I=nommin;I=nommax;I++)// массив
            pr=pr*a[I];// поиск произведение
            cout<<"Proizvedeniya "<< pr<<endl;// выводим произведение   
        
        
      }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2010, 16:42     произведение элементов массива, расположенных между максимальным и минимальным элементами массива
Посмотрите здесь:

Произведение элементов массива, расположенных между максимальным и минимальным элементами C++
C++ Произведение элементов массива, расположенных между максимальным и минимальным элементами массива
Произведение элементов массива, расположенных между максимальным и минимальным элементами C++
C++ произведение элементов массива, расположенных между максимальным и минимальным элементами.
C++ Произведение элементов массива, расположенных между максимальным и минимальным элементами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
26.09.2010, 16:45     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 // Задание 3
#include <iostream>
 
using namespace std;
 
int main()
{
    float*a;
    a=new float[10];
        for(int I=0;I<10;I++)// массив
         cin>>a[I];// ввод массива
        float max=a[0];// обьявление переменой 
float min=a[0];// обьявление переменой
float pr=1;// обьявление переменой
int nommax=0;// обьявление переменой
int nommin=0;// обьявление переменой
                for(int I=0;I<10;I++)
                if(a[I]>max)// находим максимальный элемент.
                {max=a[I]; nommax=I;;
                }
                for(int I=0;I<10;I++)
                if(a[I]<min)// находим минимальный элемент
                {min=a[I];nommin=I;
                }       
                cout<<"Max element massiva "<<max<<endl;// вывод маскимального элемента
                cout<<"Min element massiva "<<min<<endl;// вывод маскимального элемента
                for(int I=nommin+1;I<nommax;I++)// массив
                        pr=pr*a[I];// поиск произведение
                        cout<<"Proizvedeniya "<< pr<<endl;// выводим произведение       
                
                
          }
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
26.09.2010, 17:03     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #3
Тебе надо вначале функции Main() объявить массив :
C++
1
2
int const n = 10;
double a[n];
потом заполнить его:
C++
1
2
for(int i = 0;i < n;i++)
cin >> a[i];
Seo-optimist
2 / 2 / 0
Регистрация: 04.12.2009
Сообщений: 95
26.09.2010, 17:18  [ТС]     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #4
Ребята, вот сейчас такой вид программа имеет и все равно не работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Задание 1
 #include "iostream.h"
 #include "math.h"
    float a[10]; //обьявление массива
    int I;// обьявление переменой
    bool t=false;// обьявление переменой
      void main()
      {
 
        float*a;// обьявляем константу
        a=new float[10];
        for(int I=0;I<10;I++)// массив
         cin>>a[I];// ввод массива
                float max=a[0];// обьявление переменой 
float min=a[0];// обьявление переменой
float pr=1;// обьявление переменой
int nommax=0;// обьявление переменой
int nommin=0;// обьявление переменой
                for( I=0;I<10;I++)
                if(a[I]>max)// находим максимальный элемент.
                {max=a[I]; nommax=I;;
                }
                for(I=0;I<10;I++)
                if(a[I]<min)// находим минимальный элемент
                {min=a[I];nommin=I;
                }       
                cout<<"Max element massiva "<<max<<endl;// вывод маскимального элемента
                cout<<"Min element massiva "<<min<<endl;// вывод маскимального элемента
                for(I=nommin+1;I<nommax;I++)// массив
                        pr=pr*a[I];// поиск произведение
                        cout<<"Proizvedeniya "<< pr<<endl;// выводим произведение       
                
                
          }
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
26.09.2010, 17:21     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #5
Работает

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Задание 1
 #include <iostream>
 #include <cmath>
 
using namespace std;
      int main()
          {
                    float a[10]; //обьявление массива
    int I;// обьявление переменой
        bool t=false;// обьявление переменой 
        for(int I=0;I<10;I++)// массив
         cin>>a[I];// ввод массива
                float max=a[0];// обьявление переменой 
float min=a[0];// обьявление переменой
float pr=1;// обьявление переменой
int nommax=0;// обьявление переменой
int nommin=0;// обьявление переменой
                for( I=0;I<10;I++)
                if(a[I]>max)// находим максимальный элемент.
                {max=a[I]; nommax=I;;
                }
                for(I=0;I<10;I++)
                if(a[I]<min)// находим минимальный элемент
                {min=a[I];nommin=I;
                }       
                cout<<"Max element massiva "<<max<<endl;// вывод маскимального элемента
                cout<<"Min element massiva "<<min<<endl;// вывод маскимального элемента
                for(I=nommin+1;I<nommax;I++)// массив
                        pr=pr*a[I];// поиск произведение
                        cout<<"Proizvedeniya "<< pr<<endl;// выводим произведение       
                
                
          }
Seo-optimist
2 / 2 / 0
Регистрация: 04.12.2009
Сообщений: 95
26.09.2010, 17:22  [ТС]     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #6
аа... Да, прошу прощение. Спасибо!
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
26.09.2010, 17:49     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #7
Вот так работает, но только если минимальный элемент стоит раньше максимального
Я попробовал код Lavroffа вроде там результаты неверные, а свой уже стер.Так что переписывать пришлось

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
using namespace std;
      int main()
          {
              int const n = 10; // размер массива.
                  float a[n]; // массив.
              for(int i = 0;i < n;i++)
                  cin >> a[i]; // заполняем массив.
              float min = a[0];
              float max = a[0];
              float pr = 1;
int Ind_Min, Ind_Max; // индексы минимального и максимального элементов в массиве.
for(int i = 0;i < n;i++)// находим минимальный элемент
if(a[i] < min){
    min = a[i]; Ind_Min = i;
}
for(int i = 0;i < n;i++) // находим максимальный элемент
if(a[i] > max){
    max = a[i]; Ind_Max = i;
}
for(int i = Ind_Min;i <= Ind_Max;i++)
pr *= a[i];
 
cout << pr << endl;
 
                               
            system("pause");    
          }
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
26.09.2010, 17:56     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #8
NikolaWhite, Как эт неправильные?

Вводил

1
2
3
10
4
3
5
4
3
2

Выводит 6. Что верно.
А твой кстати неверен)
Между мин и макс это значит не включая минимума и максимума.
nickraz
1 / 1 / 0
Регистрация: 21.02.2010
Сообщений: 79
12.10.2010, 21:05     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #9
Lavroff, ты не понял.
если минимальный будет стоять после максимального, то он просто покажет в ответе 1
в с++ я лол, поэтому могу показать реализацию на С# (MaxN - индекс максимального, MinN - минимального, n - кол-во элементов массива)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
            if (MaxN > MinN)
            {
                for (int i = MinN + 1; i < MaxN; i++)
                {
                    proizv *= massiv[i];
                }
                Console.Write("\nПроизведение: {0}", proizv);
            }
            if (MinN > MaxN)
            {
                for (int i = MaxN+1; i <MinN; i++)
                {
                    proizv *= massiv[i];
                }
                Console.Write("\nПроизведение: {0}", proizv);
            }
Seo-optimist
2 / 2 / 0
Регистрация: 04.12.2009
Сообщений: 95
21.10.2010, 18:48  [ТС]     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #10
Ребята, сегодня пошел сдавать задачу, но вот беда, не приняли сказали, исправить, что бы правильно считало если минимальный элемент стоит раньше максимального, и если максимальный элемент и минимальный элемент стоит рядом, вывести сообщение, что мол нечего считать. Прошу помочь подправить именно мой код. Спасибо.

Добавлено через 34 минуты
помогите.... завтра сдавать((((
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
23.10.2010, 12:24     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #11
Так???
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    int n,i;
    float max,imax,min,imin,p=1;
    cout<<"  n="; cin>>n;
    float *a=new float[n];
    cout<<"  Enter elements: ";
    for(i=0;i<n;i++) cin>>a[i]; 
    max=a[0]; imax=0;
    min=a[0]; imin=0;
    for(i=1;i<n;i++) 
    {
        if(a[i]>max) { max=a[i]; imax=i; }
        if(a[i]<min) { min=a[i]; imin=i; }
    }
    cout<<"\n\n  max="<<max;
    cout<<"\n  min="<<min;
    if(imax>imin)    
    {
        for(i=imin+1;i<imax;i++) p*=a[i]; 
        cout<<"\n  Pro="<<p;
    }
    if(imax<=imin-1) cout<<"\n  i_max<=i_min-1";
    delete []a;
    getch();
    return 0;
}
Seo-optimist
2 / 2 / 0
Регистрация: 04.12.2009
Сообщений: 95
23.10.2010, 12:33  [ТС]     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/ Г‡Г*Г¤Г*Г*ГЁГҐ 2
 
 float*a;// îáüÿâëÿåì ГЄГ®Г*Г±ГІГ*Г*ГІГі
    a=new float[5];
 cout<<"Vvedite massiv";
for(int I=0;I<5;I++)// Г¬Г*Г±Г±ГЁГў
 cin>>a[I];// ââîä Г¬Г*Г±Г±ГЁГўГ*
    float max=a[0];// îáüÿâëåГ*ГЁГҐ ïåðåìåГ*îé 
    float min=a[0];// îáüÿâëåГ*ГЁГҐ ïåðåìåГ*îé
    float pr=1;// îáüÿâëåГ*ГЁГҐ ïåðåìåГ*îé
    int nommax=0;// îáüÿâëåГ*ГЁГҐ ïåðåìåГ*îé
    int nommin=0;// îáüÿâëåГ*ГЁГҐ ïåðåìåГ*îé
 for( I=0;I<5;I++)
    if(a[I]>max)// Г*Г*õîäèì Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*ûé ýëåìåГ*ГІ.
    {max=a[I]; 
     nommax=I;
    }
 for(I=0;I<5;I++)
    if(a[I]<min)// Г*Г*õîäèì ìèГ*ГЁГ¬Г*ëüГ*ûé ýëåìåГ*ГІ
    {min=a[I];nommin=I;
    }       
    cout<<"Max element massiva "<<max<<endl;// âûâîä Г¬Г*Г±ГЄГЁГ¬Г*ëüГ*îãî ýëåìåГ*ГІГ*
    cout<<"Min element massiva "<<min<<endl;// âûâîä Г¬Г*Г±ГЄГЁГ¬Г*ëüГ*îãî ýëåìåГ*ГІГ*
 if(nommax>nommin)
 {
    for(I=nommin+1;I<nommax;I++)// Г¬Г*Г±Г±ГЁГў
        pr=pr*a[I];// ïîèñê ïðîèçâåäåГ*ГЁГҐ
 }
    cout<<"Proizvedeniya "<< pr<<endl;// âûâîäèì ïðîèçâåäåГ*ГЁГҐ       
 
              
                
         }
comrade-, вот мой код, подправил под ваш, но не правильно считает если максимум стоит перед минимумом, а есил сначала миниум потом максимум то все верно. Помогите плиз...
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
23.10.2010, 12:57     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #13
тогда добавляйте еще:
C++
1
2
3
4
5
6
if(imax<imin)    
    {
        for(i=imax+1;i<imin;i++) p*=a[i]; 
        cout<<"\n  Pro="<<p;
    }
if(imax==imin-1 || imax==imin || imax==imin+1) cout<<"\n  не возможно посчитать";
Добавлено через 1 минуту
Seo-optimist,
C++
1
2
3
4
5
6
7
8
9
for( I=0;I<5;I++)
        if(a[I]>max)// находим максимальный элемент.
    {max=a[I]; 
         nommax=I;
        }
 for(I=0;I<5;I++)
        if(a[I]<min)// находим минимальный элемент
    {min=a[I];nommin=I;
    }
Это можно в одном цикле сделать
Seo-optimist
2 / 2 / 0
Регистрация: 04.12.2009
Сообщений: 95
23.10.2010, 13:09  [ТС]     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #14
-comrade- , большое спасибо, очень выручили...
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
23.10.2010, 14:10     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #15
Seo-optimist, решение с помощью boost::lambda:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <algorithm>
#include <iostream>
#include <numeric>
#include <cstddef>
#include <boost/lambda/lambda.hpp>
 
int main() {
  const int         arr[] = { 3, 9, 5, 4, 5, 2 };
  const std::size_t size  = sizeof(arr) / sizeof(arr[0]);
  
  const int* min = std::min_element(arr, arr + size);
  const int* max = std::max_element(arr, arr + size);
  
  if (min > max)
    std::swap(min, max);
    
  std::cout << std::accumulate(min, max, 1, boost::lambda::_1 *= boost::lambda::_2) << std::endl;
 
  return 0;
}
Результат: http://liveworkspace.org/code/f2d526...9b03299cdc75c9
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2011, 22:40     произведение элементов массива, расположенных между максимальным и минимальным элементами массива
Еще ссылки по теме:

C++ Произведение элементов массива, расположенных между максимальным и минимальным элементами
Произведение элементов массива, расположенных между максимальным и минимальным элементами C++
Произведение отрицательных элементов массива, расположенных между минимальным и максимальным элементами C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
sundayfunday
0 / 0 / 0
Регистрация: 30.01.2011
Сообщений: 7
30.01.2011, 22:40     произведение элементов массива, расположенных между максимальным и минимальным элементами массива #16
сорри за ап темы, но решал задачу, в поисковике вышел на эту ссылку, может кто то так же будет искать, я вот так решил
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
using namespace std;
int main (){
const int n=10;
 
int b[n],i,imin=0,imax=0,pro(1);
puts("vvedite massive");
for (i=0;i<n;i++) cin>>b[i];
 
 
int min=b[0],max=b[0];
for (i=0;i<n;i++) {
if (b[i]>max){  max=b[i],imax=i;}
if (b[i]<min){  min=b[i],imin=i;}
}
cout<<"Max element massiva "<<max<<endl;
cout<<"Min element massiva "<<min<<endl;
 
 
if(imin>imax)
{
    for (i=imin-1;i>imax;i--) //  swap(imin,imax);   как второй вариант при этом условии
                                    //   for(i=imin+1;i<imax;i++)
      pro*=b[i];
}
else 
for(i=imin+1;i<imax;i++)
{
    pro*=b[i];
}
 
cout<<"proizvedenie "<<pro<<'\n'<<endl;
 
 
system("pause");
return 0;
}
Yandex
Объявления
30.01.2011, 22:40     произведение элементов массива, расположенных между максимальным и минимальным элементами массива
Ответ Создать тему
Опции темы

Текущее время: 21:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru