Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 28.10.2021
Сообщений: 2

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

28.10.2021, 22:54. Показов 1033. Ответов 8
Метки нет (Все метки)

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

Примечание. Дополнительные массивы не использовать.
C++
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.10.2021, 22:54
Ответы с готовыми решениями:

Одномерный массив: отсортировать так, чтобы вначале шли положительные элементы, а затем - отрицательные
Помогите пожалуйста с задачей. Надо в одномерном массиве поменять элементы так, чтоб вначале шли положительные, затем нули , затем...

Преобразовать массив так, чтобы вначале шли отрицательные элементы, а потом положительные
ГЛАВНОЕ!!! порядок отрицательных прежний , а положительных обратный

Преобразуйте массив так, чтобы все положительные элементы массива стали отрицательными и наоборот
1. Преобразуйте массив так, чтобы все положительные элементы массива стали отрицательными и наоборот, а затем измененный массив...

8
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
29.10.2021, 01:25
C++
1
2
3
4
5
6
7
8
9
10
    int a[] = { 1,-2,3,-4,5,-6 };
    int n = 6;
    int i = 0, j = n - 1, tmp;
    while (i < j) {
        while (a[i] < 0 && i < j) ++i;
        while (a[j] > 0 && i < j) --j;
        tmp = a[i];
        a[i] = a[j];
        a[j] = tmp;
    }
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
29.10.2021, 11:11
Saygonx, Вам требуется решение с применением указателей ?
0
0 / 0 / 0
Регистрация: 28.10.2021
Сообщений: 2
29.10.2021, 12:50  [ТС]
Да, именно так
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
29.10.2021, 12:56
Имхо, обычный "пузырек", только при сравнении считать положительное число меньше отрицательного.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
29.10.2021, 13:21
Yetty, а откуда взялась такая нужда в указателях? ИМХО, задания "напишите цикл по массиву, но вместо a[i] пишите *(a+i)" нифига не научат пониманию указателей. Это вредные задания.
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
29.10.2021, 13:23
Kuzia domovenok, ну почему? Можно же использовать *(pa++)
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
29.10.2021, 13:24
liv, разницы никакой для понимаемости языка.
0
 Аватар для analogov net
2524 / 1123 / 493
Регистрация: 17.11.2018
Сообщений: 2,832
29.10.2021, 21:24
Цитата Сообщение от Байт Посмотреть сообщение
Имхо, обычный "пузырек"
Могу быть не прав, но думаю, что порядок следования элементов нарушать нельзя. По-этому сортировка не годится.
Нужна перестановка без изменения порядка элементов. Например так:
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
int main()
{
    const int N = 10;
    int ar[N] = {-8, 4, 0, -5, -9, 8, -3, 0, -2, -7}, *second, *first;
 
    for( int i = 0; i < N; i++ )
        cout << setw( 3 ) << ar[i];
    cout << endl;
 
    first = second = ar;
    while( first < ar + N )
    {
        if( *second >= 0 )
            first = ++second;
        else if( *first < 0 )
            first++;
        else
        {
            int tmp = *first;
            while( first > second )
                *first-- = *( first - 1 );
            *second = tmp;
        }
    }
 
    for( int i = 0; i < N; i++ )
        cout << setw( 3 ) << ar[i];
    cout << endl;
 
    return 0;
}
Code
1
2
 -8  4  0 -5 -9  8 -3  0 -2 -7
  4  0  8  0 -8 -5 -9 -3 -2 -7
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.10.2021, 21:24
Помогаю со студенческими работами здесь

Переписать компоненты файла f в файл g так, чтобы вначале шли положительные, затем отрицательные числа
Создать и заполнить текстовой файл f. Файл f содержит столько же отрицательных чисел, сколько и положительных. Переписать компоненты файла...

Отсортировать массив так, чтобы сначала в нем шли нулевые элементы, затем положительные
Задан целочисленный массив размера N. Отсортировать массив так, чтобы сначала в нем шли нулевые, затем положительные и, в конце,...

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

Переставить элементы списка так, чтобы вначале шли неотрицательные элементы
Переставить элементы списка так, чтобы вначале шли неотрицательные элементы, потом нулевые, а в конце - отрицательные, не используя...

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru