Форум программистов, компьютерный форум CyberForum.ru

Все отрицательные элементы массива перенести в начало, а все остальные - в конец - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.76
Светик@
1 / 1 / 0
Регистрация: 19.10.2009
Сообщений: 87
22.09.2010, 20:13     Все отрицательные элементы массива перенести в начало, а все остальные - в конец #1
помогите пожалуйста)))
преобразовать массив по следующему правилу (воспользовавшись массивом у как вспомогательным):все отрицательные элементы массива х перенести в его начало , а все остальные -в конец , сохраняя исходное взаимное расположение как среди отрицательных , так и среди остальных элементов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2010, 20:13     Все отрицательные элементы массива перенести в начало, а все остальные - в конец
Посмотрите здесь:

Переставить все отрицательные элементы в начало массива C++
Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы C++
Все положительные элементы массива поставить в начало, а отрицательные - в конец C++
C++ Необходимо, пройдя по массиву один раз, все его положительные элементы поставить в начало а отрицательные в конец
Все отрицательные цифры поместить в начало массива, а положительные в конец C++
Перенести все элементы, равные 0, в конец массива C++
Поставить в начало массива все четные элементы, а конец – все нечетные C++
C++ Перенести все отрицательные элементы массива в конец

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
22.09.2010, 20:48     Все отрицательные элементы массива перенести в начало, а все остальные - в конец #2
както так..

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
#include <iostream>
#include <time.h>//для произвольной генерации чисел.
 
void main()
{   
    const int razm =10;// размер масивов.
    int masX[razm], masY[razm];
    srand ( time(NULL) );
    for (int i=0;i<razm;i++)
    {
        masY[i]=masX[i]=0;//обнуляем массивы
        masY[i]=8-rand()%15;
        // можно заменить на ввод с клавиатуры:
        //std::cout<<'\n'<<" masY["<<i<<"] =";
        //std::cin>>masY[i];
    }
    for (int i=0;i<razm;i++)// если правильно понял тз.. 
    {
        static int j=0, k=razm-1;
        if (masY[i]<0)//  все отрицательные строятся от начала
        {
            masX[j]=masY[i];
            j++;
        }
        else// остальные строятся с конца массива.
        {
            masX[k]=masY[i];
            k--;
        }
    }
    for (int i=0;i<razm;i++)
    {
        std::cout<<'\n'<<" masY["<<i<<"] = "<<masY[i]
        <<"  masX["<<i<<"] = "<<masX[i];
    }
    std::cout<<std::endl;
    system("pause");
}
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
22.09.2010, 22:11     Все отрицательные элементы массива перенести в начало, а все остальные - в конец #3
Светик@, решение с помощью std::stable_partition
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <algorithm>
#include <iterator>
#include <iostream>
#include <functional>
 
int main() {
  int arr[] = { -1, 2, 4, 5, -4, -6, 3, -4 };
  
  std::stable_partition(arr, arr + sizeof(arr) / sizeof(arr[0]), std::bind2nd(std::less<int>(), 0));
  
  std::copy(arr, arr + sizeof(arr) / sizeof(arr[0]), std::ostream_iterator<int>(std::cout, " "));
  
  return 0;
}
Результат: http://codepad.org/I6485Ozy
Yandex
Объявления
22.09.2010, 22:11     Все отрицательные элементы массива перенести в начало, а все остальные - в конец
Ответ Создать тему
Опции темы

Текущее время: 22:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru