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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Seo-optimist
2 / 2 / 0
Регистрация: 04.12.2009
Сообщений: 95
#1

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

26.09.2010, 16:42. Просмотров 1836. Ответов 15
Метки нет (Все метки)

Добый день.
Подскажите пожалуйста, что я сдалелал не так.
Задание
произведение элементов массива, расположенных между максимальным и минимальным элементами массива

Почему-то не ищется произведение. Помогите подправить код.
Спасибо.
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;// выводим произведение   
        
        
      }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2010, 16:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Произведение элементов массива, расположенных между максимумом и минимумом (C++):

Найти сумму элементов массива между максимумом и минимумом - C++
Дан одномерный массив. Найти сумму элементов между максимумом и минимумом

Количество элементов между минимумом и максимумом - C++
Пожалуйста помогите вот с этой задачей!!! Написать программу, которая для целочисленной матрицы 10х20 определяет среднее...

Найти разницу между максимумом и минимумом в каждой строке массива - C++
Дана действительная матрица размером n*m. Определить числа {b}_{0}, ... , {b}_{n-1}, равные соответственно разностям наибольших и...

Найти сумму отрицательных элементов между максимумом и минимумом в массиве - C++
Добрый вечер, у меня вот было задано задание сделать подпрограмму для задачи, в которой сначала надо было найти сумму отрицательных...

Найти сумму отрицательных элементов между максимумом и минимумом в массиве - C++
Создать функцию, вычисляемую сумму отрицательных элементов одномерного массива, расположенных между его максимум и минимум. Использовать...

Найти сумму между максимумом и минимумом в массиве. - C++
Найти сумму между максимумом и минимумом в массиве. Подскажите пожалуйста, почему выдает не правильный ответ? Как исправить???? Пишу...

15
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 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;// выводим произведение       
                
                
          }
1
TheMachinist
243 / 175 / 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];
1
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;// выводим произведение       
                
                
          }
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 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;// выводим произведение       
                
                
          }
1
Seo-optimist
2 / 2 / 0
Регистрация: 04.12.2009
Сообщений: 95
26.09.2010, 17:22  [ТС] #6
аа... Да, прошу прощение. Спасибо!
0
TheMachinist
243 / 175 / 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");    
          }
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
26.09.2010, 17:56 #8
NikolaWhite, Как эт неправильные?

Вводил

1
2
3
10
4
3
5
4
3
2

Выводит 6. Что верно.
А твой кстати неверен)
Между мин и макс это значит не включая минимума и максимума.
0
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);
            }
0
Seo-optimist
2 / 2 / 0
Регистрация: 04.12.2009
Сообщений: 95
21.10.2010, 18:48  [ТС] #10
Ребята, сегодня пошел сдавать задачу, но вот беда, не приняли сказали, исправить, что бы правильно считало если минимальный элемент стоит раньше максимального, и если максимальный элемент и минимальный элемент стоит рядом, вывести сообщение, что мол нечего считать. Прошу помочь подправить именно мой код. Спасибо.

Добавлено через 34 минуты
помогите.... завтра сдавать((((
0
-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;
}
1
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-, вот мой код, подправил под ваш, но не правильно считает если максимум стоит перед минимумом, а есил сначала миниум потом максимум то все верно. Помогите плиз...
0
-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;
    }
Это можно в одном цикле сделать
1
Seo-optimist
2 / 2 / 0
Регистрация: 04.12.2009
Сообщений: 95
23.10.2010, 13:09  [ТС] #14
-comrade- , большое спасибо, очень выручили...
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 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
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2010, 14:10
Привет! Вот еще темы с ответами:

В одномерном массиве, состоящем из n целых элементов, 1) номер максимального элемента массива; 2) произведение элементов массива, расположенных между - C++
Помогите исправить программу Задание: В одномерном массиве, состоящем из n целых элементов, 1) номер максимального элемента...

Произведение элементов массива, расположенных между максимальным и минимальным элементами массива - C++
Здравствуйте,нужна помощь,в общем на лаб. по программированию сейчас идут задачи с массивом,в связи с нехваткой знаний обращаюсь к вам за...

Произведение элементов массива расположенных между двумя первыми нулевыми элементами массива - C++
Помогите доработать пожалуйста, последний этап не могу сообразить. #include #include #include #include using std::cout;...

Вычислить сумму отрицательных элементов массива и произведение элементов, расположенных между максимальным и минимальным элементами - C++
Помогите пожалуйста в одномерном массиве, состоящих из вещественных элементов вычислить: 1)сумму отрицательных элементов массива ...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
23.10.2010, 14:10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru