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

Найдите ошибку, неправильно выводится произведение - C++

Восстановить пароль Регистрация
 
web1720
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 10
13.06.2012, 08:27     Найдите ошибку, неправильно выводится произведение #1
7.1 Дан массив из N элементов (вещественные числа). Вы-
числить: 1) сумму отрицательных элементов массива; 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
# include <iostream>
using namespace std;
int main ()
{
const int n=10;int i,j,b,s=0,p,n1=0,n2,min,nmin,max,nmax;
int a[n+1];
for (i=1;i<=n;i++)
{cout<<" vvedi a["<<i<<"]";cin>>a[i];}
for (i=1;i<=n;i++)
{if (a[i] < 0) s=s+a[i];}
cout <<"\n summa otrizatelnoe="<<s;
 
min=a[1];nmin=1;max=a[1]; nmin=1;
for (i=1;i<n;i++)
{if (a[i]<min) {min=a[i];nmin=i;}
if (a[i]>max) {max=a[i];nmax=i;}}
if (nmax<nmin) {n1=nmax; n2=nmin;} else {n1=nmin; n2=nmax;} 
p=1;
for (i=n1+1;i<n2;i++)
{p=p*a[i];} if (p==1) cout<<"Ne cychestvuet"; else
cout <<"\n p="<<p<<"\n";
for (i=1; i<=n-1; i++)
    {   for (j=1; j<=n-1; j++)
    {   if (a[j]>a[j+1]) { b=a[j]; a[j]=a[j+1]; a[j+1]=b;}
    }
    }
for (i=1;i<=n;i++)
{cout <<"\n a["<<i<<"]"<<a[i];}
cout <<"\n";
cin>>b;
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2012, 08:27     Найдите ошибку, неправильно выводится произведение
Посмотрите здесь:

C++ Почему неправильно выводится массив?
C++ Найдите ошибку
C++ Найдите ошибку...
C++ массив выводится неправильно
C++ Операции с длинными числами - неправильно выводится результат
Найдите ошибку C++
Кол-во итераций выводится неправильно C++
Неправильно считается произведение, начиная с n=5 C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
13.06.2012, 22:01     Найдите ошибку, неправильно выводится произведение #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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream> 
#include <cstdlib> 
#include <algorithm>
#include <ctime>
using namespace  std;
int main() 
{   
    setlocale(0, "rus");
    srand((unsigned) time(0)); 
    const int N = 10;  // размер массива
    int i;
    int array[N];  
    int sum_min = 0; // сумма отрицательных
    int product = 1; // произведение
    int min, max; 
    int min_index, max_index;
 
    for ( i = 0; i < N; i++) array[i] = rand() % 201 - 100;  //заполняем случайными числами от -100 до 100
 
    for ( i = 0; i < N; i++) cout << array[i] << " ";  // выводи массив
    cout << endl; 
 
    for ( i = 0; i < N; i++) 
        if(array[i] < 0) 
            sum_min += array[i]; // считаем сумму
    
    cout << "Сумма минимальных элементов равна " << sum_min << endl; 
 
    min = array[0];
    for ( i = 1; i < N; i++)  
        if(min > array[i]) 
        { 
            min = array[i]; 
            min_index = i;   // индекс минимального элемента
        } 
 
        max = array[0]; 
 
        for ( i = 1; i < N; i++) 
            if( max < array[i]) 
            { 
                max = array[i]; 
                max_index = i;  // индекс максимального элемента
            } 
 
            cout << "Минимальный элемент расположен " << min_index << endl; 
            cout << "Максимальный элемент расположен " << max_index << endl; 
 
    
 
            if( min_index > max_index)  // если минимальный больше максимального
            {
                if( min_index - max_index == 1) // если числа расположены рядом
                    cout << "В промежутке нет чисел "; 
                else
                {
 
                for ( i = max_index + 1; i < min_index; i++) // считаем произведение
                    product *= array[i];  
                cout << "Произведение элементов равно " << product <<  endl; 
                }  
            }
 
                if( max_index > min_index)  
                {
 
                    if( max_index - min_index == 1) // если расположены рядом
                        cout << "В промежутке нет элементов " << endl; 
                    else 
                    { 
                        for ( i = min_index + 1; i < max_index; i++) 
                            product *= array[i]; 
                        cout << "Произведение элементов равно " << product <<  endl; 
                    }  
                }  
 
                cout << endl;
 
                sort(array, array+N);  // сортирум элементы
 
                for ( i = 0; i < N; i++) // выводим отсортированный
                    cout << array[i] << " "; 
                cout << endl;
 
                return 0;
}
Yandex
Объявления
13.06.2012, 22:01     Найдите ошибку, неправильно выводится произведение
Ответ Создать тему
Опции темы

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