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

В одномерном массиве все отрицательные элементы переместить в начало массива

06.03.2012, 11:13. Показов 4648. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
в одномерном массиве все отрицательные элементы переместить в начало массива, а остальные - в конец с сохранением порядка следования не использовать доп. Массив
C++
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.03.2012, 11:13
Ответы с готовыми решениями:

В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования. Не...

В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования
Здравствуйте форумчане! Подскажите, как решить данные задания. Отстаю от группы, а так и не разобрался в этой теме. Используя...

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

9
Модератор
Эксперт С++
 Аватар для zss
13740 / 10935 / 6485
Регистрация: 18.12.2011
Сообщений: 29,180
06.03.2012, 11:50
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const int N=10;
int mass[N];
int posplus=0;
for(int i=0;i<N;i++)
{
    if(mass[i]<0 && posplus==i) posplus++;
    else
    {
          int t=mass[i];
          for(int j=i;i>posplus;j--)
                   mass[j]=mass[j-1];
          mass[posplus]=t;
          posplus=i+1;
     }
}
2
Автор FAQ
 Аватар для -=ЮрА=-
6612 / 4254 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
06.03.2012, 12:19

Не по теме:

Цитата Сообщение от zss2 Посмотреть сообщение
int t=mass[i];
zss2, ну зачем объявление в цикле (на это же по моему тоже процессорное время идёт). Оно то не заметно на простом а когда сложное что-то то сидим и думаем ; А куда же распыляется наш процессор???;)
Я вообще не признаю новых стандартов где можно использовать рядышком циклы с объявлением одной и той же переменной и стараюсь избегать множественных объявлений...



Добавлено через 1 минуту
Сейчас накидаю что-нибудь от себя...
1
Модератор
Эксперт С++
 Аватар для zss
13740 / 10935 / 6485
Регистрация: 18.12.2011
Сообщений: 29,180
06.03.2012, 12:31
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ну зачем объявление в цикле
Если бы память под переменные выделялась динамически,
то время бы тратилось.
А так, по моему наглядней (объявляем переменную только тогда,
когда она нужна).
0
Автор FAQ
 Аватар для -=ЮрА=-
6612 / 4254 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
06.03.2012, 12:34
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Сейчас накидаю что-нибудь от себя...
- Вот что получилось
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
#include <iostream>
#include <cstdlib> //Âïðèíöèïå ìîæíî áûëî íå ïîäêëþ÷àòü
#include <ctime>
using namespace std;
 
int main()
{
    int i, j, k;
    time_t t;
    srand(time(&t));
    int array[30];//Ïóñòü áóäåò ìàññèâ èç 30 ýëåìåíòîâ
    for(i = 0; i < 32; i++)
        //Çàïîëíÿåì ìàññèâ ñëó÷ ÷èñëàìè â äèàïàçîíå -5 5
        cout<<(array[i] = rand()%10 - 5)<<" ";
    for(k = (i = 0); i < 30; i++)
    {
        if(0 < array[(j = i)])
        {
            while(0 < array[j] && j < 30)
                j++;
            if(j < 30)
            {
                array[j] += array[k];
                array[k] = array[j] - array[k];
                array[j] = array[j] - array[k];
                k++;
            }
        }
    }   
    cout<<endl;
    cout<<"sorted array\n";
    for(i = 0; i < 30; i++)
        cout<<array[i]<<" ";
    cout<<endl;
    system("pause");
    return 0;
}
Миниатюры
В одномерном массиве все отрицательные элементы переместить в начало массива  
0
Автор FAQ
 Аватар для -=ЮрА=-
6612 / 4254 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
06.03.2012, 12:43
Цитата Сообщение от zss2 Посмотреть сообщение
Если бы память под переменные выделялась динамически,
то время бы тратилось.
- попробую несогласиться так как объявление переменной тоже самое что резервирование свободной ячейки памяти, при этом не факт что кадый раз здесь
Цитата Сообщение от zss2 Посмотреть сообщение
int t=mass[i];
при объявлении будет резервироваться таже самая ячейка. По-моёму лучше объявить все до вызвающего модуля в любом случае проигыша в скорости не будет + в последствии это позволяет избежать коварных подводных камней когда используем вновь объявленную но неинициализированную переменную...Впринципе ТС-у должно быть видней что ему более подходит на данном этапе. Я просто высказал своё мнение

Добавлено через 1 минуту
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(0 < array[(j = i)])
* * * * * * * * {
* * * * * * * * * * * * while(0 < array[j]
- подумав пришёл к выводу что данные условия должны быть переписанны следующим образом
if(0 <= array[(j = i)])
{
while(0 <= array[j] && j < 30)
0
Модератор
Эксперт С++
 Аватар для zss
13740 / 10935 / 6485
Регистрация: 18.12.2011
Сообщений: 29,180
06.03.2012, 12:47
Несомненно это дело вкуса программиста.
На мой взгляд
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
используем вновь объявленную но неинициализированную переменную.
совсем наоборот. Поскольку тут объявляется новая переменная,
то действительно предполагается, что она новая и нужна только тут.
Тем самым мы не испортим переменную более высокого уровня,
если она случайно имеет такое же имя.
0
Автор FAQ
 Аватар для -=ЮрА=-
6612 / 4254 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
06.03.2012, 12:56
zss2, своим постом также хотел уберечь начинающих програмистов ещё и от оишбок следующего плана (ниже гипотетический пример). А ведь чаще всего они на таких моментах и ошибаются
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
for(int i = 0 ; i < n; i++)
{
      if(arr[i] < 0)
          break;
}
 
for(int i, j = 0; j < n; j++)
{
      arr[j] -= arr[i];
}
Объявив i и j ещё до начала первого цикла можно было бы полностью себя обезопасить от передачи неинициализированной переменной i.

Добавлено через 4 минуты

Не по теме:

zss2, согласитесь множественная инициализация либо инициализация в цикле могут сыграть с начинающим злую шутку, запутывая алгоритм:pardon:

1
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.03.2012, 15:35
Цитата Сообщение от dioris Посмотреть сообщение
C++
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
#include <iterator>
 
int main()
{
    std::vector< int > arr = { 1, -2, 3, -4, 5 };
    std::stable_partition( arr.begin(), arr.end(), std::bind2nd(std::less< int >(), 0) );
    std::copy( arr.begin(), arr.end(), std::ostream_iterator< int > (std::cout, " ") );
}
0
0 / 0 / 0
Регистрация: 22.02.2014
Сообщений: 9
22.02.2014, 14:10
А как выполнить то же самое, но используя динамический массив?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.02.2014, 14:10
Помогаю со студенческими работами здесь

Для каждого из массивов все отрицательные элементы переместить в начало массива, а все положительные — в конец
Составить программу, которая превращает массивы А и В следующим образом: для каждого из них все отрицательные элементы одномерного...

В одномерном массиве все отрицательные элементы переместить в начало массива
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования. Не...

В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования. Не...

В одномерном массиве все отрицательные элементы переместить в начало
В одномерном массиве все отрицательные элементы переместить в начало а остальные в конец с сохранением порядка следования. дополнительный...

В одномерном массиве все отрицательные элементы переместить в начало, а остальные - в конец
Помогите написать блох-схему на данный код... //В одномерном массиве все отрицательные элементы переместить в начало , а остальные -...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 20.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
C++26: Индексирование пакетов и метапрограммиро­вание
bytestream 20.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер