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

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

Войти
Регистрация
Восстановить пароль
 
stem
0 / 0 / 0
Регистрация: 16.02.2015
Сообщений: 27
#1

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

20.02.2015, 23:45. Просмотров 1089. Ответов 4
Метки нет (Все метки)

2)В одномерном массиве, состоящем из 20 целых элементов, вычислить:
1- номер максимального элемента массива;
2- произведение элементов массива, расположенных между первым и вторым нулевыми элементами.
Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях, а во второй половине – элементы, стоявшие в четных позициях
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2015, 23:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Произведение элементов массива, расположенных между первым и вторым нулевыми элементами (C++):

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

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

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

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

Найти произведение элементов массива, расположенных между первым и вторым нулевыми элементами - C++
П5.4.Правил Запрещено создавать темы с бессмысленными названиями вроде "Помогите!", "Вопрос" и т.п. помогите решить задачу на С++ ...

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

4
Axel513
0 / 0 / 0
Регистрация: 20.02.2015
Сообщений: 4
21.02.2015, 01:23 #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>
using namespace std;
#include <windows.h>
#include <conio.h>
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
const int N=10;
int i;
double mas[N]={-5.7, 0, 3.2, 2.2, -9.7, 7.8, 4.9, 0, -1.4, 6.3};
cout<<"Массив:"<<endl;
for(i=0;i<N;i++)
cout<<mas[i]<<'\t';
//////////////////////////////////
double Sum=0.0;
int first0, last0;
for (int i=0; i<N; i++)
    if(mas[i]==0)
      {
      first0=i;
      break;
      }
for (i=N-1; i>=0; i--)
        if (mas[i]==0)
        {
            last0=i;
            break;
        }
for (i=first0; i<last0; i++)
     {
         Sum+=mas[i];
     }
cout<<"\nСумма элементов,расположенных между первым и последним нулевыми элементами: "<<Sum<<endl;
//////////////////////////////////////////////////////////////////////
int j;
double a;
cout<<"\nПреобразованный массив: "<<'\n';
for (i=0;i<N-1;i++)
     for(j=i+1;j<N;j++)
        if (mas[i]<mas[j])
            {
             a=mas[i];
             mas[i]=mas[j];
             mas[j]=a;
            }
for(i=0;i<N;i++)
cout<<mas[i]<<'\t';
 
getch();
return 0;
}
Похожее задание по смыслу, только здесь задание состоит в том, чтобы:

• Найти сумму элементов массива, расположенных между первым и последним нулевыми элементами.
• Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом все отрицательные (элементы, равные 0 , считать положительными)


Думаю, преобразовать код не составит большого труда
0
Boleon
Guardian of Asgaard
372 / 315 / 106
Регистрация: 11.11.2013
Сообщений: 1,046
Завершенные тесты: 1
21.02.2015, 06:36 #3
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <iostream>
#include <cstdlib>
#include <ctime>
 
#define SIZE 20
 
void arrayInitialization(int array[]) {
    std::cout << "Initializing array:" << std::endl;
    
    srand(time(NULL));
    
    for ( int i = 0; i < SIZE; i++ ) {
        array[i] = rand() % 10;
        std::cout << "array[" << i << "]=" << array[i] << std::endl;
    }
    std::cout << std::endl;
}
 
void maxElement(int array[]) {
    int max = 0;
    
    for ( int i = 0; i < SIZE; i++ ) {
        if ( array[max] < array[i] ) {
            max = i;
        }
    }
    std::cout << "Max element: " << array[max] << std::endl;
    std::cout << std::endl;
}
 
void product(int array[]) {
    bool start = false;
    bool end = false;
    
    for ( int i = 0; i < SIZE && start != true; i++ ) {
        if ( array[i] == 0 ) {
            start = true;
            for ( int j = i+1; j < SIZE && end != true; j++ ) {
                if ( array[j] == 0 ) {
                    int k = i+1;
                    
                    end = true;
 
                    if ( j - k == 0 ) {
                        std::cout << "There aren't elements between ";
                        std::cout << "array[" << i << "] and ";
                        std::cout << "array[" << j << "]" << std::endl;
                    } else {
                        long long int result = 1;
                        
                        for ( ; k < j; k++ ) {
                            result *= array[k];
                        }
                        std::cout << "Product between ";
                        std::cout << "array[" << i << "] and ";
                        std::cout << "array[" << j << "] : ";
                        std::cout << result << std::endl;
                        std::cout << std::endl;
                    }
                }
            }
        }
    }
    
    if ( start == false || end == false ) {
        std::cout << "Array doesn't have enough elements to multiply!" << std::endl;
        std::cout << std::endl;
    }
}
 
void customizeArray(int array[]) {
    std::cout << "Costumized array:" << std::endl;
    int index = 0;
    int newArray[SIZE];
    
    for ( int i = 1; i < SIZE; i += 2, index++ ) {
        newArray[index] = array[i];
    }
 
    for ( int i = 0, last = SIZE-1; i < last; i += 2, index++ ) {
        newArray[index] = array[i];
    }
    
    for ( int i = 0; i < SIZE; i++ ) {
        array[i] = newArray[i];
        std::cout << "array[" << i << "]=" << array[i] << std::endl;
    }
    std::cout << std::endl;
}
 
int main() {
    int array[SIZE];
    
    arrayInitialization(array);
    maxElement(array);
    product(array);
    customizeArray(array);
    
    return 0;
}
Результат:
Кликните здесь для просмотра всего текста

Код
Initializing array:
array[0]=6
array[1]=7
array[2]=5
array[3]=0
array[4]=6
array[5]=0
array[6]=7
array[7]=1
array[8]=7
array[9]=8
array[10]=9
array[11]=3
array[12]=1
array[13]=4
array[14]=4
array[15]=0
array[16]=7
array[17]=7
array[18]=2
array[19]=5

Max element: 9

Product between array[3] and array[5] : 6

Costumized array:
array[0]=7
array[1]=0
array[2]=0
array[3]=1
array[4]=8
array[5]=3
array[6]=4
array[7]=0
array[8]=7
array[9]=5
array[10]=6
array[11]=5
array[12]=6
array[13]=7
array[14]=7
array[15]=9
array[16]=1
array[17]=4
array[18]=7
array[19]=2


если надо вручную инициализировать массив, то замени функцию:
C++
1
2
3
4
5
6
7
8
9
void arrayInitialization(int array[]) {
    std::cout << "Initializing array:" << std::endl;
    
    for ( int i = 0; i < SIZE; i++ ) {
        std::cout << "array[" << i << "]=";
        std::cin >> array[i];
    }
    std::cout << std::endl;
}
0
zss
Модератор
Эксперт С++
6871 / 6433 / 2152
Регистрация: 18.12.2011
Сообщений: 16,912
Завершенные тесты: 1
21.02.2015, 10:02 #4
Задача довольно интересная для реализации на STL
в частности, stable_partition использует класс odd_count, который хранит очередной номер в переменной counter
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
#include <iostream>
#include <algorithm>
#include <ctime>
#include <vector>
#include <functional> 
#include <numeric> 
using namespace std; 
 
// класс для генерации случайных чисел
class random_fill 
{
public:
    random_fill(){srand((unsigned)time(NULL));}
    int operator()(void){return rand()%10-5;}
};
 
// класс для определения четности элемента
class odd_count
{ 
static int counter; 
public: 
    bool operator()(int) 
    { 
        ++counter; 
        return (counter%2)==1;
    }
}; 
int odd_count::counter = 0; 
 
int main ()
{
    setlocale(LC_ALL,"Rus");
    vector<int> v(20);
    generate(v.begin(),v.end(),random_fill()); // Заполнение случайными числами через random_fill
 
    ostream_iterator<int> out(cout," "); // итератор вывода чисел на экран через пробел
    copy(v.begin(),v.end(),out); // вывод всего массива
    cout<<endl;
// 1- номер максимального элемента массива;
    vector<int>::iterator pv = 
        max_element(v.begin(), v.end()); // находим максимальный элемент
    int n_max=pv-v.begin()+1; // номер максимального элемента
    cout<<"max="<<*pv<<" #="<<n_max<<endl; // вывод значения максимума и его номер
 
    // 2- произведение элементов массива, расположенных между первым и вторым нулевыми элементами.
    pv = find(v.begin(), v.end(),0); // первый нуль, если нету pv=v.end()
    if(pv!=v.end()) // есть хотябы один нуль
    {
        vector<int>::iterator pv2 = find(pv+1, v.end(),0); // второй нуль, если нету pv2=v.end()
        int mul = accumulate(pv+1, pv2, 1,multiplies<int>() ) ; 
        cout<<"multiplication="<<mul<<endl;
    }else
        cout<<"No zero values\n";
// Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях, 
// а во второй половине – элементы, стоявшие в четных позициях
    stable_partition(v.begin(),v.end(),odd_count()); // используем класс odd_count для определения четности
    copy(v.begin(),v.end(),out); // вывод всего массива
    cout<<endl;
 
    system("pause");
    return 0;
}
0
stem
0 / 0 / 0
Регистрация: 16.02.2015
Сообщений: 27
21.02.2015, 10:10  [ТС] #5
Спасибо люди большое!)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2015, 10:10
Привет! Вот еще темы с ответами:

Вычислить произведение элементов массива, расположенных между первым и вторым нулевыми элементами - C++
Вычислить произведение элементов массива, расположенных между первым и вторым нулевыми элементами? Оригинал: Обчислити добуток...

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

Вычислить произведение элементов массива, расположенных между первым и вторым нулевыми элементами - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main () { const int n=10; int b; float...

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


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

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

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