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

Вычислить сумму элементов массива, расположенных между первым и последним отрицательными элементами

31.03.2018, 12:29. Показов 2899. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Прошу помощи в написании программы.
1 и 2 задание сделал вроде, помогите с третьим, задания выделены в комментариях.
И если не сложно распишите полностью что в коде какие действия выполняет.
Я работаю в VS 2012.
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
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <clocale>
#include <conio.h>
#include "time.h"
using namespace std;
int main()
{
setlocale(LC_ALL, "russian");
srand ( time(0) );
int *x, max,sum=0,count, n, s_max, CurrentArray,i;
cout<< "Введите размерность массива: ";
int r=scanf_s ("%d", &n); 
if (r!=1) 
{ 
printf("Введено некорректное значение! \n"); 
_getch(); 
exit(0);
} 
x = new int[n];
int *mas = new int[n];
for (int i = 0; i < n; i++)
{
x[i] = rand () % 100-60;
printf("\n x[%d]=%d ",i, x[i]); 
}
//Вычислить количество элементов массива,не равных нулю. 
count=0; 
for (int i=0;i<n;i++) 
if (x[i]!=0) count++; 
cout << "\n Количество элементов не равных 0: " << count << endl; 
 
//Вычислить произведение элементов массива,расположенных после максимального элемента. 
max = x[0];
count = 0;
for (int i = 0; i < n; i++)
if (x[i]>max)
{
max = x[i];
count = i;
}
int mult = 1; 
for(int i = count+1; i < n; i++) 
mult *= x[i]; 
if(count == n-1) 
mult = 0; 
cout << endl << " Произведение элементов массива после максимального элемента: " << mult;
 
// Вычислить сумму элементов массива, расположенных между первым и последним отрицательным элементом. 
 
 
delete []x; // освобождаем память
_getch();
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2018, 12:29
Ответы с готовыми решениями:

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

Вычислить сумму элементов массива расположенных между первым и последним отрицательными элементами
Вычислить в одномерном массиве, состоящем из n действительных элементов, сумму элементов массива,...

Сумму элементов массива, расположенных между первым и последним отрицательными элементами
Задание: Нужно найти сумму элементов массива, расположенных между первым и последним...

Найти сумму элементов массива, расположенных между первым и последним отрицательными элементами
4 В одномерном массиве, состоящем из 20 вещественных элементов, вычислить: сумму элементов...

6
1296 / 469 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
31.03.2018, 12:57 2
Лучший ответ Сообщение было отмечено Acid1488 как решение

Решение

Acid1488,
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 <ctime>
#include <cstdlib>
#include <clocale>
#include <conio.h>
#include "time.h"
using namespace std;
int main()
{
    setlocale(LC_ALL, "russian");
    srand(time(0));
    int *x, max, sum = 0, count, n, s_max, CurrentArray, i;
    cout << "Введите размерность массива: ";
    int r = scanf_s("%d", &n);
    if (r != 1)
    {
        printf("Введено некорректное значение! \n");
        _getch();
        exit(0);
    }
    x = new int[n];
    int *mas = new int[n];
    for (int i = 0; i < n; i++)
    {
        x[i] = rand() % 100 - 60;
        printf("\n x[%d]=%d ", i, x[i]);
    }
    //Вычислить количество элементов массива,не равных нулю. 
    count = 0;
    for (int i = 0; i<n; i++)
        if (x[i] != 0)
            count++;
    cout << "\n Количество элементов не равных 0: " << count << endl;
 
    //Вычислить произведение элементов массива,расположенных после максимального элемента. 
    max = x[0];
    count = 0;
    for (int i = 0; i < n; i++)
        if (x[i]>max)
        {
            max = x[i];
            count = i;
        }
    long long int mult = 1;
    for (int i = count + 1; i < n; i++)
        mult *= x[i];
    if (count == n - 1)
        mult = 0;
    cout << endl << " Произведение элементов массива после максимального элемента: " << mult << endl;
 
    // Вычислить сумму элементов массива, расположенных между первым и последним отрицательным элементом. 
    int firstMinus = 0, lastMinus = n - 1; // ставим маркер первого отрицательного элемента на первый элемент, а последнего отрицательного - на последний элемент
    while (firstMinus < n && x[firstMinus] >= 0) // пока элементы не закончились, и пока мы не дошли до отрицательного элемента, увеличиваем маркер первого отрицательного
        firstMinus++;
    while (lastMinus >= 0 && x[lastMinus] >= 0) // аналогично с последним отрицательным, только тут мы идем с конца
        lastMinus--;
    sum = 0; // теперь посчитаем сумму. пока что она нулевая.
    for (int i = firstMinus + 1; i < lastMinus; i++) // собственно, считаем сумму
        sum += x[i];
    cout << "Сумма элементов массива между первым и последним отрицательным элементом: " << sum << endl;
 
    delete[]x; // освобождаем память
    _getch();
}
1
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
31.03.2018, 13:11 3
Цитата Сообщение от Acid1488 Посмотреть сообщение
Вычислить произведение элементов массива,расположенных после максимального элемента.
Acid1488, максимальных (одинаковых) в массиве может быть несколько. после какого max нужно вычислить произведение ? у Вас есть оригинал условия задачи ?
0
Модератор
Эксперт С++
13503 / 10755 / 6409
Регистрация: 18.12.2011
Сообщений: 28,704
31.03.2018, 13:21 4
См. ссылки внизу страницы
1
0 / 0 / 0
Регистрация: 20.10.2017
Сообщений: 11
31.03.2018, 15:34  [ТС] 5
Вот
Миниатюры
Вычислить сумму элементов массива, расположенных между первым и последним отрицательными элементами  
0
0 / 0 / 0
Регистрация: 20.10.2017
Сообщений: 11
31.03.2018, 15:43  [ТС] 6
MayaNash, Спасибо вам огромное, очень помогли.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
31.03.2018, 20:27 7
Acid1488, можно ещё обработать случаи когда для суммы нет элементов, но я это не учитывал:

как вариант:

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
#include <iostream>
#include <ctime>
using namespace std;
 
int NoNull(int *a, int n)
{
    int count=0;
    for (int i = 0; i < n; i++)
    if (a[i]!=0) count++;
    return count;
}
 
void MultAfterMax(int *a, int n)
{
    int mult=1, max, imax=0;
    for (int i = 0; i < n; i++)
    if (i==0 || a[i]>=max) {max=a[i]; imax=i;} 
    if (imax==n-1) cout <<"Elements for mult. are absent\n";
    else
    {
    for (int i = imax+1; i < n; i++)
    mult*=a[i];
    cout <<"mult="<<mult<<endl;
    }
}
 
int LocalSum(int *a, int n)
{
    int ifirst=0, ilast=0, sum=0;
    for (int i = 0; i < n; i++)
    if (a[i]< 0 )
    {    
    ifirst=i;
    break;
    }    
    for (int i = n-1; i >=0; i--)
    if (a[i]< 0 )
    {    
    ilast=i;
    break;
    }     
    for (int i = ifirst+1; i < ilast; i++)
    sum+=a[i];
    return sum;
}
 
int main()
{
    int n;
    cout <<"Enter n: "; cin >>n;
    
    int*a = new int[n];
    
    cout <<"Enter elements:\n";
    for (int i = 0; i < n; i++)
      cin >>a[i];
    for (int i = 0; i < n; i++)
      cout <<a[i]<<" ";
      cout <<endl;
    
    cout <<"count="<<NoNull (a, n)<<endl;
    MultAfterMax (a, n);
    cout <<"sum="<<LocalSum (a, n);
 
    delete[]a;
system("pause");
return 0;
}
1
31.03.2018, 20:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2018, 20:27
Помогаю со студенческими работами здесь

Найти сумму элементов расположенных между первым и последним отрицательными элементами массива
Дан целочисленный масив размера N.Найти суму элементов расположенных между первым и последним...

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

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

Двумерный массив. Сумму элементов массива, расположенных между первым и последним отрицательными элементами
приветствую всех. нужна ваша помощь с написанием программы на с++. помогите, пожалуйста, если кому...


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

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

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