Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 1
Регистрация: 13.09.2013
Сообщений: 90
1

Номер максимального элемента массива, произведение элементов массива

25.10.2013, 01:13. Показов 776. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста с решением данной задачи.

В одномерном массиве, состоящем из n целых элементов, вычислить:
- номер максимального элемента массива;
- произведение элементов массива, расположенных между первым и вторым нулевыми элементами.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2013, 01:13
Ответы с готовыми решениями:

Массивы (найти номер максимального элемента массива, произведение элементов массива)
В одномерном массиве, состоящем из п целых элементов, 1) номер максимального элемента массива;I...

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

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

Вычислить произведение элементов массива, расположенных после максимального элемента массива
- произведение элементов массива, расположенных после максимального элемента массива;

6
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
25.10.2013, 01:28 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
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <random>
#include <cstddef>
#include <numeric>
#include <functional>
 
 
int main()
{
    size_t N = 10;
    std::vector<int> v(N);
    std::mt19937 gen { std::random_device()() };
    std::uniform_int_distribution<> uid(-10, 10);
 
    std::generate(v.begin(), v.end(), [&uid, &gen] { return uid(gen); });
    std::copy(v.cbegin(), v.cend(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    auto max = std::max_element(v.cbegin(), v.cend());
    size_t maxNumber = std::distance(v.cbegin(), max) + 1;
    std::cout << "Number of max element is " << maxNumber << std::endl;
 
    auto beg = std::find(v.cbegin(), v.cend(), 0);
    if (beg != v.end())
    {
        auto end = std::find(beg+1, v.cend(), 0);
        long mult = std::accumulate(beg + 1, end, 1, std::multiplies<int>());
        std::cout << "Multiplication of integers between first and second "
                  << "zeroes/end of sequence is " << mult << std::endl;
    }
    else
        std::cout << "This sequence does not contain 0\n";
}
2
5 / 5 / 2
Регистрация: 13.09.2012
Сообщений: 36
25.10.2013, 11:32 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
#include <stdio.h>
#include <iostream>
#include <ctime>
 
using namespace std;
 
void vector(int *a, int n) //функция заполнения массива случайными числами
 
{
    srand(time(NULL));
    for(int i = 0; i < n; i++)
        a[i] = rand()%100;
    return;
}
 
 
void printvector(int *a, int n) //функция вывода массива на экран
{
    for(int i = 0; i < n; i++)
        cout << a[i] << " ";
}
 
void max(int *a, int n) //находим максимальный эелеменет в массиве
{
    int m = a[0];
    for(int i = 1; i < n; i++)
    {
        if(a[i] > m)
            m = a[i];
    }
    cout << endl << "Максимальный элемент в массиве: "<< m << endl;
    return;
}
 
void summ(int *a, int n)
{
    int temp1 = -1;
    int temp2 = -2;
    int sum = 0;
    for(int i = 0; i < n; i++)
        if(a[i] == 0)
        {
            temp1 = i;
            break;
        }
    for(int i = n-1; i >= 0; i--)
        if(a[i] == 0)
        {
            temp2 = i;
            break;
        }
    if(temp1 == temp2)
    {
        cout << "В массиве только один ноль" << endl;
        return;
    }
    if((temp1 == -1) && (temp2 == -2))
    {
        cout << "В массиве нет нулей" << endl;
        return;
    }
    for(int i = temp1 + 1; i < temp2; i++)
        sum*=a[i];
    cout <<  sum << endl;
    return;
}
 
void main()
{
    setlocale(LC_ALL, "Russian" );
    cout << "Введите размерность массива: " << endl;
    int n;
    cin >> n;
    int *a = new int [n];
    vector(a,n);
    printvector(a,n);
    max(a,n);
    summ(a,n);
    return;
}
Добавлено через 10 минут
Упс, немного не правильно сделал второе задание, вот поменяйте функцию summ на эту
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
void summ(int *a, int n)
{
    int temp1 = -1;
    int temp2 = -2;
    int sum = 1;
    for(int i = 0; i < n; i++)
        if(a[i] == 0)
        {
            temp1 = i;
            break;
        }
    if(temp1!=-1)
    {
        for(int i = temp1 + 1; i < n; i++)
        if(a[i] == 0)
        {
            temp2 = i;
            break;
        }
    }
    
    if(temp==-1)
    {
        cout << "В массиве нет нулей" << endl;
        return;
    }
    if(temp2 == -2)
    {
        cout << "В массиве только один ноль" << endl;
        return;
    }
    for(int i = temp1 + 1; i < temp2; i++)
        sum*=a[i];
    cout <<  sum << endl;
    return;
}
1
1 / 1 / 1
Регистрация: 13.09.2013
Сообщений: 90
25.10.2013, 23:08  [ТС] 4
Цитата Сообщение от LifeWind Посмотреть сообщение
Вот мой вариант
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
#include <stdio.h>
#include <iostream>
#include <ctime>
 
using namespace std;
 
void vector(int *a, int n) //функция заполнения массива случайными числами
 
{
    srand(time(NULL));
    for(int i = 0; i < n; i++)
        a[i] = rand()%100;
    return;
}
 
 
void printvector(int *a, int n) //функция вывода массива на экран
{
    for(int i = 0; i < n; i++)
        cout << a[i] << " ";
}
 
void max(int *a, int n) //находим максимальный эелеменет в массиве
{
    int m = a[0];
    for(int i = 1; i < n; i++)
    {
        if(a[i] > m)
            m = a[i];
    }
    cout << endl << "Максимальный элемент в массиве: "<< m << endl;
    return;
}
 
void summ(int *a, int n)
{
    int temp1 = -1;
    int temp2 = -2;
    int sum = 0;
    for(int i = 0; i < n; i++)
        if(a[i] == 0)
        {
            temp1 = i;
            break;
        }
    for(int i = n-1; i >= 0; i--)
        if(a[i] == 0)
        {
            temp2 = i;
            break;
        }
    if(temp1 == temp2)
    {
        cout << "В массиве только один ноль" << endl;
        return;
    }
    if((temp1 == -1) && (temp2 == -2))
    {
        cout << "В массиве нет нулей" << endl;
        return;
    }
    for(int i = temp1 + 1; i < temp2; i++)
        sum*=a[i];
    cout <<  sum << endl;
    return;
}
 
void main()
{
    setlocale(LC_ALL, "Russian" );
    cout << "Введите размерность массива: " << endl;
    int n;
    cin >> n;
    int *a = new int [n];
    vector(a,n);
    printvector(a,n);
    max(a,n);
    summ(a,n);
    return;
}
Добавлено через 10 минут
Упс, немного не правильно сделал второе задание, вот поменяйте функцию summ на эту
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
void summ(int *a, int n)
{
    int temp1 = -1;
    int temp2 = -2;
    int sum = 1;
    for(int i = 0; i < n; i++)
        if(a[i] == 0)
        {
            temp1 = i;
            break;
        }
    if(temp1!=-1)
    {
        for(int i = temp1 + 1; i < n; i++)
        if(a[i] == 0)
        {
            temp2 = i;
            break;
        }
    }
    
    if(temp==-1)
    {
        cout << "В массиве нет нулей" << endl;
        return;
    }
    if(temp2 == -2)
    {
        cout << "В массиве только один ноль" << endl;
        return;
    }
    for(int i = temp1 + 1; i < temp2; i++)
        sum*=a[i];
    cout <<  sum << endl;
    return;
}
Спасибо)) А можно обойтись как-то без функций?))
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
25.10.2013, 23:42 5
Цитата Сообщение от Vonka Посмотреть сообщение
Спасибо)) А можно обойтись как-то без функций?))
а что занимается "вычислением"? переменные? Переменная плюс переменная = максимальный элемент в массиве? main хотя бы можно оставить?
Берете тело функции, запихиваете в main, меняете название параметров на название аргументов. Можно было бы и догадаться.

