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

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

23.10.2011, 09:19. Показов 1977. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите решить такую задачу пжл:
дан одномерный массив "а" (состоящий из вещественных чисел). Необходимо пройдя по массиву один раз все его положительные элементы поставить в начало а отрицательные в конец, при этом использовать переменные - i и j, но они будут являются счетчиками, то есть им нельзя присваивать значения констант или элементы массива и в программе нельзя больше использовать никаких переменных кроме i и j
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.10.2011, 09:19
Ответы с готовыми решениями:

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

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

Все положительные его элементы поместить в начало массива B (n), а все отрицательные - в начало массива C (n)
Данный массив A (n). Все положительные его элементы поместить в начало массива B (n), а все отрицательные - в начало массива C (n)....

5
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
23.10.2011, 09:52
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Ириска5 Посмотреть сообщение
и в программе нельзя больше использовать никаких переменных кроме i и j
ничего лучше не придумывается (или думать больше не хочется ):
n - размер массива.
C++
1
2
3
4
5
6
7
8
9
10
    i=0; j=n-1;
    while(i<j)
    {
        while(a[i]>=0.)
            i++;
        while(a[j]<0.)
            j--;
        if(i<j)
        {a[i]+=a[j]; a[j]=a[i]-a[j]; a[i]-=a[j]; i++; j--;}
    }
3
23.10.2011, 10:10

Не по теме:

Цитата Сообщение от valeriikozlov Посмотреть сообщение
ничего лучше не придумывается (или думать больше не хочется ):
красивое решение! нет слов. может только размер n заменить на sizeof(a)/sizeof(float). хотя не это главное в этой задаче.

1
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.10.2011, 10:18
Вот, недавно писал такую же:
https://www.cyberforum.ru/showthread.php?p=2092804
valeriikozlov, а дополнительные условия во внутренних циклах тоже нужны
1
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
23.10.2011, 10:51
Цитата Сообщение от Thinker Посмотреть сообщение
valeriikozlov, а дополнительные условия во внутренних циклах тоже нужны
согласен.
C++
1
2
3
4
5
6
7
8
9
10
        i=0; j=n-1;
        while(i<j)
        {
                while(a[i]>=0. && i<j)
                        i++;
                while(a[j]<0. && j>i)
                        j--;
                if(i<j)
                {a[i]+=a[j]; a[j]=a[i]-a[j]; a[i]-=a[j]; i++; j--;}
        }
2
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
23.10.2011, 11:59
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
/////////////////////////////////////////////////////////////////////////////////////////
//Дан одномерный массив "а" (состоящий из вещественных чисел). 
//Необходимо, пройдя по массиву один раз, все его положительные элементы поставить 
//в начало, а отрицательные в конец, при этом использовать переменные i и j, 
//но они будут являются счетчиками, то есть им нельзя присваивать значения констант 
//или элементы массива, и в программе нельзя больше использовать никаких 
//переменных кроме i и j.
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::vector<int>  T_nums;
/////////////////////////////////////////////////////////////////////////////////////////
void  my_partial_sort(T_nums&  nums)
{    
    int  j = 0;
    for(size_t  i = 0; i < nums.size(); ++i)
    {
        if(nums[i] < 0)
        {
            ++j;    
        }
        else        
        {
            std::swap( nums[i], nums[i - j] );
        }
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
void  print_nums(const T_nums&  nums)
{
    std::copy
        (
            nums.begin(),
            nums.end(),
            std::ostream_iterator<T_nums::value_type>(std::cout, " ")
        );
    std::cout << std::endl;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    srand(unsigned(time(0)));
    const int  NUMS_DIM = 20;
    T_nums  nums;    
    for(int  i = 0; i < NUMS_DIM; ++i)
    {
        nums.push_back(rand() % 100 - 50);
    }
    std::cout << "Массив до сортировки:"
              << std::endl;
    print_nums(nums);
 
    my_partial_sort(nums);
    std::cout << std::endl
              << "Массив после сортировки:"
              << std::endl;
    print_nums(nums);
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.10.2011, 11:59
Помогаю со студенческими работами здесь

Перестановить положительные элементы в начало массива, отрицательные — в конец
Помогите написать задачи: 1. Перестановить положительные элементы в начало массива, отрицательные - в конец. 2. Найти элемент с...

Все отрицательные цифры поместить в начало массива, а положительные в конец
4. Дан массив положительных и отрицательных чисел. Переписать массив так, чтобы все отрицательные цифры были в начале массива, а...

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru