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

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

Восстановить пароль Регистрация
 
Алена95
Сообщений: n/a
26.11.2013, 09:47     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами #1
В одномерном массиве,состоящем из n вещественных элементов, вычислить : 1.Номер минимального элемента массива
2.Сумма элементов массива, расположенных между первым и вторым отрицательными элементами. Преобразив массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает единицу, а потом - все остальное.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2013, 09:47     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Brain_Dead
 Аватар для Brain_Dead
9 / 8 / 2
Регистрация: 25.09.2013
Сообщений: 34
26.11.2013, 16:28     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Алена95 Посмотреть сообщение
Преобразив массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает единицу
Эти элементы расположены в произвольном порядке?

Цитата Сообщение от Алена95 Посмотреть сообщение
а потом - всё остальное
Тоже в произвольном порядке?

Добавлено через 1 час 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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
int minElemNumber(double*, int); //функция нахождения минимального элемента
void Transform(double*, int); //функция-преобразователь
double sumOtr(double*, int); //функция подсчета суммы
void printArr(double*, int); //функция, которая печатает массив
 
int main()
{
    double arr[12] = {1.0, -3.3, 0.8, -0.9, 11.3, -4.2, 8.3, 0.2, -80.2, 21.8, 40.3, -0.5};
 
    int k = minElemNumber(arr, 12); //вычислить минимальный элемент
    printf("k = %i\n", k); //вывести его
 
    printf("\n");
    printArr(arr, 12); //вывести исходный массив для проверки
 
    Transform(arr, 12); //преобразовать массив, выведя все элементы, по модулю меньшие 1, на первое место
    printf("\n");
    printArr(arr, 12); //вывести преобразованный массив
 
    double x = sumOtr(arr, 12); //сумма чисел между первым и вторым отр. элементами
    printf("\n"); 
    printf("x = %5.2Lf\n", x); //выводим её
 
    printf("Press any key to exit\n"); 
    _getch(); 
    return 0;
}
 
int minElemNumber(double* arr, int n)
{
    int numberofMinElement = 0;
    double minElement = arr[0];
    for(int i = 0; i < n; i++)
    {
        if(minElement > arr[i])
        {
            minElement = arr[i];
            numberofMinElement = i;
        }
    }
 
    return numberofMinElement;
}
 
void Transform(double* arr, int n)
{
    double temp; //дополнительная переменная для замены мест элементов массива
    for(int i = 0; i < n; i++)
    {
        if(fabs(arr[i]) <= 1)
        {   
            //если модуль числа не больше 1, оно отправляется на 1-е место, а остальные
            //элементы с меньшими номерами сдвигаются вправо на 1 место;
            for(int j = i; j > 0; j--)
            {
                //элемент меняется местом с элементом слева от себя
                temp = arr[j];
                arr[j] = arr[j-1];
                arr[j-1] = temp;
            }
        }
    }
}
 
double sumOtr(double* arr, int n)
{
    double sum = 0;
    int indicator = 0;
    for(int i = 0; i < n; i++)
    {
        //если индикатор = 1, то это второй отр. элемент - выходим из цикла
        if(arr[i] < 0 && indicator == 1)
        {
            break;
        }
        //находим первый отрицательный элемент
        if(arr[i] < 0)
        {
            indicator = 1;
            continue;
        }
        //если индикатор = 0, то отрицательных элементов ещё не было
        if(indicator == 0)
        {
            continue;
        }
        //сумма вычисляется, если индикатор равен 1 и ещё не попалось 2-го отрицательного элемента
        sum += arr[i];
    }
    return sum;
}
 
 
void printArr(double* arr, int n)
{
    for(int i = 0; i < n; i++)
    {
        printf("arr[%i]\t = %8.2Lf\n", i, arr[i]);
    }
}
MicM
 Аватар для MicM
820 / 487 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
26.11.2013, 17:48     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами #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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <iomanip>
#include <cmath>
using std::cout;
using std::setw;
 
const int n = 10;
 
int main()
{
    float a[n]={2.5, -1.6, 4.5, 0.5, -0.4, 1.3, 0.1, -0.9, 5.6, -1.2};
    int min = 0;
    cout <<setw(6) <<a[0];
    for (int i=1; i<n; i++)
    {
        cout <<setw(6) <<a[i];
        if (a[i]<a[min])
            min = i;
    }
    int one = 0,two;
    float sum = 0;
    while (a[one]>=0)
        ++one;
    two=one+1;
    while (a[two]>=0)
        ++two;
    for (int i=one+1; i<=two-1; i++)
        sum+=a[i];
    cout <<"\nNumber min: " <<min <<'\n'
              <<"Summa: " <<sum <<'\n';
    float tmp = 0;
    int j = 0;
    for (int i=0; i<n; i++)
        if (fabs(a[i])<=1)
        {
            tmp = a[i];
            a[i] = a[j];
            a[j] = tmp;
            j = j + 1;
        }
    for (int i=0; i<n; i++)
        std::cout <<setw(6) <<a[i];
    return 0;
}
Yandex
Объявления
26.11.2013, 17:48     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами
Ответ Создать тему
Опции темы

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