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

Доработать программу - C++

Восстановить пароль Регистрация
 
StrikS
0 / 0 / 0
Регистрация: 18.05.2012
Сообщений: 13
27.05.2012, 14:18     Доработать программу #1
Задание:
1)сумма положительных элементов (сделано)
2)В одномерном массиве, состоящем из n вещественных элементов вычислить произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.
Проблема в том что произведение считает не правильно, а ошибку вычислить не могу, хоть и знаю где примерно искать =/
Я бы потупил подольше, но надо ещё 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <windows.h>
#include <cfloat>
using namespace std;
int main(){
const int m=10; // размер массива
double a[m]; 
int n; // число элементов
int p=1;
int i_max=0, i_min=0; //индексы минимума и максимума
SetConsoleOutputCP(1251);
do{
    cout << "Введите число элементов"
        "(не больше " << m << ") = ";
    cin >> n;
}while(n > m); // пока не будет введено правильное значение
//double *a=new double[n]; //создан динамич массив
double sum = 0.0; // сумма элементов
double max = -DBL_MAX, min = DBL_MAX;
for (int i=0; i<n; i++)
    
    {
        cout << "введите элемент [" << i << "] = ";
        cin >> a[i];
        if (a[i] > max) {max = a[i];i_max=i;}       //максимальный элемент
        if (a[i] > 0) sum = sum + a[i]; //сумма элементов
        if (a[i] < min) {min = a[i];i_min=i;}
 
        if (i_min > i_max)      // максимум в массиве стоит раньше 
for (int i = i_max+1; i <= i_min; i++) p=p*a[i]; // расчет произведения
        else if(i_max >= i_min)
            for(int i = i_min;i < i_max;i++) p=p*a[i]; // или позже в массиве
for (int i = i_max+1; i < i_min; i++) p=p*a[i]; 
} 
for (int i = 0; i<n-1; ++i){
        int tmp = 0;
        for (int j=(i+1); j<n; ++j)
            if (a[i]<a[j]) {
                tmp = a[i];
                a[i] = a[j];
                a[j] = tmp;        
                }
    }
for (int i=0; i<n; i++) cout  << a[i] <<  "  "; //вывод массива
cout << "Сумма положительных элементов =" << sum << endl;
cout << "Модуль произведения = " << abs(p) << endl; // модуль произведения
cout << "Максимальный элемент " << max << " с номером " << i_max << endl;
cout << "Минимальный элемент " << min << " с номером " << i_min << endl;
 
//delete[] a;
system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2012, 14:18     Доработать программу
Посмотрите здесь:

C++ Структуры))доработать программу
Доработать программу C++
C++ Доработать программу
Доработать программу C++
доработать программу с массивами C++
доработать программу C++
Доработать программу C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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