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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
23.10.2010, 23:01     Массив размерности n+m #1
Даны два упорядоченных числовых массива размерности n и m. Получить из них новый упорядоченный массив размерности n+m, не используя алгоритма сортировки.

P.S.очень нужна помощь.помогите пожалуйста.а то даже не понятно что делать...как бы что ли смешать два массива но так чтобы их элементы были упорядочены?...но как это...???...и еще без сортировки...((
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
23.10.2010, 23:30     Массив размерности n+m #2
Создаешь динамический массив размером N+M . Заполняешь его элементами исходных массивов и
сортируешь,скажем пузырьком, раз нельзя функцию сортировки использовать
IrishaIrinaChe
 Аватар для IrishaIrinaChe
28 / 28 / 1
Регистрация: 23.09.2010
Сообщений: 200
23.10.2010, 23:41     Массив размерности n+m #3
эмм... но вот вариант:

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
50
51
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
 
int n,m;
float *a;
float *b;
float *c;
 
int main()
{
 int i,j;
 cout<<"Vvedite razmernost pervogo massiva,uchtite,shto n>=m\n";
 cin>>n;
 a=new float[n];
 cout<<"Vvedite pervuy massiv\n";
 for(i=0;i<n;i++)
   cin>>a[i];
 cout<<"Vvedite razmernost vtorogo\n";
 cin>>m;
 b=new float[m];
 cout<<"Vvedite vtoroy massiv\n";
 for(i=0;i<m;i++)
 cin>>b[i];
 
  j=0;
  for(i=0;i<n;i++,j++)
  {
     if(a[i]>=b[i]) 
     {   
       c[j]=b[i];
       j++;
       c[j]=a[i];
     }
     else 
     {
       c[j]=a[j];
       j++;
       c[j]=b[i];
      }
  }
if(n!=m)
 for(i=(n-1),j=(2*n-1);i<m;i++,j++)
  c[j]=b[i];
 
cout<<"Resultat\n";
for(i=0;i<(n+m);i++)
 cout<<c[i]<<"   ";
getch(); 
return 0;
}
если m<n то допиши по аналогии.
да. решение верно только если исходные массивы уже упорядочены по возрастанию.
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
24.10.2010, 11:35  [ТС]     Массив размерности n+m #4
Ага.Вроде ясно...спасибо...чуть что спрошу что не ясно

Добавлено через 4 минуты
C++
1
a=new float[n];
вот что-то не совсем уверена....Это так мы как бы задаем вводимый с клавиатуры массив?

Добавлено через 2 минуты
...это динамический массив наверное....
White Luna
 Аватар для White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
24.10.2010, 11:55     Массив размерности n+m #5
Цитата Сообщение от barlog Посмотреть сообщение
...это динамический массив наверное....
ага, тут выделяется под него память
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
24.10.2010, 12:01  [ТС]     Массив размерности n+m #6
А без динамического массива это можно решить....а то как бы мы проходим статический массив...странно как-то((
IrishaIrinaChe
 Аватар для IrishaIrinaChe
28 / 28 / 1
Регистрация: 23.09.2010
Сообщений: 200
24.10.2010, 12:20     Массив размерности n+m #7
http://www.cyberforum.ru/attachment....5&d=1286030841 -хорошая методичка. тоненькая, но очень полезная. читай на здоровье)
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
24.10.2010, 12:56  [ТС]     Массив размерности n+m #8
спасибо.но у меня книга есть....дело не в этом.Как бы в условие задачи подразумевается решить не использую динамический массив.через статический...у меня есть мысля, что можно задать сначала, как бы, массив максимальной размерности, а потом уже массив размерности n и m... потом как то сделать их сумму...Может кто-нибудь знает или поможет?Пожалуйста...

Добавлено через 3 минуты
IrishaIrinaChe
 Аватар для IrishaIrinaChe
28 / 28 / 1
Регистрация: 23.09.2010
Сообщений: 200
24.10.2010, 12:57     Массив размерности n+m #9
стоит для начала создать огромный массив "с". а потом упомянуть условии об ограничении на n и m. а позже результирующий массив "с" выводить на экран только до (n+m)-го элемента как я указала в коде. так создастся видимость, что массив не огромен, а имеет размерность чётко n+m)))
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
24.10.2010, 13:08  [ТС]     Массив размерности n+m #10
Спасибо...но мне не очень понятно((
C++
1
2
const n_max=100;
        float C[n_max];
Создали огромный массив С.
А дольше непонятно...."а потом упомянуть условии об ограничении на n и m. а позже результирующий массив "с" выводить на экран только до (n+m)-го элемента как я указала в коде"...((
не могли бы вы ,пожалуйста, показать.

Добавлено через 3 минуты
Ааааа....воо...)
C++
1
2
3
4
5
6
7
8
9
10
11
12
const n_max=100;
        float C[n_max];
cout<<"Vvedite razmernost pervogo massiva,uchtite,shto n>=m\n";
 cin>>n;
 cout<<"Vvedite pervuy massiv\n";
 for(i=0;i<n;i++)
   cin>>a[i];
 cout<<"Vvedite razmernost vtorogo\n";
 cin>>m;
 cout<<"Vvedite vtoroy massiv\n";
 for(i=0;i<m;i++)
 cin>>b[i];
Вот так что ли....или что дальше...че то оно не работает((
IrishaIrinaChe
 Аватар для IrishaIrinaChe
28 / 28 / 1
Регистрация: 23.09.2010
Сообщений: 200
24.10.2010, 13:13     Массив размерности n+m #11
C++
1
2
3
4
5
float c[100];  //огромный массив
 
cout<<"Введите n и m через пробел. но учтите, что n+m не должно превышать 100";
cin>>n;
cin>>m;
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
24.10.2010, 13:16     Массив размерности n+m #12
Цитата Сообщение от barlog Посмотреть сообщение
у меня есть мысля, что можно задать сначала, как бы, массив максимальной размерности, а потом уже массив размерности n и m
Это неверный подход.
Цитата Сообщение от barlog Посмотреть сообщение
а то как бы мы проходим статический массив
Тогда в чем проблема-то?
C
1
2
3
4
5
6
7
8
9
10
11
12
#define NSIZE 5
#define MSIZE 7
#define RSIZE ((NSIZE) + (MSIZE))
 
int main()
{
    int n[NSIZE];
    int m[MSIZE];
    int r[RSIZE];
 
    // ........
}
IrishaIrinaChe
 Аватар для IrishaIrinaChe
28 / 28 / 1
Регистрация: 23.09.2010
Сообщений: 200
24.10.2010, 13:25     Массив размерности n+m #13
barlog, что выдаёт? какую ошибку?
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
24.10.2010, 13:45  [ТС]     Массив размерности n+m #14
#define NSIZE 5
#define MSIZE 7
#define RSIZE ((NSIZE) + (MSIZE))

Это как функция?....и почему не правильный подход

Добавлено через 4 минуты
сейчас еще попробую...если что не так напишу...((

Добавлено через 8 минут
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
50
51
52
53
#include <vcl.h>
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main()
{ int n,m , ;
    int i,j;
      float c[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>>a[i];
 cout<<"Vvedite razmernost vtorogo\n";
 cin>>m;
 cout<<"Vvedite vtoroy massiv\n";
 for(i=0;i<m;i++)
 cin>>b[i];
 
  j=0;
  for(i=0;i<n;i++,j++)
  {
     if(a[i]>=b[i]) 
     {   
       c[j]=b[i];
       j++;
       c[j]=a[i];
     }
     else 
     {
       c[j]=a[j];
       j++;
       c[j]=b[i];
      }
  }
if(n!=m)
 for(i=(n-1),j=(2*n-1);i<m;i++,j++)
  c[j]=b[i];
 
cout<<"Resultat\n";
for(i=0;i<(n+m);i++)
 cout<<c[i]<<"   ";
getch();
 
        return 0;
}
//---------------------------------------------------------------------------
Добавлено через 1 минуту
пишет что в строке 19 и 24
a и b неопределены

Добавлено через 1 минуту
ААА...нодо вместо них ведь писать с[i]....а тогда как мы отличим a от b?

Добавлено через 1 минуту
значит сделать 2 максимальных массива например
C++
1
2
float c[100];
float x[100];
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
24.10.2010, 13:47     Массив размерности n+m #15
Я тут одного понять не могу - как можно получить отсортированный массив не используя алгоритм
сортировки.
Только в коде от руки ввести элементы нового массива
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
24.10.2010, 13:51  [ТС]     Массив размерности n+m #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]....
IrishaIrinaChe
 Аватар для IrishaIrinaChe
28 / 28 / 1
Регистрация: 23.09.2010
Сообщений: 200
24.10.2010, 13:53     Массив размерности n+m #17
я поняла)
до строки 19 надо выделить память под массив а
C++
1
a=new float[n];
так же с массивом b. попробуй)
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
24.10.2010, 14:00  [ТС]     Массив размерности n+m #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 минуты
и к тому же что тогда с с делать...
IrishaIrinaChe
 Аватар для IrishaIrinaChe
28 / 28 / 1
Регистрация: 23.09.2010
Сообщений: 200
24.10.2010, 14:03     Массив размерности n+m #19
твой массив С статичен, т к он объявлен как float c[100];
массивы а и b динамичны,т к заранее мы не знаем их размерность. перед работой с массивом надо выделить под него память. в своём коде я это указала. посмотри внимательней.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2010, 14:16     Массив размерности n+m
Еще ссылки по теме:

C++ Из двух целочисленных массивов различной размерности сформировать общий массив. Упорядочить полученный массив
Динамический массив. Ввод размерности с клавиатуры C++
Задан массив a{ij} размерности MxM. Требуется вычислить C++

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

Или воспользуйтесь поиском по форуму:
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
24.10.2010, 14:16  [ТС]     Массив размерности n+m #20
а к чему счетчик j?

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

Добавлено через 3 минуты
все программа зароботала....только там в конце выдается еще случайное число....(( ай да ладно.
лучше поясните за что отвечает счетчик
Цитата Сообщение от barlog Посмотреть сообщение
j
Добавлено через 27 секунд
а к чему счетчик j?
Yandex
Объявления
24.10.2010, 14:16     Массив размерности n+m
Ответ Создать тему
Опции темы

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