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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
#1

Массив размерности n+m - C++

23.10.2010, 23:01. Просмотров 1338. Ответов 21
Метки нет (Все метки)

Даны два упорядоченных числовых массива размерности n и m. Получить из них новый упорядоченный массив размерности n+m, не используя алгоритма сортировки.

P.S.очень нужна помощь.помогите пожалуйста.а то даже не понятно что делать...как бы что ли смешать два массива но так чтобы их элементы были упорядочены?...но как это...???...и еще без сортировки...((
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2010, 23:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив размерности n+m (C++):

Из двух целочисленных массивов различной размерности сформировать общий массив. Упорядочить полученный массив - C++
Кто может сделайте пожалуйста. Из двух целочисленных массивов различной размерности сформировать общий массив. Упорядочить полученный...

Массив переменной размерности - C++
Здравствуйте! Такой вопрос: мне нужно создать массив, размерность которого должна вводиться при запуске программы. Вот на это: int n; ...

Задан целочисленный массив размерности N - C++
//Задан целочисленный массив размерности N.Есть ли среди элементов массива простые числа ? Если да, то вывести номера этих элементов. ...

Массив произвольной размерности и работа с ним - C++
Доброго времени суток. Появилась интересная задача: создать функцию для создания массива, размерность которого укажут в ходе программы(то...

Динамический массив. Ввод размерности с клавиатуры - C++
Вечер добрый. Прошу помощи у Вас. Суть просьбы : создать динамический массив(квадрат) с размерностью n, n (вводится с клавиатуры)....

Массив: перемножения двух матриц A,B размерности n*n - C++
Разработать программу перемножения двух матриц A,B размерности n*n. Все матрицы размещаются в оперативной памяти динамически с помощью...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
24.10.2010, 13:51  [ТС] #16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 int n,m , ;
    int i,j;
      float X[100];
       float Y[100];
 cout<<"Vvedite razmernost pervogo massiva,uchtite,shto n>=m\n";
 cin>>n;
 cout<<"Vvedite pervuy massiv\n";
 for(i=0;i<n;i++)
   cin>>X[i];
 cout<<"Vvedite razmernost vtorogo\n";
 cin>>m;
 cout<<"Vvedite vtoroy massiv\n";
 for(i=0;i<m;i++)
 cin>>Y[i];
Добавлено через 1 минуту
как-то не нравится мне все это...((

Добавлено через 1 минуту
нее...тогда потом компилятор психует про массив с[i]....
0
IrishaIrinaChe
28 / 28 / 1
Регистрация: 23.09.2010
Сообщений: 203
24.10.2010, 13:53 #17
я поняла)
до строки 19 надо выделить память под массив а
C++
1
a=new float[n];
так же с массивом b. попробуй)
1
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
24.10.2010, 14:00  [ТС] #18
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 j=0;
  for(i=0;i<n;i++,j++)
  {
     if(X[i]>=Y[i])
     {
       c[j]=Y[i];
       j++;
       c[j]=X[i];
     }
     else
     {
       c[j]=X[j];
       j++;
       c[j]=Y[i];
      }
  }
Не совсем понять этот цикл...к чему после j++; еще и c[j]=Y[i];

Добавлено через 2 минуты
IrishaIrinaChe, но это же уже тогда динамисемкий массив....а надо со статическим

Добавлено через 2 минуты
и к тому же что тогда с с делать...
0
IrishaIrinaChe
28 / 28 / 1
Регистрация: 23.09.2010
Сообщений: 203
24.10.2010, 14:03 #19
твой массив С статичен, т к он объявлен как float c[100];
массивы а и b динамичны,т к заранее мы не знаем их размерность. перед работой с массивом надо выделить под него память. в своём коде я это указала. посмотри внимательней.
0
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
24.10.2010, 14:16  [ТС] #20
а к чему счетчик j?

Добавлено через 2 минуты
cпокойно...я вижу что все в твоем коде правильно наверно....проблема в другом вообще нельзя нигде использовать динамический массив.а и b тоже должны быть статичны.

Добавлено через 3 минуты
все программа зароботала....только там в конце выдается еще случайное число....(( ай да ладно.
лучше поясните за что отвечает счетчик
Цитата Сообщение от barlog Посмотреть сообщение
j
Добавлено через 27 секунд
а к чему счетчик j?
0
IrishaIrinaChe
28 / 28 / 1
Регистрация: 23.09.2010
Сообщений: 203
24.10.2010, 14:17 #21
допустим, что i=0. смотри, с[0] примет значение a[0], а вот c[1]=b[0]. заметь, счётчик массива с изменился, а вот a и b-нет. логично? к тому же, массивы a и b разной размерности. следовательно, массив с живёт своей отдельной жизнью с персональным счётчиком. если получится обойтись без j- буду за тебя рада)
0
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
24.10.2010, 15:55  [ТС] #22
ага.спасибо большое.

Добавлено через 6 минут
только вот смотри....хочу вникнуть полностью
C++
1
2
3
4
5
6
 if(X[i]>=Y[i])
     {
       c[j]=Y[i];
       j++;
       c[j]=X[i];
     }
это мы смотрим, если элемент массива Х больше У, то массиву С присваивается значения У ,потом увеличиваем счеткик массива С j на 1, и присваеваем следующему элементу С значение Х, т.к Х больше У.Так?

Добавлено через 1 минуту
если же не так ,то все наооборот.))вроде я разобралась))

