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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
bambino
193 / 19 / 4
Регистрация: 05.08.2010
Сообщений: 229
#1

Масивы - C++

08.04.2011, 22:41. Просмотров 628. Ответов 12
Метки нет (Все метки)

Здраствуйте!
Если есть минутка свободного времени, помогите решить задачу: росположить елементы масива так, что бы сначали ишли елементы которые менше нуля, затем кторые больше нуля, но сохраняя порядок их записи.
К сожелению простая сортировка здесь не катит.Помогите с алгоритмом(с реализацией проблем нету )
Зарание всем спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2011, 22:41     Масивы
Посмотрите здесь:

Масивы - C++
В квадратном массиве заданы целые числа. Определить количество элементов главной диагонали. только пожалуйста сделайте так как для...

2-D масивы. - C++
Помогите! Написать программу в С++ которая будет проверять является ли 2-д масив маг.квадратом,у которого сума строк,столбцов и...

Масивы - C++
Приветик помогите решить прошку пожалуста У прилавка магазина выстроилась очередь из n покупателей. Время обслуживания i-того...

Масивы - C++
Помогите сделать задачу по С++. Создать массив. Вывести массив в общепринятом виде. Превратить массив, согласно условиям. Вывести...

масивы - C++
сортировки массива методом пузырька и методом прямого включения Програмы нужны в Microsoft visual studio заранье спасибо

С++ Масивы - C++
Помогите написать 3 программы по этим заданиям в С++! В одномерном массиве, который состоит из n действительных элементов, вычислить: ...

Масивы С/С++ - C++
Подскажите пожалуйста, как в С создать массив А, при этом что бы выполнялась программа без ошибок. Потому что компиляция происходит...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
wolf.diesel
14 / 14 / 1
Регистрация: 04.04.2011
Сообщений: 70
08.04.2011, 22:42     Масивы #2
Сортировка не катит по условиям задачи?
bambino
193 / 19 / 4
Регистрация: 05.08.2010
Сообщений: 229
08.04.2011, 22:44  [ТС]     Масивы #3
Цитата Сообщение от wolf.diesel Посмотреть сообщение
Сортировка не катит по условиям задачи?
Цитата Сообщение от rik_nel Посмотреть сообщение
но сохраняя порядок их записи.
Очевидно же.
wolf.diesel
14 / 14 / 1
Регистрация: 04.04.2011
Сообщений: 70
08.04.2011, 22:45     Масивы #4
Что то я не догоняю. Как это: сортировать, сохраняя порядок? оО
Магией?
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
08.04.2011, 22:46     Масивы #5
проходим по массиву и генерируем новый массив который хранит индексы отрицательных елементов, и потом сортируем проходя только по индексам с отрицательными, с положительными елементами так же
wolf.diesel
14 / 14 / 1
Регистрация: 04.04.2011
Сообщений: 70
08.04.2011, 22:47     Масивы #6
Если уж генерировать новый массив, то сразу и писать по порядку
bambino
193 / 19 / 4
Регистрация: 05.08.2010
Сообщений: 229
08.04.2011, 22:50  [ТС]     Масивы #7
Maxwe11, Как думаете, такая реализация, в принципе допустима/коректна
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <algorithm>
 
int main()
{
  int a[6] = {-1, -3, 3, 3, -2, -1}, k = 0;
 
  for(int i = 0; i < 6; ++i)
    if(a[i] < 0)
      std::swap(a[i], a[k++]);
 
  for(int i = 0; i < 6; ++i)
    std::cout << a[i] << ' ';
  return 0;
}
wolf.diesel
14 / 14 / 1
Регистрация: 04.04.2011
Сообщений: 70
08.04.2011, 22:52     Масивы #8
Цитата Сообщение от rik_nel Посмотреть сообщение
Maxwe11, Как думаете, такая реализация, в принципе допустима/коректна
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <algorithm>
 
int main()
{
  int a[6] = {-1, -3, 3, 3, -2, -1}, k = 0;
 
  for(int i = 0; i < 6; ++i)
    if(a[i] < 0)
      std::swap(a[i], a[k++]);
 
  for(int i = 0; i < 6; ++i)
    std::cout << a[i] << ' ';
  return 0;
}
Как определить корректность:
1. Оно работает?
2. Оно работает правильно?
3. Оно не теряет память?
4. Оно не падает?
bambino
193 / 19 / 4
Регистрация: 05.08.2010
Сообщений: 229
08.04.2011, 22:53  [ТС]     Масивы #9
Цитата Сообщение от wolf.diesel Посмотреть сообщение
Как определить корректность:
1. Оно работает?
2. Оно работает правильно?
3. Оно не теряет память?
4. Оно не падает?
Забей.
igorrr37
1640 / 1268 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
09.04.2011, 01:03     Масивы #10
C++
1
2
3
4
5
6
7
8
9
10
#include<iostream>
#include<algorithm>
 
int main(){
    int a[] = {7,0,-1,0,-3,4,3,-2,-1,8,-4,0}, size=sizeof(a)/sizeof(*a);
    std::sort(a, a+size, [](int a, int b){return a<0&&b>=0||a==0&&b>0;});
    for(int i = 0; i < size; ++i)
        std::cout << a[i] << ' ';
    return 0;
}
bambino
193 / 19 / 4
Регистрация: 05.08.2010
Сообщений: 229
09.04.2011, 01:10  [ТС]     Масивы #11
igorrr37, Большое спасибо.
Но немогли бы Вы показать как это будет выгладит без стандартной сортировки и лямбда, а то я не очень понимаю как это работает.
igorrr37
1640 / 1268 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
09.04.2011, 01:29     Масивы #12
сортировка простыми вставками
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
 
int main(){
    int a[] = {7,0,-1,0,-3,4,3,-2,-1,8,-4,0}, size=sizeof(a)/sizeof(*a), tmp, i, j;
    for(i=0; i<size; ++i){
        tmp=a[i];
        for(j=i-1; j>=0&&(tmp<0&&a[j]>=0||tmp==0&&a[j]>0); --j){
            a[j+1]=a[j];
        }
        a[j+1]=tmp;
    }
    for(i = 0; i < size; ++i)
        std::cout << a[i] << ' ';
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2011, 01:35     Масивы
Еще ссылки по теме:

C++ масивы - C++
Начал решать задачу, вот условие: Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся ровно два раза, и...

Динамические масивы - C++
Помогите пожалуста !! Сформировать одномерный динамический массив целых чисел. Все положительные элементы массива перенести в начало...

Указатели и масивы - C++
Добрый день. Помогите пожалуйста разобраться с указателями. Есть рабочий код: const int n=5; int a ; int k=1; ...

Двомерные масивы - C++
Помогите что не так case 3:{long double b; int z; cout&lt;&lt;&quot;Введите елементы масива&quot;&lt;&lt;endl; for(int i=0;i&lt;m;i++) ...

Функции и масивы - C++
Почему когда выполняется условие Bridge не записывается? int CheckAllLines(char *Massive, int *Bridges, int FromLine, int ToLine, int...


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

Или воспользуйтесь поиском по форуму:
bambino
193 / 19 / 4
Регистрация: 05.08.2010
Сообщений: 229
09.04.2011, 01:35  [ТС]     Масивы #13
Спасибо, выручили.
Yandex
Объявления
09.04.2011, 01:35     Масивы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru