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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Пропозициональная формула http://www.cyberforum.ru/cpp-beginners/thread1019306.html
Написать программу для реализации следующего алгоритма определения является ли данная строка символов пропозициональной формулой или нет: шаг 1. Проверка скобочного итога формулы. шаг 2. Проверка того, что первый символ открывающаяся скобка, а последний- закрывающаяся. В случае выполнения условия, удалить внешние скобки. шаг 3. Если первый символ отрицание, то удалить его и повторить шаг 2....
C++ Выполнить сортировку массива с помощью стандартной функции быстрой сортировки qsort 2. Выполнить сортировку массива с помощью стандартной функции быстрой сортировки qsort, прототип которой находится в заголовочном файле сstdlib (написать для нее функцию сравнения, которая передается в качестве параметра, и заполнить таблицу строк). помогите написать программу с помощи с++ http://www.cyberforum.ru/cpp-beginners/thread1019297.html
Вывод содержимого файла C++
Есть программа, вот код: #include <iostream> #include <fstream> using namespace std; struct Abon { char name; int god; char janr;
C++ замена типа
в файле много структур, у некоторых полей из них тип uint т.е. unsigned int но ide не может понять такую запись... если не ошибаюсь через #define это делается?
C++ Решение уравнения http://www.cyberforum.ru/cpp-beginners/thread1019273.html
Пожалуйста мне надо решить уравнение tgx=thx. Надо показать, что корней бесконечно, и найти приблизительные значения корней. Желательно надо сделать на С++
C++ Судоку си++ Подскажите пожалуйста как правильно создать таблицу 9*9 для ввода значений? подробнее

Показать сообщение отдельно
Brain_Dead
 Аватар для Brain_Dead
9 / 8 / 2
Регистрация: 25.09.2013
Сообщений: 34
26.11.2013, 16:28     Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами
Цитата Сообщение от Алена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]);
    }
}
 
Текущее время: 19:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru