0 / 0 / 0
Регистрация: 15.03.2016
Сообщений: 5
1

Неправильно считается произведение элементов массива, принадлежащих заданному диапазона

14.06.2016, 22:41. Показов 407. Ответов 1
Метки нет (Все метки)

В одномерном массиве, который состоит из n целых элементов, вычислить произведение элементов массива из диапазона [-5; 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
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
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{setlocale(LC_ALL, "Russian");
 int n,i,z(0),v,number(1),k;
 float pr,pn,kn;
 char ot;
 do{cout<<"Nomer zapuska: "<<number<<endl;
     number++;
     cout<<"Vvedite razmer masiva: ";
     cin>>n;
     if(n<=0) {cout<<endl<<"Necorect. masiv";
              }
     else {
            int *p=new int[n];
            for(i=0;i<n;i++)
            {cout<<"Znachenie mas["<<i<<"]: ";
             cin>>*(p+i);
            }
             cout<<endl<<"Iskhodnyy massiv: "<<endl;
             for(i=0;i<n;i++)
            { cout << *(p+i);
              if(i==n-1) cout<<".";
              else cout<<", ";
            }
                z=0;
                pn=-1;
                kn=-1;          
              for(i=0;i<n;i++)
              { if(z!=0 && *(p+i)==0) kn=i;
                if(z==0 && *(p+i)==0){ pn=i;
                                       z++;
                                     }
               
              }
              if(pn==(kn-1)|| pn==-1 || kn==-1)
               cout <<endl<<endl<<"Netu elementov kotoryye nakhodyatsya mezhdu pervym i vtorym nulevymi elementami";
              else{for(i=pn;i<kn;i++)
                          {
                           if((*(p+1)>=-5)&&(*(p+1)<=5))
                                            {
                                             pr=pr*(*(p+1));
                                             k++;
                                            }
                          }
                       if(k==0)
                          {
                           cout<<endl<<"Net chisel is diapasona!";
                          }
                          else
                             {
                              cout<<endl<<"Proisvedenie masiva: "<<pr;
                             }
                   }
                   delete [] p;
           }
                   cout<<endl<<"Zapustit echo YES(1)/NO(0)";
                   cin>>ot;
                   
   } while (ot=='1');
   _getch();
   return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.06.2016, 22:41
Ответы с готовыми решениями:

Произведение элементов массива, принадлежащих заданному интервалу
Найти произведение всех элементов массива, значение которых принадлежит отрезку (А и В вводятся с...

Вычислить произведение элементов массива, принадлежащих заданному отрезку
В одномерном массиве, состоящем из N целых чисел, вычислить: 1. индекс минимального элемента;...

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

Почему-то неправильно считается кол-во элементов массива
В последнем цикле считывается текст из файла и вместе с этим подсчитывается кол-во символов. Текст...

1
15 / 15 / 1
Регистрация: 13.11.2011
Сообщений: 302
15.06.2016, 00:56 2
C++ (Qt)
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
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{setlocale(LC_ALL, "Russian");
    int n,i,z(0),v,number(1),k=0;
    float pr=1,pn,kn;
    char ot;
    do{cout<<"Nomer zapuska: "<<number<<endl;
        number++;
        cout<<"Vvedite razmer masiva: ";
        cin>>n;
        if(n<=0)
            cout<<endl<<"Necorect. masiv";
 
        else
        {
            int *p=new int[n];
            for(i=0;i<n;i++)
            {
                cout<<"Znachenie mas["<<i<<"]: ";
                cin>>*(p+i);
            }
            cout<<endl<<"Iskhodnyy massiv: "<<endl;
            for(i=0;i<n;i++)
            { cout << *(p+i);
                if(i==n-1) cout<<".";
                else cout<<", ";
            }
            z=0;
            pn=-1;
            kn=-1;
            for(i=0;i<n;i++)
            {
                if(z!=0 && *(p+i)==0)
                    kn=i;
                if(z==0 && *(p+i)==0)
                {
                    pn=i;
                    z++;
                }
 
            }
            if(pn==(kn-1)|| pn==-1 || kn==-1)
                cout <<endl<<endl<<"Netu elementov kotoryye nakhodyatsya mezhdu pervym i vtorym nulevymi elementami";
            else{for(i=pn+1;i<kn;i++)
                {
                    if((*(p+i)>=-5)&&(*(p+i)<=5))
                    {
                        pr=pr*(*(p+i));
                        k++;
                    }
                }
                if(k==0)
                {
                    cout<<endl<<"Net chisel is diapasona!";
                }
                else
                {
                    cout<<endl<<"Proisvedenie masiva: "<<pr;
                }
            }
            delete [] p;
        }
        cout<<endl<<"Zapustit echo YES(1)/NO(0)";
        cin>>ot;
 
    } while (ot=='1');
    _getch();
    return 0;
}
Если я все правильно понял.
Ошибки:
1) забываете при объявлении переменных присваивать им начальное значение(инициализацию счетчика)
2) в блоке нахождения произведение все время умножается одно и тоже число на себя, вместо того чтобы ходить по массиву использовали константу 1.

Как было:

C++ (Qt)
1
2
3
4
5
6
7
8
else{for(i=pn;i<kn;i++)
                          {
                           if((*(p+1)>=-5)&&(*(p+1)<=5))
                                            {
                                             pr=pr*(*(p+1));
                                             k++;
                                            }
                          }
Как надо:
C++ (Qt)
1
2
3
4
5
6
7
8
for(i=pn+1;i<kn;i++)
                {
                    if((*(p+i)>=-5)&&(*(p+i)<=5))
                    {
                        pr=pr*(*(p+i));
                        k++;
                    }
                }
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2016, 00:56

Неправильно считается произведение
M=\prod_{z=1}^{n}(\alpha *z); n=7 Преподаватель говорит, что у меня не правильно считается...

Найти количество элементов массива, принадлежащих заданному интервалу
Найти количество элементов последовательности, принадлежащих интервалу : a(k)=α(sink+cosk),...

Подсчитать сумму элементов массива, принадлежащих заданному отрезку
24. Дан целочисленный массив размера n x m и два числа a и b. Посчитайте сумму элементов массива,...

Неправильно считается произведение, начиная с n=5
Составить программу вычисления и выдачи на печать суммы и произведения N элементов бесконечного...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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