Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

В одномерном массиве, состоящем из N вещественных элементов, вычислить - C++

20.08.2013, 14:25. Просмотров 730. Ответов 9
Метки нет (Все метки)

В одномерном массиве, состоящем из N вещественных элементов, вычислить:
1) номер минимального элемента массива;
2) сумму элементов массива, расположенных между первым и вторым отрицатель¬ными элементами.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2013, 14:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В одномерном массиве, состоящем из N вещественных элементов, вычислить (C++):

В одномерном массиве, состоящем из n вещественных элементов, вычислить: - C++
Уважаемые знатоки С и С++. Думаю, вы понимаете, что высшее образование обязывает быть грамотным, но знать ВСЕ нереально. Мне нужна помощь....

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

В одномерном массиве, состоящем из n вещественных элементов, вычислить: - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) количество элементов массива, лежащих в диапазоне от А до В; ...

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

В одномерном массиве, состоящем из n вещественных элементов, вычислить - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить -сумму элементов массива с нечетными номерами; -сумму элементов...

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

9
Maxak
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 47
20.08.2013, 14:40 #2
Цитата Сообщение от akimlegend Посмотреть сообщение
В одномерном массиве, состоящем из N вещественных элементов, вычислить:
1) номер минимального элемента массива;
2) сумму элементов массива, расположенных между первым и вторым отрицатель¬ными элементами.
1) Сортировка пузырьком например, на 0 месте будет стоять минимальный элемент.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template< class T >
void bubbleSort(T* arr, int size)
{
    T tmp;
 
    for(int i = 0; i < size - 1; ++i) // i - номер прохода
    {            
        for(int j = 0; j < size - 1; ++j) // внутренний цикл прохода
        {     
            if (arr[j + 1] < arr[j]) 
            {
                tmp = arr[j + 1]; 
                arr[j + 1] = arr[j]; 
                arr[j] = tmp;
            }
        }
    }
}


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
double SumBetwenTwo(T* arr, int size)
{
double sum = 0;
int i=0;
int flag=0;
do
{
i++;
 
if(T[i]<0){ 
while(T[i+1]>0)
{
sum+=T[i+1];
i++;
}
flag = 1;
}
else{
sum=0;
}
}while(!flag&&(i<(size-1));
 
return sum;
}
0
fatalis
8 / 8 / 1
Регистрация: 09.08.2013
Сообщений: 68
20.08.2013, 15:32 #3
Искать минимальный елемент массива за O(n^2) это все же моветон )
C++
1
2
3
4
min=A[0]
for (i=0;i<n;i++)
 if(A[i]<min)
  min=A[i]
1
Catstail
Модератор
22838 / 11204 / 1812
Регистрация: 12.02.2012
Сообщений: 18,439
20.08.2013, 16:02 #4
Цитата Сообщение от Maxak Посмотреть сообщение
Сортировка пузырьком например, на 0 месте будет стоять минимальный элемент.
- применять для этого сортировку КРАЙНЕ НЕРАЦИОНАЛЬНО! Найти номер минимального элемента нужно делать простым перебором (за время O(n)), а пузырьковая сортировка - это O(n2). Но самое главное - сортировка здесь - вообще "не в дугу" - ведь при сортировке нумерация элементов нарушается. Минимальный будет первым (или последним), а нужно найти его номер в исходном массиве.

Добавлено через 20 минут
Вот полное решение:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream.h>
 
int main(int argc, char* argv[])
{
    int Arr[]={5,6,-7,8,9,-5,5,-9,0};
    int i,k=-1,imin=0,s=0;
    for (i=0; i<sizeof(Arr)/sizeof(int); i++)
    {
        if (Arr[i] < 0)
            if (k < 0) 
                k=-k;
            else
                k=0;
        if ((k > 0) && (Arr[i] >= 0))  s+=Arr[i];
        if (Arr[i] < Arr[imin]) imin=i;
    }
    cout << "sum =" << s << endl;
    cout << "imin=" << imin << endl;
    return 0;
}
Вывод:

