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

Найти сумму элементов массива, удалить из него все элементы, модуль которых не превышает 1 - C++

25.01.2017, 20:17. Просмотров 179. Ответов 6
Метки нет (Все метки)

Помогите, пожалуйста
1. Найти сумму элементов массива с нечетными номерами.
2. Найти сумму элементов массива, расположенных между первым и последним отрицательными элементами.
3. Удалить из него все элементы, модуль которых не превышает 1, освободившиеся в конце массива элементы заполнить нулями.
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
int main()
{
 
    setlocale(LC_ALL, "Russian");
 
    int i, n, f, l;
    double sum_odd = 0, sum_mid = 0, sumz = 0;
    cout << "Введите количество элементов: " << endl;
    cin >> n;
    double *mas = new double[n];
    cout << "Введите массив: " << endl;
    for (int i = 0; i < n; i++)
    {
        cin >> mas[i];
    }
    
    for (i = 0; i<5; i++)
        if (i % 2)
            sum_odd += mas[i];
    cout << "\nсумма нечётных: " << sum_odd << endl;
 
    
    //сумма элементов с нечетными номерами
    for (i = 0; i<n; i++)
        if (i % 2)
            sum_odd += mas[i];
    cout << "\nсумма нечётных: " << sum_odd << endl;
    
    //первый и последний отрицательный элемент
    for (f = 0; f < 10; f++)
    {
        if (mas[f] < 0) break;
    }
    for (l = 5; l > f; l--)
    {
        if (mas[l] < 0) break;
    }
    for (i = f + 1; i < l; i++)
    {
        sumz += mas[i];
    }
    cout << "первый и последний отрицательный элемент: " << sumz << "\n";
    
    //Удаление элементов массива, модуль которых не превышает единицу
    int t = -1;
    int n2 = n;
    while (t < n2)
    {
        i++;
        if (abs(mas[i]) <= 1)
        {
            for (int j = t; j < n2 - 1; j++)
                mas[j] = mas[j + 1];
            t--;
            n2--;
        }
    }
    //Заполняем нулями
    i = n;
    int sum = -1;
    while (sum < n - n2)
    {
        mas[i] = 0;
        i--;
        sum++;
    }
    //Вывод массива на консоль
    for (int i = 0; i < n; i++)
    {
        cout << mas[i] << " ";
    }
    cout << endl;
    
    system("pause");
    return 0;
}
Заранее спасибо
http://www.cyberforum.ru/cpp-beginners/thread679931.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2017, 20:17
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти сумму элементов массива, удалить из него все элементы, модуль которых не превышает 1 (C++):

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

Сжать массив, удалив из него все элементы, модуль которых не превышает 1
Здравствуйте. Задача такая: П.5.16.Правил Запрещено создавать темы с...

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

Cжать массив, удалив из него все элементы, модуль которых не превышает 1
const float N=10; float array={3.24, -0.16, 2.28, -0.16, -3.22, 7.14, 0.88,...

Сжать массив, удалив из него все элементы модуль которых не превышает 1. Заполнить эти элементы нулями
Во время перестановки, когда первый 0 достигает конца массива, выскакивает...

6
Байт
Эксперт C
17764 / 11789 / 2449
Регистрация: 24.12.2010
Сообщений: 23,710
25.01.2017, 21:54 #2
Цитата Сообщение от DEMONVoz Посмотреть сообщение
Помогите,
А что именно не так? Пункт 1, похоже, сделан верно. Только небольшое улучшение
C++
1
2
for (i = 1; i<n; i+=2)
            sum_odd += mas[i];
Добавлено через 7 минут
Цитата Сообщение от DEMONVoz Посмотреть сообщение
//первый и последний отрицательный элемент
Тут да, не все хорошо...
C++
1
2
3
4
5
6
7
8
9
int iLast = -1, iFirst = -2;
for(f = 0; f < n; f++) {
  if (mas[f] <0) {
    iLast = f;
    if (iFirst <0) iFirst = f;
  }
}
for(i=iFirst+1; i<iLast; i++)
  sumz += mas[i];
0
Nikikida
0 / 0 / 1
Регистрация: 04.03.2015
Сообщений: 4
25.01.2017, 23:14 #3
Лучший ответ Сообщение было отмечено DEMONVoz как решение

Решение

А вот остальное
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//Удаление элементов массива, модуль которых не превышает единицу
    int t = 0, n2 = n;
    while (t < n2)
    {
        if (abs(mas[t]) <= 1)
        {
            for (int j = t; j < n2 - 1; j++)
                mas[j] = mas[j + 1];
            if(abs(mas[t])==1) t--;
            n2--;
        }
        t++;
    }
    //Заполняем нулями
    i = n - n2;
    int sum = 0;
    while (n2 < n)
    {
        mas[n2] = 0;
        n2++;
    }
0
DEMONVoz
0 / 0 / 3
Регистрация: 23.11.2016
Сообщений: 18
25.01.2017, 23:16  [ТС] #4
C++
1
2
 iLast = f;
    if (iFirst <0) iFirst = f;
где вы нашли такое? О_о
0
Nikikida
0 / 0 / 1
Регистрация: 04.03.2015
Сообщений: 4
25.01.2017, 23:19 #5
А что именно тут не ясно?
Ясли число отрицательное, индекс попадает в iLast
Если вхождение отрицательного первое, то еще и в iFirst
0
Байт
25.01.2017, 23:24
  #6

Не по теме:

Цитата Сообщение от Nikikida Посмотреть сообщение
Ясли число
Симпатичная описочка. Можно в коллекцию взять?

0
Nikikida
25.01.2017, 23:27     Найти сумму элементов массива, удалить из него все элементы, модуль которых не превышает 1
  #7

Не по теме:

Берите на здоровье!
Только осваиваю слепую печать

0
25.01.2017, 23:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2017, 23:27
Привет! Вот еще темы с ответами:

Cжать массив, удалив из него все элементы, модуль которых не превышает единицы
Дан массив из n-элементов ( веществ. числа), нужно: - сжать массив, удалив из...

Сжать массив, удалив из него все элементы, модуль которых не превышает единицу
Задание: Сжать массив, удалив из него все элементы, модуль которых не...

Сжать массив, удалив из него все элементы. модуль которых не превышает, заданного числа.
Дан одномерный массив. Сжать массив, удалив из него все элементы. модуль...

В начале массива расположить все элементы, модуль которых не превышает 1, а после них - все остальные
Ребят, помогите, пожалуйста! Нужно написать программу в С++ для решения задачи:...


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

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

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