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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2015, 18:09   #1
ksly
Пользователь
 
Регистрация: 20.09.2015
Сообщений: 12
По умолчанию Преобразование массива C++

Помогите преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 5, а потом — все остальные. Порядок следования элементов во второй части массива не изменять.
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int  a;
    cout << "Введите размер массива: ";
    cin >> a;                                                           
    if (a < 1)
    {
        cout << "Введен неверный размер массива. \n";
        return 1;
    }
    int *mas = new int[a];
    for (int i = 0; i < a; i++)
    {
        cout << "Введите элементы массива [" << i << "] : \n";
 
 
        cin >> mas[i];
    }
    int q = 0;
    for (int i = 0; i < a; i++)
    {
        if (mas[i]>0) q++;
    }
    cout << "Количество положительнных элементов = " << q << endl;
    
    int b = -1;
    int sum = 0;
    for (int i = a - 1; i >= 0; i--)
        {
            if (mas[i] == 0)
            {
                b = i;
                break;
            }
        }
    if (b == -1)
            cout << "Нет нулевых элементов" << endl;
    else
    {
        for (int i = b; i < a; i++)
        {
            sum += mas[i];
        }
        cout << "Сумма после нуля = " << sum << endl;
    }
    return 0;
}
ksly вне форума Ответить с цитированием
Старый 15.10.2015, 19:09   #2
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

std::stable_partition в помощь
Croessmah вне форума Ответить с цитированием
Старый 15.10.2015, 19:22   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int  a,j=0,l=0,v;
    cout << "Введите размер массива: ";
    cin >> a;                                                           
    if (a < 1)
    {
        cout << "Введен неверный размер массива. \n";
        return 1;
    }
    int *mas = new int[a];
    int *masa = new int[a];
    for (int i = 0; i < a; i++)
    {
        cout << "Введите элементы массива [" << i << "] : \n";
        cin >> v;
        if(abs(v)<5) mas[j++]=v; else mas2[l++]=v;
    }

    l = 0;
    for (int i = j+1; i < a; i++) mas[i]=mas2[l++];
     for (i = 0; i < a; i++) cout<<mas[i]<<'\t';
    return 0;
}
Годится?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.10.2015, 10:18   #4
m3g4z0rdEX
Пользователь
 
Регистрация: 14.10.2015
Сообщений: 17
По умолчанию

Вот, держи - не создает дополнительных массивов, меняет текущий.
Код:
#include <iostream>

const int cNum = 10;

int mas[cNum];

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

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

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

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

Последний раз редактировалось Stilet; 16.10.2015 в 10:21.
m3g4z0rdEX вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С# преобразование массива gvozdik12 Помощь студентам 4 16.05.2013 07:53
преобразование массива kuzya1994 Паскаль, Turbo Pascal, PascalABC.NET 0 08.02.2012 23:20
C++ преобразование массива Lexey92 Помощь студентам 0 25.10.2011 20:42
Преобразование массива с++ davart Помощь студентам 3 01.10.2010 09:25
преобразование массива PARTOS Microsoft Office Excel 4 20.01.2010 17:21