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

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

Восстановить пароль Регистрация
 
Jac
 Аватар для Jac
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 7
02.06.2010, 10:44     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами #1
помогите пожалуйста:
В однородном массиве, состоящем из N вещественных элементов, вычислить:
• Номер минимального элемента массива;
• Сумму элементов массива, расположенных между первым и вторым отрицательным элементами.
Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом все остальные.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2010, 10:44     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами
Посмотрите здесь:

Найти сумму элементов между первым и вторым отрицательными элементами массива C++
Массив: вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами. C++
C++ Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами
C++ вычислить: 1) номер минимального элемента массива; 2) сумму элементов массива, расположенных между первым и вторым отрицательными элементами
C++ Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
02.06.2010, 11:16     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами #2
1)
C++
1
2
3
4
5
6
const int size=10;
    int MAS[size]={6,7,8,9,1,2,3,4,5,10};
 
    int *min=std::min_element(MAS, MAS+size);
    int index=min-MAS;
    std::cout << "Index: " << index;
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
02.06.2010, 11:27     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами #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
#include<stdio.h>
#include<string.h>
 
int main(){
    float n;
    printf("Enter N: ");
    scanf("%f",&n);
    float *mas = new float [n];
    printf("Enter elemety massiva: \n");
    for(int i=0; i<n; i++){
        scanf("%f",&mas[i]);
    }
    int d=mas[0],p=0;
    for(int i=0; i<n; i++){
        if(mas[i]<d){
            d=mas[i];
            p=i;
        }
    }
    printf("\nNaimenshy element: %i\n",p);
    delete [] mas;
return 0;
}
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
02.06.2010, 11:34     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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 <cstdlib>
#include <iostream>
#include <algorithm>
#include <functional>
#include <iterator>
#include <numeric>
#include <vector>
 
template < typename T > 
T rnd ( )
{
   return (T)rand() / rand() - (T)rand() / rand();
}
 
template < typename T >
class is_negative : public std::unary_function < T, bool > {
public: bool operator () ( T x ) { return (x < 0); }
};
 
template < typename T >
class modul : public std::binary_function < T, T, bool > {
public: bool operator () ( float x, float y ) { return (std::fabs(x) < std::fabs(y)); }
};
 
int main()
{
   // generate array
   std::vector<float> v(6);
   std::generate_n(v.begin(), v.size(), rnd<float>);
   // display array
   std::copy(v.begin(), v.end(), std::ostream_iterator<float>(std::cout, "\n"));
   std::cout << "---" << std::endl;
   // find min
   std::cout << "min #: " << std::min_element(v.begin(), v.end()) - v.begin() << std::endl;
   // sum elements
   std::vector<float>::iterator it = std::find_if(v.begin(), v.end(), is_negative<float>());
   if(it != v.end())
   {
      std::vector<float>::iterator it2 = std::find_if(it + 1, v.end(), is_negative<float>());
      if(it2 != v.end())
         std::cout << "sum: " << std::accumulate(it + 1, it2, 0.0) << std::endl;
   }
   // sort
   std::sort(v.begin(), v.end(), modul<float>());
   // display array
   std::cout << "---" << std::endl;
   std::copy(v.begin(), v.end(), std::ostream_iterator<float>(std::cout, "\n"));
   std::cout << "---" << std::endl;
 
   system("pause");
}
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
02.06.2010, 11:38     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами #5

Не по теме:

Юююююху!



Добавлено через 3 минуты

Не по теме:

помоему с классами перебор))

fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
02.06.2010, 11:41     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами #6
Цитата Сообщение от neske Посмотреть сообщение
C++
1
2
int *min=std::min_element(MAS, MAS+size);
 int index=min-MAS;
лучше наверное для индексов использовать не int, а
C++
1
std::vector<float>::size_type

Не по теме:

учим STL вместе ^^

neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
02.06.2010, 11:44     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами #7
fasked, почему ты так массивы одномерный выводишь, в столбик так сказать?)
C++
1
std::copy(v.begin(), v.end(), std::ostream_iterator<float>(std::cout, "\n"));
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
02.06.2010, 11:45     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами #8
Цитата Сообщение от neske Посмотреть сообщение
помоему с классами перебор))
может быть, но иначе пришлось бы писать собственные сортировку и метод нахождения отрицательных чисел

Добавлено через 1 минуту
Цитата Сообщение от neske Посмотреть сообщение
почему ты так массивы одномерный выводишь, в столбик так сказать?)
видно лучше, по-моему, вещественные числа в строчку как-то плохо друг от друга пробелами отделяются
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2010, 12:20     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
02.06.2010, 12:20     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами #9
fasked, я вместо класса, сделал так, результат такой же.
C++
1
2
3
4
template < typename T >
class is_negative : public std::unary_function < T, bool > {
public: bool operator () ( T x ) { return (x < 0); }
};
C++
1
2
template <typename T >
T is_negative (T x) { return (x < 0); }
Добавлено через 9 минут
C++
1
2
template < typename T >
T modul (T x, T y) { return (fabs(x) < fabs(y)); }
Как ни странно, результат тот же, сам был поражен.

Добавлено через 14 минут
C++
1
2
template < typename T >
T modul (T x, T y) { return (fabs(x) < 1); }
Работает.
Yandex
Объявления
02.06.2010, 12:20     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами
Ответ Создать тему
Опции темы

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