Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 2
Регистрация: 27.10.2015
Сообщений: 35
1

Поиск нулевых элементов и перенос их в начало одномерного массива

15.09.2016, 13:28. Показов 721. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть код, создающий массив, происходит поиск минимального элемента, первого и последнего положительных элементов и выводящий сумму между ними, Вопрос: код должен сортировать массив таким образом, чтобы вс нулевые элементы были в начале, затем все остальные, код же выводит в начале два нуля, теряет первый элемент, как можно исправить ?
Пы.Сы: например массив 1 2 3 0 4 5 6 7 8 9, код должен вывести 0 1 2 3 4 5 6 7 8 9, он же выводит 0 0 2 3 4 5 6 7 8 9
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
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    const int size = 10;
    double arr[size];
    double sum;
    double min;
    int i, j;
 
 
    for (i=0; i<size; i++)
    {
        cout << " Массив размера n: " << endl;
        for(i = 0; i < size; i++)
            { 
                arr[i] = rand() % 100; 
                cout << arr[i] << "  ";
            }
 
    //Find the minimum element
    for (i = 0, min = arr[0]; i < size; i++)
        if (arr[i] < min)
            min = arr[i];
 
    // поиск первого положительного элемента
    for (i = 0; i < size && arr[i] <= 0; i++)
        ;
    sum = 0; // если нет вообще положительных элементов
 
    //поиск последнего положительного элемента
    if ((i < size - 2) && (arr[i]>0)) // а есть ли смысл?
    {
        for (j = size - 1; j >= 0 && arr[j] <= 0; j--)
            ;
        if ((arr[j] > 0) && (--j > i))
            while (j > i)
            {
            // сумма элементов между первым и последним положительным
            sum += arr[j--];
            }
    }
 
    for (i=j=size-1; i>0; --i)
    {
        if (arr[i]!=0)
        {
            if (i!=j)
                arr[j]=arr[i];
            --j;
        }
    }
 
    for (i=0; i<=j; i++) //Заполним начало нулями
        arr[i]=0;
 
    //Печать нового массива
        cout << endl;
 
        //
        
 
//
 
 
 
        cout << "Отсортированный: " << endl;
        for(i=0;i<size;i++)
        {
            if (arr[i]==0)
            {
             if(i!=0)
                {
                    for(j=i;j>0;j--)
                    arr[j]=arr[j-1];
                }
            }
        }
 
    for(i=0; i<size; i++){
    cout << arr[i] << "  ";}
    cout << endl;
    cout << "Min element = " << min << endl;
    cout << "Сумма между первым и последним положительным= ";
    cout << sum << endl;
 
 
    system("pause");
    return 0;
    
}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2016, 13:28
Ответы с готовыми решениями:

Подсчёт произведени нулевых элементов одномерного массива
Ребят я не могу понять как это?? Можно пожалуйста пример кода? Мне в общем то надо вот в этой...

Выделение последовательности ненулевых и нулевых элементов (вперемешку) из одномерного массива данных
Добрый день, уважаемые участники форума! Часто читал Ваши дискуссии, почерпнул много полезного. И...

Вывод на экран количества нулевых элементов одномерного динамического массива и их порядковых номеров
Помогите решить задачу! Разработать метод для вывода на экран количества нулевых элементов...

Поиск одинаковых элементов одномерного массива
Помогите сделать поиск одинаковых элементов одномерного массива С++ for (int i = k; i &lt;= n; i++)...

1
385 / 279 / 478
Регистрация: 09.05.2014
Сообщений: 769
15.09.2016, 15:57 2
Misye_kot3, в строчке 47
C++
1
   for (i=j=size-1; i>=0; --i)
0
15.09.2016, 15:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2016, 15:57
Помогаю со студенческими работами здесь

Поиск максимального среди отрицательных элементов одномерного массива
Доброго времени суток! Задача следующая: В массиве Х, содержащем 14 элементов, определить...

Вставка в начало одномерного массива
Добрый день Подскажите в чём я не прав при вставке в начало массива Вставить хочу 2 цифры - 9...

Найти число элементов между первым и вторым нулевыми элементами массива
в массиве x (m) найти число элементов между первым и вторым нулевыми элементами

Найти произведение ненулевых элементов и количество нулевых элементов одномерного массива
Здравствуйте! Помогите, пожалуйста, сделать программу в Лазарусе 1. Дан одномерный массив. Найти...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru