Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
_Fake_
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 20
1

Вычислить сумму элементов массива, расположенных после минимального элемента

25.02.2016, 18:21. Просмотров 340. Ответов 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
#include "stdafx.h"
#include <math.h>
#include <locale.h>
#include <cstdlib>
#include <cmath>
 
 
int _tmain()
{
    setlocale(LC_ALL, "rus");
    int i, n;
    int null = 0;
    int sp;
    int j, x;
    printf("Определите способ ввода массива:\n");
    printf("1-ввод с экрана\n2-случайные значения\n");
    scanf("%d", &sp);
    printf("Введите количество элементов в массиве\n");
    scanf("%d", &n);
    //контрольный вывод
    printf("\nМассив\n\n");
 
    //Вывод
 
    double *a = new double[n];
    if (sp == 1)
    {
        for (i = 0; i < n; i++)
        {
            printf("№ %d\t", i);
            scanf("%lf", &a[i]);
        }
    }
    if (sp == 2)
    {
        for (i = 0; i < n; i++)
        {
            a[i] = rand() % 20 - 10;
            printf("№ %d\t%lf\n", i, a[i]);
        }
    }
 
    //отриц, эл.
 
    for (i = 0; i < n; i++)
    {
        if (a[i] == 0) null++;
    }
 
    //Мин. Элемент
 
    int nach=0, minN=0;
    for (i = 1; i < n; i++)
    {
        if ((a[i]) < (a[nach])) minN = i, nach = i;
    }
 
    //сумма
 
    double sum=0;
    for (i = minN+1; i < n; i++)
    {
        sum += (a[i]);
    }
 
                                                
    //Сортировка
 
    printf("\nСортированный массив\n\n");
    for (i = 1; i < n; ++i)
    {
        x =abs(a[i]);
        for (j = i - 1; j >= 0 && abs(a[j])> x; --j) 
            a[j + 1] = a[j];
        a[j + 1] = x;   
    }
    for (j = 0; j < n; j++)
    {
        printf("№ %d\t%lf\n", j, a[j]);
    }
    printf("\nНумерация начинается с 0 !\n");
    //контрльный вывод
    printf("Количество элементов массива равных нулю %d\n", null);
    if (minN == n - 1) printf("Минимальный элемент массива является последним элементом массива\n");
    else printf("Сумма элементов массива, находящихся после минимального по модулю\nравна: %lf\n", sum);
    delete[]a;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2016, 18:21
Ответы с готовыми решениями:

Вычислить сумму элементов массива, расположенных после минимального элемента
В одномерном массиве, состоящем из n вводимых с клавиатуры целых элементов, вычислить сумму...

Вычислить сумму элементов массива, расположенных после минимального элемента
Помогите: написать программу по обработке одномерных массивов при помощи функции random().Найти...

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

Вычислить сумму элементов массива, расположенных после минимального элемента
В одномерном массиве, состоящем из n вводимых с клавиатуры целых элементов, вычислить сумму...

Вычислить сумму модулей элементов массива, расположенных после минимального по модулю элемента
В одномерном массиве, состоящем из n вводимых с клавиатуры целых элементов, вычислить сумму модулей...

5
Dastan4ik
62 / 62 / 55
Регистрация: 18.10.2014
Сообщений: 190
Завершенные тесты: 2
25.02.2016, 18:40 2
Почему не правильно?
0
Арен
16 / 16 / 12
Регистрация: 27.05.2014
Сообщений: 132
25.02.2016, 18:50 3
_Fake_,
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
#include <iostream>
using namespace std;
int main()
{
    int const n = 10;
    int m[n];
    for (int i = 0; i < n; i++)
    {
        cin >> m[i];
    }
    int min = m[0];
    for (int i = 0; i < n; i++)
    {
        if (m[i] < min)
        {
            min = m[i];
        }
    }
    for (int j = 1; j < n; j++)
    {
 
        for (int i = 0; i < n - j; i++)
        {
            if (m[i]>m[i + 1])
            {
                swap(m[i], m[i + 1]);
            }
        }
    }
    int sum = 0;
    for (int i = 0; i < n; i++)
    {
        if (m[i]!=min)
        sum+= m[i];
    }
    cout << sum << endl;
    
 
 
}
P.S. Мой вариант, ваш не проверил.
0
_Fake_
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 20
25.02.2016, 19:10  [ТС] 4
Dastan4ik, Идет счет суммы после минимального, а не после минимального по модулю.

Добавлено через 13 минут
Арен, Ваша программа считает сумму всех членов (кроме минимального), а нужна сумма после минимального.
0
Арен
16 / 16 / 12
Регистрация: 27.05.2014
Сообщений: 132
25.02.2016, 19:13 5
_Fake_, Он считает сумму кроме минимального, то есть сначала вводим элементы, он сортирует и выводит в конечном счете ту сумму, которая нам нужна.
0
_Fake_
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 20
25.02.2016, 19:18  [ТС] 6
Простите, загнался. Все впорядке с моей программой. Она считает сумму элементов находящихся после минимального элемента, как ей и положено. Просто по ошибке, посмотрел другое задание и добавил в комментарий "по модулю".

Но если бы требовалось посчитать сумму элементов после минимального модуля, Как бы это выглядело?
0
25.02.2016, 19:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2016, 19:18

Вычислить сумму модулей элементов массива, расположенных после минимального по модулю элемента
В одномерном массиве, состоящем из n вводимых с клавиатуры целых элементов, вычислить сумму модулей...

Вычислить сумму модулей элементов массива, расположенных после минимального по модулю элемента
В одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить...

Вычислить сумму модулей элементов массива, расположенных после минимального по модулю элемента
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;conio.h&quot; #include &quot;locale.h&quot; #include...


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

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

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