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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2014, 18:32   #11
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Можно но сортировка для такой постановки задачи слюшком жирно
Поддерживаю... Неужели без сортировки не обойтись?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 30.06.2014, 00:45   #12
S93
 
Регистрация: 15.09.2013
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Loqwer78rus Посмотреть сообщение
Вместо
Я так понял
Все равно не выходит.
Код:
int n=10;
int a1[] = [123, -2, .....];
int a2[n];
int k=0;

for(int i=0; i<n; i++)
    if(a1[i]<0)
    {    
        a2[k]=a1[i];
        k++;
     }



for(int i=0; i<n; i++)
    if(a[i]>0)
    {
      a2[k]=a1[i];
      k++;
     }

cout<<"result"<<endl;
for(int i=0; i<n; i++)
    cout<<a2[i]<<endl;

Последний раз редактировалось Stilet; 30.06.2014 в 11:00.
S93 вне форума Ответить с цитированием
Старый 30.06.2014, 11:14   #13
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Моя идея решения данной задачи...
Все как заказывали.
Код:
#include <iostream>

using namespace std;

int main() {
	const int N = 10;
	int arrOne[N] = {22, 55, 14, -23, -11, 1, -2, -8, 3, 77};
	int arrTwo[N] = {0};
	int a = 0;
	int b = N-1;
	
	// Вывод исходного массива
	cout << endl << " Array:\n" << " ------" << endl;
	for(int i = 0; i < N; i++) {
		cout << " " << arrOne[i];
	}
	
	for(int i = 0; i < N; i++) {
		if(arrOne[i] < 0) 
			arrTwo[a++] = arrOne[i];
		else 
			arrTwo[b--] = arrOne[i];
	}
	
	cout << endl << "\n Rezult:\n" << " -------" << endl;
	for(int i = 0; i < N; i++) {
		cout << " " << arrTwo[i];
	}
	
	return 0;
}
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 30.06.2014, 15:06   #14
studen
Пользователь
 
Регистрация: 21.05.2012
Сообщений: 88
По умолчанию

Это оптимальное решение.

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
Моя идея решения данной задачи...
Все как заказывали.
Код:
#include <iostream>

using namespace std;

int main() {
	const int N = 10;
	int arrOne[N] = {22, 55, 14, -23, -11, 1, -2, -8, 3, 77};
	int arrTwo[N] = {0};
	int a = 0;
	int b = N-1;
	
	// Вывод исходного массива
	cout << endl << " Array:\n" << " ------" << endl;
	for(int i = 0; i < N; i++) {
		cout << " " << arrOne[i];
	}
	
	for(int i = 0; i < N; i++) {
		if(arrOne[i] < 0) 
			arrTwo[a++] = arrOne[i];
		else 
			arrTwo[b--] = arrOne[i];
	}
	
	cout << endl << "\n Rezult:\n" << " -------" << endl;
	for(int i = 0; i < N; i++) {
		cout << " " << arrTwo[i];
	}
	
	return 0;
}
studen вне форума Ответить с цитированием
Старый 30.06.2014, 15:31   #15
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Приятно, что вы оценили... . Хотя может мое решение не совсем соответствует желаемому результату по заданию.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 30.06.2014, 17:15   #16
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Мне кажется оптимальней сделать все с одним массивом, заполняя его с двух сторон.

Код:
#include "stdlib.h"
#include "stdio.h"
#include "time.h"


#define ARR_S 20

int main()
{
    int arr[ARR_S] = {0,};
    int x = 0, y = ARR_S-1;
    unsigned long s = time(NULL);
    srand(s);
    for(size_t i = 0; i < ARR_S; i++)
    {
        int tmp = (rand() % 200) - 100;
        if(tmp > 0)
            arr[y--] = tmp;
        else
            arr[x++] = tmp;
    }
    for(size_t i = 0; i < ARR_S; i++)
        printf("%d ", arr[i]);
    return 0;
}
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 30.06.2014, 18:44   #17
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Такушки.. Не читал прежних постов.. Просто предложу свой вариант.. только ради практики..
Код:
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
	int n;
	vector<int> v;
	cin >> n;

	for (int i = 0; i < n; i++)
	{
		int t; cin >> t; 
		v.push_back(t);
	}

	partition(v.begin(), v.end(), [] (int a) {return a < 0;});

	for (vector<int>::const_iterator p = v.begin(); p != v.end(); ++p)
		cout << *p << " ";		
}
Poma][a вне форума Ответить с цитированием
Старый 30.06.2014, 21:31   #18
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Poma][a думаю автору темы не составит труда разобраться в вашем коде...
Мне нравится. Серьезна.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 30.06.2014, 21:36   #19
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Угу.. Всё же прокомментирую, чтобы разобраться было проще..
Задача решается за один проход QSort'a.. вот и все
И другие массивы не нужны)
Poma][a вне форума Ответить с цитированием
Старый 30.06.2014, 21:41   #20
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

У BDA тоже неплохое решение задачи. Жаль не могу пока отзыв Вам оставить.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
все отрицательные числа и нули, затем положительные максим2012 Паскаль, Turbo Pascal, PascalABC.NET 8 25.10.2012 14:26
В двумерном массиве, в каждоый строке сначала разместить положительные эелементы, потом отрицательные эел Катя) Паскаль, Turbo Pascal, PascalABC.NET 7 15.04.2011 22:32
В заданном массиве C(8) переставить элементы так щеб сначала шли все отрицатильние а затем положительные. basav1k Помощь студентам 2 26.05.2010 21:10
массивы. вначале нули, затем положительные, в конце отрицательные. Сумерки Фриланс 5 17.02.2010 11:21
в начале все отрицательные, затем все положительные элементы в матрице motaro Паскаль, Turbo Pascal, PascalABC.NET 2 07.03.2008 19:16