sum=17
imin=7
0
Somebody
2791 / 1602 / 147
Регистрация: 03.12.2007
Сообщений: 4,199
Завершенные тесты: 1
20.08.2013, 16:17 #5
C++
1
2
3
4
5
6
7
const size_t N = 6;
double a[N] = {1, -2, 3, -6, 5, 8};
double min = *std::min_element(std::begin(a), std::end(a));
auto predicate = [](double x){ return x < 0; };
auto firstNegative = std::find_if(std::begin(a), std::end(a), predicate);
auto secondNegative = std::find_if(firstNegative + 1, std::end(a), predicate);
double sum = std::accumulate(firstNegative + 1, secondNegative, 0);
1
Catstail
Модератор
22838 / 11204 / 1812
Регистрация: 12.02.2012
Сообщений: 18,439
20.08.2013, 16:28 #6
Somebody, твое решение короче, но работать будет дольше... (два вызова find_if). К тому же, нужно было найти не минимальный элемент, а его номер.

Но и я не без греха: сделал для массива типа int, а нужно было выбрать double. Впрочем, это легко исправить.
0
MickeyBlueEyes
Студент
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
20.08.2013, 16:32 #7
Только у меня когда вижу ключевое слово "auto" происходит что-то неимоверное внутри ?)
0
Croessmah
20.08.2013, 16:35
  #8

Не по теме:

Цитата Сообщение от MickeyBlueEyes Посмотреть сообщение
Только у меня когда вижу ключевое слово "auto" происходит что-то неимоверное внутри ?)
А что в нем неимоверного?

0
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
20.08.2013, 16:42 #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <algorithm>
#include <numeric>
#include <functional>
#include <iostream>
#include <array>
 
int main()
{
    const int N = 10;
    std::array<double, N> arr = { 1, -1, 3, 4, -5, 6, -7, 8, 9, 10 };
    
    std::function<bool(double)> pred = [](double elem) { return (elem < 0) ? true : false; };
    
    auto fneg = std::find_if(arr.begin(), arr.end(), pred)+1;
    auto sneg = std::find_if(fneg, arr.end(), pred);
    
    std::cout << "Min Pos: " << std::distance(arr.begin(), std::min_element(arr.begin(), arr.end()));
    std::cout << "\nNeg Sum: " << std::accumulate(fneg, sneg, 0) << std::endl;
 
    return 0;
}
Добавлено через 44 секунды

Не по теме:

опоздал.

0
Somebody
2791 / 1602 / 147
Регистрация: 03.12.2007
Сообщений: 4,199
Завершенные тесты: 1
20.08.2013, 16:45 #10
Цитата Сообщение от Catstail Посмотреть сообщение
но работать будет дольше... (два вызова find_if)
Второй find_if ищет, начиная с firstNegative + 1.
Цитата Сообщение от Catstail Посмотреть сообщение
нужно было найти не минимальный элемент, а его номер
OK
C++
1
std::size_t minElementIndex = std::min_element(std::begin(a), std::end(a)) - std::begin(a);
Цитата Сообщение от Catstail Посмотреть сообщение
твое решение короче, но работать будет дольше
Тут сложно сказать. Если массив огромный, то он, конечно, ко второму проходу может из кеша вылететь. Но ведь неизвестно, какие оптимизации используются. Например, простые циклы без лишних if'ов векторизовать легче.
1
20.08.2013, 16:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2013, 16:45
Привет! Вот еще темы с ответами:

В одномерном массиве, состоящем из N вещественных элементов, вычислить: - C++
Помогите мальчишки, я искала, но ничего на форуме подобного не нашла В одномерном массиве, состоящем из N вещественных элементов,...

В одномерном массиве,состоящем из n вещественных элементов,вычислить: - C++
В одномерном массиве,состоящем из n вещественных элементов,вычислить : 1) кол-во отрицательных элементов; 2) сумму модулей элементов...

C++ в одномерном массиве ,состоящем из n вещественных элементов вычислить: - C++
C++ в одномерном массиве ,состоящем из n вещественных элементов вычислить: a) номер минимального элемента массива , b) сумму элементов...

В одномерном массиве,состоящем из N вещественных элементов,вычислить: - C++
В одномерном массиве,состоящем из N вещественных элементов,вычислить: 1)количество элементов массива,равных 0 2)сумму эл-ов...


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

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

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