-1 / 0 / 0
Регистрация: 29.09.2019
Сообщений: 175
1

Надо сдвинуть все нули массива в конец

08.10.2019, 21:23. Показов 1297. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сдвинуть все нули массива в конец.
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
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int sum = 0;
    int maxi=0;
    setlocale (LC_ALL, "Russian");
    cout << "Введите размерность массива:" << endl;
    int a;
    cin >> a;
    while (a < 0) { 
        cout << "Ошибка. Должен быть больше 0."<<endl;
        cin >> a;
    }
    int* mas = new int[a];
    cout << "Заполните массив" << endl;
    for (int i = 0; i < a; i++)
        {
        cout << "[" << i + 1 << "]" << ":";
        cin >> mas[i];
        }
    int max = mas[0];
    for (int i = 0; i < a; i++)
    {
        if (mas[i] > max)
        {
            max = mas[i];
        }
 
    }
    cout << "Максимальный елемент= " << max<<endl;
    for (int i = 0; i < a; i++)
      {
        if (mas[i] > 0)
        {maxi = i;}
      }
    for (int i=0; i<maxi; i++)
         {
        sum=mas[i]+sum;
         }
    cout<<"Сума элементов массива до последнего положительного= "<<sum<<endl;
    int n1, n2;
    cout << "Введите интервал, и все числа, модуль которых попадает в него, удаляться. Массив сожметься и пустые ячеки заполняться нулями" << endl;
    cout << "От ";
    cin >> n1;
    cout << " До ";
    cin >> n2;
    for (int i=0;i<a;i++)
    {
        if (abs(mas[i]) > n1 && abs(mas[i]) < n2)
        {
            
                           mas[i]=0;
            
        }
        else(mas[i] = mas[i]);
    }
    
 
    for(int i=0;i<a;i++)
    {
        cout << mas[i] << endl;
    }
    
    
    
    
    
    return 0;
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2019, 21:23
Ответы с готовыми решениями:

Переместить в конец двумерного массива все нули
Все нули из введенной с клавиатуры матрицы необходимо переместить в конец. Пытался сделать...

Как убрать из одномерного массива нули, и всё последующие за нулями цифры сдвинуть?
Как убрать из одномерного массива нули, и всё последующие за нулями цифры сдвинуть? Вот к примеру...

Заменить повторяющиеся элементы рандомного массива на нули и вывести их в конец массива
Заменить повторяющиеся элементы рандомного массива на нули и вывести полученные нули в конец...

Добавить в конец массива элементы, расположенные между min и max элементами исходного массива, исключая нули
добавить в конец массива элементы, расположенные между минимальными и максимальными элементами...

4
817 / 504 / 211
Регистрация: 19.01.2019
Сообщений: 1,196
08.10.2019, 22:54 2
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
#include <iostream>
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    std::cout << "Введите размер массива:" << '\n';
    int size;
    std::cin >> size;
    while (size < 0) {
        std::cout << "Ошибка. Размер должен быть больше 0." << '\n';
        std::cin >> size;
    }
 
    int* arr = new int[size];
    int* arr_end = arr + size;
    std::cout << "\nЗаполните массив:" << '\n';
    for (int* it = arr; it != arr_end; ++it) {
        std::cin >> *it;
    }
 
    int* max = arr;
    for (int* it = arr; it != arr_end; ++it) {
        if (*it > *max) {
            max = it;
        }
    }
    std::cout << "\nМаксимальный элемент = " << *max << '\n';
 
    int sum = 0;
    int* lastPos = arr_end - 1;
    for (; lastPos != arr - 1 && *lastPos <= 0; --lastPos);
    for (int* it = arr; it != lastPos; ++it) {
        sum += *it;
    }
    std::cout << "\nСумма элементов массива до последнего положительного = " << sum << '\n';
 
    int n1, n2;
    std::cout << "\nВведите интервал, и все числа, модуль которых попадает в него, удалятся. Массив сожмётся и пустые ячейки заполнятся нулями" << '\n';
    std::cout << "От ";
    std::cin >> n1;
    std::cout << "До ";
    std::cin >> n2;
    if (n1 > n2) {
        std::swap(n1, n2);
    }
    int *it1, *it2;
    for (it1 = it2 = arr; it2 != arr_end; ++it2) {
        if (abs(*it2) < n1 || abs(*it2) > n2) {
            *it1++ = *it2;
        }
    }
    memset(it1, 0, sizeof(int) * (arr_end - it1));
 
    for (int* it = arr; it != arr_end; ++it) {
        std::cout << *it << ' ';
    }
    std::cout << '\n';
 
    delete[] arr;
    return 0;
}
0
Модератор
Эксперт С++
13502 / 10754 / 6409
Регистрация: 18.12.2011
Сообщений: 28,699
09.10.2019, 06:47 3
OxepeHeH, какое отношение приведенный код имеет к заданному вопросу?
Не вижу Ваших попыток решить этот вопрос.
0
"C with Classes"
1645 / 1402 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
09.10.2019, 07:56 4
OxepeHeH, нужно просто отсортировать по убыванию.
0
820 / 623 / 321
Регистрация: 24.02.2017
Сообщений: 2,203
09.10.2019, 08:57 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <sstream>
using namespace std;
 
int main(){
 stringstream s ;
 double arr [10]={1.2,0,-2.6,3,0,4,0,5,0,6};
 
  for(int i=0;i<10;i++)
    if(arr[i]!=0){
       s<<arr[i];
       s<<' ';
       arr[i]=0;
    }
  for(int i=0;i<s.str().length()-1;i++)
     s>>arr[i];
  for(int i=0;i<10;i++)
   cout<<arr[i]<<"  ";
  system("pause");
  return 0;
}
0
09.10.2019, 08:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2019, 08:57
Помогаю со студенческими работами здесь

Сортировка массива по возрастанию, нули записать в конец
Не могу справиться с заданием: В массиве X(N) каждый элемент равен 0, 1 или 2. Переставить...

Удалить из массива целых чисел все нули. Сформировать два новых массива. В первый переписать все элементы данного массива с четными номерами, во второ
Удалить из массива целых чисел все нули. Сформировать два новых массива. В первый переписать все...

Переместить в конец матрицы все нули. Подскажите как довести до ума
Дан массив 5*5 нужно все 0 переместить в конец матрицы пока что получается только в конец строки....

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


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

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

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