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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2011, 19:39   #1
FRATER1234
Пользователь
 
Регистрация: 26.09.2011
Сообщений: 68
Вопрос Уменя не получаеться до делать задачку

Здраствуйте все.
Уменя вот возникли вопросы по поводу этой задачи
1.Даны два массива, упорядоченных по возрастанию: А[n] и B[m]. Сформируйте массив C[n+m], состоящий из элементов массивов А и В, упорядоченный по возрастанию.
Я вродебы сделал чтоб они по возрастанию а вот как сделать масив С[n+m] сформировать не могу понять вот код моей задачки то что я не могу до делать
Код:
#include <iostream>
#include <iomanip>
using namespace std;
void Sort(int *a, int na, int *b, int nb, int *c, int *nc)
{
   int i, j, k;
   i = j = k = 0;
   while (i < na && j < nb)
      if (a[i] < b[j])
         c[k++] = a[i++];
      else
         c[k++] = b[j++];
 
   if (i < na)
      for(j = i; j < na; j++)
         c[k++] = a[j];
   else
      for(i = j; i < nb; i++)
         c[k++] = b[i];
   *nc = na + nb;
}
FRATER1234 вне форума Ответить с цитированием
Старый 15.10.2011, 21:31   #2
snqL
 
Регистрация: 14.10.2011
Сообщений: 3
По умолчанию

В стандартной библиотеке STL есть отличное готовое решение под названием merge(). Объединяет два массива и упорядочивает их.

#include <algorithm>
...
// а - массив из N элементов
// b - массив из M элементов
// c - массив из N+M элементов
merge(a, a+N, b, b+M, c)
...

Последний раз редактировалось snqL; 15.10.2011 в 22:22.
snqL вне форума Ответить с цитированием
Старый 15.10.2011, 21:51   #3
FRATER1234
Пользователь
 
Регистрация: 26.09.2011
Сообщений: 68
По умолчанию

И как это примерно будет выглядить можно примерчик эелементарный?
FRATER1234 вне форума Ответить с цитированием
Старый 15.10.2011, 22:02   #4
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

http://www.cplusplus.com/reference/algorithm/merge/
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 15.10.2011, 22:09   #5
snqL
 
Регистрация: 14.10.2011
Сообщений: 3
По умолчанию

Цитата:
Сообщение от FRATER1234 Посмотреть сообщение
И как это примерно будет выглядить можно примерчик эелементарный?
Код:
#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;
int main() {
	int a[5] = {11, 4, 6, 1, 5};
	sort(a, a + 5);
	copy(a, a + 5, ostream_iterator<int>(cout, " "));
	cout << endl;
	int b[5] = {10, 3, 2, 8, 7};
	sort(b, b + 5);
	copy(b, b + 5, ostream_iterator<int>(cout, " "));
	cout << endl;
	int c[10];
	merge(a, a + 5, b, b + 5, c);
	copy(c, c + 10, ostream_iterator<int>(cout, " "));
	cout << endl;
}
snqL вне форума Ответить с цитированием
Старый 15.10.2011, 22:10   #6
FRATER1234
Пользователь
 
Регистрация: 26.09.2011
Сообщений: 68
По умолчанию

ага спс буду знать
FRATER1234 вне форума Ответить с цитированием
Старый 15.10.2011, 22:14   #7
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

P. S.
Код:
int c[10];
merge(a, a + 5, b, b + 5, c);
copy(c, c + 10, ostream_iterator<int>(cout, " "));
Можно заменить на:
Код:
merge(a, a + 5, b, b + 5, ostream_iterator<int>(cout, " "));
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу разабраца как делать задачку помагите плиз. по С++ Grynt Помощь студентам 2 22.06.2009 00:15
не получаеться скомпилировать motaro Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 29.03.2009 12:17
Не получаеться на Паскале Bagsi Помощь студентам 1 14.11.2007 15:57