Добавлено через 22 секунды
Спасибо))

Добавлено через 19 минут
а к чему вот это?
C++
1
2
3
if(n!=m)
 for(i=(n-1),j=(2*n-1);i<m;i++,j++)
  c[j]=Y[i];
Добавлено через 1 минуту
просто по ходу оно не работает...даже если его убрать, то ничего не меняется, он все равно пишет лишь бы что ,после того как n перестает равнятся m.

Добавлено через 42 минуты
IrishaIrinaChe, а вообще если честно твоя программа не работает....вот можешь сама посмотреть....она действительно только когда m и m равны....и если ввести например в первом массиве :1 3 ,а во втором: 4 и 5 то вообще неправильно выходит...но самое главное что если n не равно m то вообще бред выводится...
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
39
40
41
42
43
44
45
46
47
48
49
int main()
{      float X[100];
       float Y[100];
       float c[100];
   int n,m, i , j  ;
 cout<<"Vvedite razmernost pervogo massiva,uchtite,shto n>=m\n";
 cin>>n;
  cout<<"Vvedite elevementy pervuy massiv\n";
 for(i=0;i<n;i++)
 { cout<<" X["<<i<<"]= ";
   cin>>X[i]; }
 cout<<"Vvedite razmernost vtorogo\n";
 cin>>m;
  cout<<"Vvedite elevementy vtorogo massiv\n";
  for(i=0;i<m;i++)
  { cout<<" Y["<<i<<"]= ";
   cin>>Y[i]; }
 
 
  j=0;
 
  for(i=0;i<n;i++,j++)
  {
     if(X[i]>=Y[i])
     {
       c[j]=Y[i];
       j++;
       c[j]=X[i];
     }
     else
     {
       c[j]=X[i];
       j++;
       c[j]=Y[i];
      }
  }
 
 if(n!=m)
 for(i=(n-1),j=(2*n-1);i<m;i++,j++)
  c[j]=Y[i];
 
 
cout<<"Resultat\n";
for(i=0;i<(n+m);i++)
 cout<<c[i]<<"   ";
getch();
 
        return 0;
}
Кто-нибудь знает как по-другому решить....я уже больше не могу...(((

Добавлено через 17 минут
Короче я знаю как делать на паскале.Кто-нибудь очень умный может это переделать в С++.УМОЛЯЮ!!!

Delphi
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
{Ввод массивов A и B}
Ai:=1; Bi:=1; Ci:=1; {текущие индексы в массивах A,B,C}
while Ci<=N+M do begin
if A[Ai]>B[Bi]
then begin
C[Ci]:=B[Bi];
Bi:=Bi+1
end
else begin
C[Ci]:=A[Ai]; Ai:=Ai+1;
end
Ci:=Ci+1;
{Проверка окончания одного из массивов}
if Ai>N then for i:=Bi to M do
begin
C[Ci]:=B[Bi];
Bi:=Bi+1;
Ci:=Ci+1;
end;
if Bi>N then for i:=Ai to N do
begin
C[Ci]:=A[Ai];
Ai:=Ai+1;
Ci:=Ci+1;
end;
end; {while}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2010, 15:55
Привет! Вот еще темы с ответами:

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

Задан массив a{ij} размерности MxM. Требуется вычислить - C++
S=\sum_{i=1}^{M}\sum_{j=1}^{M}\left|a{ij} \right|

В массив заданной размерности N ввести произвольные числа - C++
В массив заданной размерности N ввести произвольные числа. Создать новый массив, поменяв местами столько равноудаленных от k - того...

Как создать пустой массив определенной размерности? - C++
Не могу найти информацию как создать пустой массив. То есть выделить под него память, но ничем не заполнять? Задача: есть массив нужно...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.10.2010, 15:55
Ответ Создать тему
Опции темы

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