Цитата Сообщение от LifeWind Посмотреть сообщение
void vector(int *a, int n)
не советовал бы называть так функцию, встретив в коде vector, программист скорее подумает об STL контейнере. И отправится надо будет в поиск что же это есть на самом деле. Это если есть еще возможность заглянуть в исходники.
0
1 / 1 / 1
Регистрация: 13.09.2013
Сообщений: 90
30.10.2013, 16:27  [ТС] 6
И все же я никак не пойму. Функции я еще не знаю. И совсем не понимаю как это будет выглядеть без них.
Еще и идет заполнение случайными числами, можно ли заполнять их самому с клавиатуры.
0
5 / 5 / 2
Регистрация: 13.09.2012
Сообщений: 36
30.10.2013, 17:22 7
Вот сделал без функций и через ввод клавиатуры
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
#include <stdio.h>
#include <iostream>
 
using namespace std;
 
 
 
void main()
{
    setlocale(LC_ALL, "Russian" );
    cout << "Введите размерность массива: " << endl;
    int n;
    cin >> n;
    int *a = new int [n];
    cout << "Введите элементы в массив: " << endl;
    for(int i = 0; i < n; i++)
        cin >> a[i] ;
    for(int i = 0; i < n; i++)
        cout << a[i] << " ";
    int m = a[0];
    for(int i = 1; i < n; i++)
    {
        if(a[i] > m)
            m = a[i];
    }
    cout << endl << "Максимальный элемент в массиве: "<< m << endl;
 
    int temp1 = -1;
    int temp2 = -2;
    int sum = 1;
    for(int i = 0; i < n; i++)
        if(a[i] == 0)
        {
            temp1 = i;
            break;
        }
        if(temp1!=-1)
        {
            for(int i = temp1 + 1; i < n; i++)
                if(a[i] == 0)
                {
                    temp2 = i;
                    break;
                }
        }
 
        if(temp1==-1)
        {
            cout << "В массиве нет нулей" << endl;
            return;
        }
        if(temp2 == -2)
        {
            cout << "В массиве только один ноль" << endl;
            return;
        }
        for(int i = temp1 + 1; i < temp2; i++)
            sum*=a[i];
        cout <<  sum << endl;
        return;
}
1
30.10.2013, 17:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2013, 17:22
Помогаю со студенческими работами здесь

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

Вычислить номер максимального элемента массива и произведение между первым и вторым нулевым элементом
Есть массив из вещественных чисел. Нужно: 1. вычислить номер максимального элемента 2. вычислить...

Пять последних элементов массива умножить на номер максимального элемента
В массиве из 15 ячеек, заполненных через рендом, пять последних элементов помножить на номер...

Произведение элементов массива расположенных после максимального по модулю элемента (С)
Помогите пожалуйста написать программу. Очень буду Вам благодарен, очень срочно надо. В одномерном...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru