Форум программистов, компьютерный форум CyberForum.ru

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

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

Равны ли элементы массива(вектор)? - C++

05.09.2011, 18:17. Просмотров 627. Ответов 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
#include "stdafx.h"
#include <iostream>
#include<algorithm>
#include <vector>
using namespace std;
int main()
{
    int n;
    setlocale(0,"rus");
    cout<<"Введите количество элементов массива";
    cin>>n;
    vector<int> mas(n);
    vector<int>::iterator it;
    cout<<"Введите элементы массива";
    for(int i=0;i<n;i++)
    {
        cout<<"Введите элемент №"<<i<<"=";
        cin>>mas[i];
    }
    int menu;
    cout<<"Хотите ли вы просмотреть массив?Если данажмите 1,если нет нажмите что-нибудь";
    cin>>menu;
    switch(menu)
        case 1:{
            for(int i=0;i<n;i++)
                cout<<"Элемент №"<<i<<"="<<mas[i]<<endl;
                }
    int poizv=1;
    for(int i=0;i<n;i++)
    {
        if(mas[i]<0)
        {
            poizv*=mas[i];
        }
    }
    cout<<"Произведение отрицательных элементов массив равно "<<poizv;
    int a = mas[0];
    int nomer=0;
    int sum=0;
    for (int i=0;i<n;i++) 
    {   
        if (mas[i]>a)
            {
                a = mas[i];
                nomer = i;
 
            }
    }
        
    
    
    for(int i=0;i<nomer;i++)
    {
        
        sum+=mas[i];
    }
    cout<<"Сумма элементов до максимального элемента равна "<<sum<<endl;
    reverse (mas.begin(), mas.end());
    for(it=mas.begin();it!=mas.end();it++)
        cout<<*it<<" ";
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2011, 18:17     Равны ли элементы массива(вектор)?
Посмотрите здесь:

удалить из массива повторяющиеся элементы, оставив только их первые вхождения. класс-контейнер вектор C++
C++ Вычислить вектор D, компоненты которого равны сумме столбцов матрицы M
Двумерный массив (Вычислить вектор D, компоненты которого равны сумме элементов строк матрицы). Пожалуйста переделайте готовую программу C++
Двумерный массив. Определить количество строк массива, все элементы которых равны 0 C++
Задана прямоугольная матрица А. Построить вектор В, элементы которого равны разностям наибольших и наименьших значений элементов строк C++
Сформировать вектор, в который записать номера строк, в которых все элементы массива одинаковы. C++
Вычислить вектор, компоненты которого равны сумме элементов строк заданной матрицы C++
C++ Сравнить поэлементно два одномерных массива, и через if определить, равны эти элементы или нет
Создать вектор, элементы которого равны произведению max и min в строке массива C++
Построить одномерный массив, в котором элементы равны суммам элементов строк данного двумерного массива C++
C++ Чему равны элементы пустого массива?
C++ Найти все элементы массива, которые меньше или равны своему индексу

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
05.09.2011, 18:25     Равны ли элементы массива(вектор)? #2
В код не вчитывался. Но наверное просто проверить, равна ли переменная nomer нулю.

Ну, это конечно не покажет, что все элементы одинаковые. Просто будет значить, что первый элемент и является максимальным, значит и суммы элементов до него тоже нет
o-user
245 / 202 / 7
Регистрация: 03.02.2009
Сообщений: 788
05.09.2011, 18:27     Равны ли элементы массива(вектор)? #3
Вообще-то, если все элементы нулевые - значит максимальный элемент РАВЕН НУЛЮ. И, следовательно, сумма тоже равна 0.
[Т.е. если все элементы одинаковые, то максимальное значение - равно элементу.]
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
05.09.2011, 18:32     Равны ли элементы массива(вектор)? #4
Цитата Сообщение от ZevS13 Посмотреть сообщение
Столкнулся с проблемой,нужно узнать сумму элементов массива до максимального элемента.Но не могу придумать что делать если максимального элемента нет,например когда все нули,нужно как то вывести сообщение о том что максимального элемента нет
Это подходит под случай, когда максимальных элементов несколько. Просто определитесь сумма до какого именно максимального элемента Вам нужна. Можно в принципе рассматривать только два случая: до первого и до последнего.
lemegeton
2917 / 1346 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
05.09.2011, 18:36     Равны ли элементы массива(вектор)? #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
#include <iterator>
#include <algorithm>
#include <cstdlib>
#include <ctime>
 
template <class Tp>
void printVector(const std::vector<Tp> &v) {
  std::copy(v.begin(), v.end(),
    std::ostream_iterator<int>(std::cout, " "));
  std::cout << std::endl;
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  size_t vector_size = 5 + rand() % 5;
 
  std::vector<int> vector;
 
  for (size_t i = 0; i < vector_size; ++i)
    vector.push_back(rand() % 2);
  
  int max_number = vector[0];
  int max_sum = vector[0];
  int local_sum = 0;
  for (int i = 1; i < vector_size; ++i) {
    local_sum += vector[i];
    if (vector[i] >= max_number) {
      max_sum += local_sum;
      local_sum = 0;
      max_number = vector[i];
    }
  }
  
  printVector(vector);
  std::cout << max_number << " -- " << max_sum << std::endl;
  return 0;
}
diagon
Higher
1924 / 1190 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.09.2011, 18:44     Равны ли элементы массива(вектор)? #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
#include <algorithm>
 
template <class C> bool have_only_one_different_element( const std::vector< C >& vec )
{
    return std::min_element( vec.begin(), vec.end() ) == std::max_element( vec.begin(), vec.end() );
}
 
int main()
{
    std::vector<int> arr (5, 0);
    std::cout << std::boolalpha << have_only_one_different_element( arr ) << std::endl;
    
    arr[0] = 1;
    std::cout << std::boolalpha << have_only_one_different_element( arr ) << std::endl;
}
Yandex
Объявления
05.09.2011, 18:44     Равны ли элементы массива(вектор)?
Ответ Создать тему
Опции темы

Текущее время: 03:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru