0 / 0 / 0
Регистрация: 17.10.2018
Сообщений: 51

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

05.12.2018, 01:21. Показов 7006. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан массив вещественных чисел, содержащий 20 элементов. Записать в этот же массив сначала все положительные числа, а затем все отрицательные числа и нули, сохраняя порядок их следования.

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

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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main()
{
    srand(time(nullptr));
    int n=20;
    int *mas = new int [n];
    int tmp = 0;
    cout<<"IN: ";
    for(int i = 0; i < n; i++)
    {
        mas[i] = rand()%9-5;
        cout<<mas[i]<<" ";
    }
    for(int i = 0 ; i < n; i++)
    {
        if(mas[i]>0)
        {
            mas[tmp] = mas[i];
            tmp++;
        }
    }
    for(int i = 0 ; i < n; i++)
    {
        if(mas[i]<0)
        {
            mas[tmp] = mas[i];
            tmp++;
        }
    }
        for(int i = 0 ; i < n; i++)
    {
        if(mas[i]==0)
        {
            mas[tmp] = mas[i];
            tmp++;
        }
    }
    cout<<endl<<"OUT: ";
    for(int i = 0 ; i < n; i++)
        cout<<mas[i]<<" ";
    cout << endl;
    system("pause");
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2018, 01:21
Ответы с готовыми решениями:

Записать в данный массив сначала все отрицательные числа и нули, затем все положительные, сохраняя порядок их следования
Здравствуйте! Прошу вас о помощи! Помогите пожалуйста написать код программы! &quot;Дан массив чисел, содержащий n элементов. Записать в...

Расположить сначала все отрицательные элементы, затем положительные и нули, сохраняя первоначальный порядок их
Если организовать такой цикл и такую &quot;сортировку&quot;, то все отрицательные встают &quot;перед&quot; остальными, сохраняя свой порядок, как и...

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

10
 Аватар для alkl
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
05.12.2018, 01:34
Небольшие замечания :
1. У Вас не вещественные числа.
2. Зачем тут нужен дин. массив ?
3. Где delete ?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.12.2018, 01:37
VoronReki, нужны сначала положительные, а потом все остальные, правильно Вас понял ?
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
#include <iostream>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int k=0;
    const int n = 20;
    double a[n];
    
    for (int i = 0; i < n; i++)
    { 
    a[i]=rand()%19 - 9; 
    cout <<a[i]<<" ";       
    }       
    cout << endl;     
      
    for (int i = 0; i < n; i++)
        if (a[i]>0)
        {
            for (int j = i; j > k; j--)
            swap(a[j],a[j-1]);
            k++;
        }
        
    for (int i = 0; i < n; i++)
      cout <<a[i]<<" ";
      cout <<endl; 
     
system("pause");
return 0;
}
1
 Аватар для alkl
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
05.12.2018, 01:37
Для простоты, создайте ещё один массив, в который будете укладывать выходные значения. Тяжелее будет запутаться.
0
0 / 0 / 0
Регистрация: 17.10.2018
Сообщений: 51
05.12.2018, 01:53  [ТС]
1. отлажу алгоритм здесь, поменять на double не сложно.
2. чтобы не набирать каждый раз
3. добавить его несложно, в конце, когда код заработает.

Добавлено через 1 минуту
есть второй массив.
В консоли выводятся две строки: первая созданный несортированный, вторая - отсортированный

Добавлено через 2 минуты
Спасибо за ответ, но не могли бы вы пояснить где были ошибки в моем коде, мне сложно самому понять, а понимание надо, чтобы избежать на будущее, чтобы было понимание, а не зубрежка.
0
 Аватар для alkl
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
05.12.2018, 01:53
Цитата Сообщение от VoronReki Посмотреть сообщение
есть второй массив.
Не нахожу его в Вашем коде.
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
05.12.2018, 01:55
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
// Дан массив вещественных чисел, содержащий 20 элементов.Записать в этот же массив сначала все 
// положительные числа, а затем все отрицательные числа и нули, сохраняя порядок их следования.
 
#include <iostream>
#include <iomanip>
#include <ctime>
 
using namespace std;
 
const size_t SIZE = 20;
 
double arr[SIZE];
 
int main() {
 
    srand((unsigned int)time(NULL));
 
    // инициализация
    for (size_t i = 0; i < SIZE; ++i)
        arr[i] = rand() % 201 - 100;
 
    // вывод на консоль
    for (size_t i = 0; i < SIZE; ++i)
        cout << setw(4) << arr[i];
    cout << endl;
 
    // сортировка
    size_t index_after_positives = 0;
    for (size_t i = 0; i < SIZE; ++i) {
        if (arr[i] > 0) {
            if (index_after_positives == i) {
                ++index_after_positives;
            }
            else {
                // сохранить очередной положительный элемент
                double tmp = arr[i];
                // сдвинуть значения между index_after_positives и i вправо на одну позицию
                for (size_t k = i; k > index_after_positives; --k)
                    arr[k] = arr[k - 1];
                // на "освободившееся" место вставить сохранённый положительный элемент
                // и увеличить индекс, отмечающий позицию для следующего положительного элемента
                arr[index_after_positives++] = tmp;
            }
        }
    }
 
    // вывод на консоль
    for (size_t i = 0; i < SIZE; ++i)
        cout << setw(4) << arr[i];
    cout << endl;
 
    return 0;
}
0
 Аватар для alkl
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
05.12.2018, 01:56
Цитата Сообщение от VoronReki Посмотреть сообщение
где были ошибки в моем коде
Ваша ошибка в том, что Вы не меняете местами элементы массива, а просто присваиваете, портя оригинальные значения.
0
05.12.2018, 02:07

