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

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

10.01.2015, 20:33. Показов 3970. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задан массив X(n) найти :
-сумму нечетных элементов массива;
-произведение элементов массива расположенных между первым и последним отрицательными элементами.
Из данного массива и некоторого массива того же типа , но другой размерности Y(m) , сформировать общий массив Z(n+m) удалить из полученного массива наименьший элемент.
Буду благодарен за помощь.
Мои наработки :
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
#include <iostream.h>
 
int main()
{
   int N;
   int* Arr;
        cout<<"Enter N: ";
        cin>>N;
   Arr=new int[N];
   for(int i=0; i<N; ++i)
          cin>>Arr[i];
   int sum=0;
   for(int i=0; i<N; ++i)
   {
        if(Arr[i]&1)
        {
            sum+=Arr[i];
        }
   }
        cout<<"Sum: "<< sum <<'\n';
   delete[] Arr;
   system("pause");
   return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2015, 20:33
Ответы с готовыми решениями:

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

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

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

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

6
2 / 2 / 1
Регистрация: 01.11.2014
Сообщений: 39
10.01.2015, 21:31 2
Цитата Сообщение от romalikons Посмотреть сообщение
-произведение элементов массива расположенных между первым и последним отрицательными элементами.
имеется ввиду
1. первое встреченное в массиве отрицательное и самое последнее:
21 -34 5 -6 32 6 -1 5 -12 ---> числа между -34 и -12

2. либо наименьшее и наибольшее число среди присутствующих отрицательных:
21 -34 5 -6 32 6 -1 5 -12 ---> числа между -34 и -1

?
0
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 78
10.01.2015, 21:46  [ТС] 3
annussaa, первое встречное
0
Модератор
Эксперт С++
13405 / 10515 / 6283
Регистрация: 18.12.2011
Сообщений: 28,070
10.01.2015, 21:48 4
Попробовал решить эту задачу через STL.
Просьба покритиковать результат.
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
#include <algorithm>
#include <numeric>
#include <iostream>
#include <iterator>
#include <ctime>
#include <vector>
using namespace std;
// функция для суммирования нечетных чисел
int odd(int x,int y) 
{ 
    return y%2!=0?x+y:x; 
}
//  функция  для генерации случайных значений в диапазоне (-5,5)
int rnd()
{
 return rand()%10-5;
}
 
int main()
{
  srand((unsigned int)time(NULL));
  int N = 8;
  vector<int> X(N);
  generate(X.begin(),X.end(), rnd); // заполняем случайными значениями массив X
  cout << "Original X sequence:\n";
   // используем ostream_iterator для вывода чисел на консоль через пробел
  ostream_iterator<int> out(cout, " ");
  copy(X.begin(),X.end(), out); cout << endl; // выводим X
 
  int n=accumulate(X.begin(),X.end(),0,odd); // подсчитываем количество нечетных чисел
  cout<<"\nOdd values sum:\n"<<n<<endl;
  vector<int>::iterator f1=find_if(X.begin(),X.end(),bind2nd(less<int>(),0)); // ищем первый отрицательный
  vector<int>::reverse_iterator f2=find_if(X.rbegin(),X.rend(),bind2nd(less<int>(),0));// ищем последний отрицательный
  n=accumulate(f1+1,f2.base()-1,1,multiplies<int>()); // произведение между первым и последним отрицательными
  cout<<"\nMultiply result:\n"<<n<<endl;
 
  N = 6;
  vector<int> Y(N);
  generate(Y.begin(),Y.end(), rnd); // заполняем случайными значениями массив Y
  cout << "Original Y sequence:\n";
  copy(Y.begin(),Y.end(), out); cout << endl; // выводим Y
  cout << " X +Y sequence:\n";
  X.insert(X.end(),Y.begin(),Y.end()); // вставляем Y в X
  copy(X.begin(),X.end(), out); cout << endl; // выводим новый X
  sort(X.begin(),X.end()); // сортируем по возрастанию
  cout<<"\nMinimal value:\n";
  cout<<*(X.begin())<<endl; // выводим первый элемент (минимальный)
  
  system("pause");
  return 0;
}
0
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 78
10.01.2015, 21:56  [ТС] 5
zss, спасибо , но сложно очень ( Подскажите , как нарисовать вектор в блок-схеме ?
0
2 / 2 / 1
Регистрация: 01.11.2014
Сообщений: 39
10.01.2015, 22:22 6
Лучший ответ Сообщение было отмечено romalikons как решение

Решение

вот, смотрите.

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
#include <iostream>
using namespace std;
 
int main(){
    int n; cout << "Размер массива: "; cin >> n;
    int *X = new int[n];
 
    for (int i = 0; i < n; i++){
        cout << i+1 << ". элемент: "; cin >> X[i];
    }
    int sum = 0;
    for (int i = 0; i < n; i++) {
        if (X[i]&1) sum = sum + X[i];
    }
    cout << "Сумма нечетных элементов массива: " << sum << endl;
 
    int first, firstidex;
 
    int exit = 1;
    for (int i = 0; i < n; i++) {
        if (X[i] < 0) {
            first = X[i]; // нашли первое отрицательное
            firstidex = i;
            exit--;
        }
        if (exit != 1) break;
    }
 
    int last, lastindex;
 
    exit = 1;
    for (int i = n-1; i > firstidex ; i--){
        if (X[i] < 0) {
            last = X[i]; // нашли последнее отрицательное
            lastindex = i;
            exit--;
        }
    if (exit != 1) break;
    }
 
    int u = 1;
    for (int i = firstidex+1; i < lastindex; i++) u = u * X[i]; // произведение
 
    cout << "Произведение чисел между " << first << " и " << last << " = " <<  u << endl;
 
    int m; cout << "Размер нового массива: "; cin >> m;
    int *Y = new int[m];
    int *Z = new int[n+m];
 
    for (int i = 0; i < m; i++){
        cout << i+1 << ". элемент: "; cin >> Y[i];
    }
    for(int i = 0; i < n; i++) Z[i] = X[i]; // соединяем два в массива в один
    for(int i = n+1; i < n+m; i++) Z[i] = Y[i];
 
    int mini = Z[0]; int which;
    for (int i = 0; i < n+m; i++){
        if (mini > Z[i]) mini = Z[i]; // находим наименьший
        which = i; // и его индекс
    }
    for (int i = 0; i < n+m; i++) {
        if (Z[i] == mini) Z[i] = 0;
    }
    cout << "Удален " << which << " элемент: " << mini << endl;
 
    delete[] X;
    delete[] Y;
    delete[] Z;
    return 0;
}
1
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 78
10.01.2015, 23:58  [ТС] 7
annussaa, спасибо )
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2015, 23:58
Помогаю со студенческими работами здесь

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

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

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

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


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

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

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