Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2015, 19:56   #1
Павел Н
Новичок
Джуниор
 
Регистрация: 06.10.2015
Сообщений: 1
По умолчанию Помогите решить задачку C++

Преобразовать массив таким образом, чтобы сначала располагались все отрицательные элементы, а потом - все остальные. Порядок следования не изменять.(один статический массив)
Павел Н вне форума Ответить с цитированием
Старый 06.10.2015, 20:57   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Попытки? Наработки? Хотя бы ввод массива?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.10.2015, 09:09   #3
Флаэ Биль
Новичок
Джуниор
 
Аватар для Флаэ Биль
 
Регистрация: 08.10.2015
Сообщений: 1
По умолчанию

Возможен такой вариант.

Код:
#include<iostream>
#include <dos.h>
#include <clocale> 
using namespace std;
int main()
{   setlocale(LC_CTYPE, "rus"); 
    int mas[100], i, n;
    cout << "Введите n ";
    cin >> n;
    for (i = 0; i < n; i++)
        cin >> mas[i];
 
    for (i = 0; i < n; i++)
    {
        if (mas[i]<0) { cout << mas[i] << " "; }
       };
       
       for (i = 0; i < n; i++)
    {
        if (mas[i]>=0) { cout << mas[i] << " "; }
       };
       
    cout << "\n";
    system("pause");
        return 0;
}

Последний раз редактировалось Stilet; 08.10.2015 в 09:27.
Флаэ Биль вне форума Ответить с цитированием
Старый 14.10.2015, 09:48   #4
m3g4z0rdEX
Пользователь
 
Регистрация: 14.10.2015
Сообщений: 17
По умолчанию

Если именно преобразовать, то вот вариант за O(N*N):
PHP код:
#include <iostream>

const int cNum 10;

int mas[cNum];

int main()
{
    for(
int i 0cNum; ++i)
        
std::cin>>mas[i];

    for(
int i 0cNum; ++i)
    {
        
int nonZero = -1;
        for(
int i1 0i1 cNum; ++i1)
        {
            if(
mas[i1] > 0)
                
nonZero i1;
            else
            {
                if(
nonZero != -1)
                {
                    
std::swap(mas[i1], mas[nonZero]);
                    
nonZero = -1;
                }
            }
        }
    }

    for(
int i 0cNum; ++i)
        
std::cout<<mas[i]<<" ";

    
std::cout<<std::endl;
    
    
system("PAUSE");
    return 
0;

m3g4z0rdEX вне форума Ответить с цитированием
Старый 14.10.2015, 10:24   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Павел Н Посмотреть сообщение
Порядок следования не изменять.)
Я на форум захожу, чисто - поржать .
Измените мир, ни чего не меняя. Ха-ха-ха!
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 14.10.2015, 15:16   #6
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
один статический массив
статический, так статический...
Код:
#include <iostream>
#include <algorithm>
#include <iterator>
#include <functional>


template < typename T , size_t N >
void out_array ( std::ostream & stream , const T (&arr)[N] )
{
    std::copy ( arr , arr + N , std::ostream_iterator<T>(stream, " ") ) ;
}


template < typename T , size_t N >
void stable_partition_array ( T (&arr)[N] )
{
    std::stable_partition ( arr , arr+N , std::bind2nd ( std::less<int>() , 0 ) ) ;
}


int main()
{
    static int arr[] = { 4 , 3 , 5 , 1 , -6 , 8 , -5 , 0 , 1 , 7 , -1 , -8 } ;
    std::cout << "Source:\n" ;
    out_array ( std::cout , arr ) ;
    stable_partition_array (arr) ;
    std::cout << "\nResult:\n" ;
    out_array ( std::cout , arr ) ;
}
http://rextester.com/GEBZG27847

Цитата:
чисто - поржать
Ну не преподают студентам термины

Последний раз редактировалось Croessmah; 14.10.2015 в 15:19.
Croessmah вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачку! OLGA_2966 Паскаль, Turbo Pascal, PascalABC.NET 2 22.11.2014 21:26
Помогите решить задачку! yakablyaiara PHP 1 30.05.2014 21:09
Помогите решить задачку АртёмМ Общие вопросы C/C++ 22 10.10.2009 18:44
Помогите решить задачку:-(( torrik Помощь студентам 32 10.10.2008 09:56