Не по теме:

Цитата Сообщение от VoronReki Посмотреть сообщение
чтобы было понимание, а не зубрежка.
VoronReki, варианты Вам сбрасывают не для зубрёжки, а чтобы Вы их разобрали и посмотрели как что работает, и в дальнейшем использовали эти принципы для других своих программ ( по сути не важно, сдвинуть положительные или чётные или нули или например модули меньше единицы или ещё что-либо)
сравните количество циклов и строк и решите нужно ли искать ошибки в заведомо не оптимальной программе ?
если по коду есть вопросы - пишите, но если Вы просто разберётесь как он работает, вопросов не будет.

на рекомендации использовать доп.массив не обращайте внимание - для этой задачи он не нужен

0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
05.12.2018, 02:32
Yetty, мой вариант чуть посложнее, но количество копирований элементов в среднем вдвое меньше. На 20 элементах типа double, конечно, ерунда, но тем не менее ))
0
0 / 0 / 0
Регистрация: 17.10.2018
Сообщений: 51
05.12.2018, 23:42  [ТС]
Цитата Сообщение от alkl Посмотреть сообщение
не меняете местами элементы массива
а переставлять с помощью указателей, правильно понимаю?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.12.2018, 23:42
Помогаю со студенческими работами здесь

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

Расположить все элементы массива заданным образом: сначала все положительные, затем нули, затем отрицательные
Пожалуйста помогите, нужно решить 3 задачи 1. Дан массив А (25). Расположить все элементы в таком порядке: сначала все положительные,...

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

Массив: переставить элементы таким образом, чтобы сначала были записаны все положительные, затем все отрицательные, а потом все нули.
Здравствуйте! помогите пожалуйста с задачей по информатике. Буду очень благодарна) В массиве из вещественных чисел переставить...

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


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

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

Новые блоги и статьи
Тестирование Pull Request в Kubernetes с vCluster
Mr. Docker 19.07.2025
Часто сталкиваюсь с серьезной дилемой при настройке тестовых окружений для проверки Pull Request в Kubernetes. С одной стороны, каждый PR требует изолированной среды — только так можно гарантировать,. . .
Мой 7 минутный ролик с крамольным предложением про шахматы, предлагаю заценить
_Ivana 18.07.2025
p2UhJNMGY94
Десять Middleware Node.js для эффективного кодинга
Reangularity 18.07.2025
Когда я только начинал работать с Node. js, количество пакетов в npm меня буквально парализовало. Сегодня их больше 1,3 миллиона — попробуй разберись, что стоит твоего внимания, а что нет. Я потратил. . .
Context и глубины Android
mobDevWorks 18.07.2025
В Android разработки Context напоминает воздух - он везде, жизненно необходим, но мало кто может детально объяснить его природу. Мы привыкли получать его как параметр, передавать дальше и. . .
Результаты исследования от команды MCM (июль 2025 г.)
Programma_Boinc 18.07.2025
Результаты исследования от команды MCM (июль 2025 г. ) Как сообщалось в наших предыдущих публикациях, мы изучаем гены, которые имеют наибольший рейтинг и ассоциируются с различными видами рака, в. . .
ИИ-чатбот на React с OpenAI и LangChain.js
Reangularity 17.07.2025
React давно стал для меня золотым стандартом фронтенд-разработки. Его компонентная структура, виртуальный DOM и однонаправленный поток данных идеально подходят для создания динамичных интерфейсов. . .
Пишем адаптер для локального хранилища S3 на C#
stackOverflow 16.07.2025
Разработка современных приложений часто требует интеграции с объектными хранилищами, и Amazon S3 стал де-факто стандартом в этой области. Однако работа с облачными сервисами в процессе разработки. . .
Старые замки
kumehtar 16.07.2025
Смотрел тут фото, попались пара старых замков. И сразу бросилось в глаза из отличие. Например: Замок Бистон, в англии. Разрушенное сооружение. Но - не испорченное людьми, по крайней мере - на. . .
Java и Eclipse Store: Сверхбыстрые приложения с In-Memory DB
Javaican 15.07.2025
Eclipse Store — это микро-движок персистентности для Java, который позволяет хранить и извлекать нативные Java-объекты без необходимости преобразования данных или использования объектно-реляционного. . .
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru