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

даны 2 массива,упорядоченные по убыванию,получить из них третий,в котором элементы расположены по возрастанию - C++

Восстановить пароль Регистрация
 
iyoulka
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 9
29.04.2016, 22:10     даны 2 массива,упорядоченные по убыванию,получить из них третий,в котором элементы расположены по возрастанию #1
даны 2 массива,упорядоченные по убыванию,получить из них третий,в котором элементы расположены по возрастанию
не могу реализовать ввод с клавиатуры,это обязательное условие



рабочий код,без ввода с клавиатуры


#include <stdio.h>
#include <conio.h>

void main()
{



const int sz_A = 6, sz_B = 6, sz_C = sz_A + sz_B;
short A[sz_A] = { 10, 5, 4, 3, 1 ,0 };
short B[sz_B] = { 11, 9, 8, 7, 5,1 }, C[sz_C];

int i = 0, j = 0, k = 0; // переменные счетчики, для обращения к индексам массивов

for (k = 0; k<sz_C; k++)
{
if (i<sz_A && j<sz_B) // проверка окончания какого-либо из двух массивов
{
if (A[i]>B[j]) // сравнение элементов массивов и помещение меньшего в третий массив
{
C[k] = A[i];
i++;
}
else
{
C[k] = B[j];
j++;
}
}
else

/* если какой-то из массивов закончился, заполнить конечный массив элементами
оставшегося */
{
for (; k<sz_C; k++) {
if (i<sz_A) {
C[k] = A[i]; i++;
}
if (j<sz_B) {
C[k] = B[j]; j++;
}

}

}

}
// вывод результирующего массива
for (k = 0; k<sz_C; k++) {
printf("%d ", C[k]);
}

_getch();
}



помогите.пожалуйста
мой код с попытками ввода с клавиатуры,в результате-мусор.






#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
#define n 5
void main()
{ // переменные счетчики, для обращения к индексам массивов
//const int sz_A = 5, sz_B = 5, cz_C=10;
int A[n], i;
printf("Vvedite 5 elementov 1ogo massiva: ");
for (i = 0; i < n; i++)
{
printf("", i);
scanf("%d", &A[i]);
}
int B[n], j;
printf("Vvedite 5 elementov 2ogo massiva:");
for (j = 0; j < n; j++)
{
printf("", j);
scanf("%d", &B[j]);
}
int sz_C = 10;
int C[5], k;

for (k = 0; k<sz_C; k++)
{
if (i<n && j<n) // проверка окончания какого-либо из двух массивов
{
if (A[i]>B[j]) // сравнение элементов массивов и помещение меньшего в третий массив
{
C[k] = A[i];
i++;
}
else
{
C[k] = B[j];
j++;
}
}
else
/* если какой-то из массивов закончился, заполнить конечный массив элементами
оставшегося */
{
for (; k<sz_C; k++) {
if (i<n) {
C[k] = A[i]; i++;
}
if (j<n) {
C[k] = B[j]; j++;
}
}
}
} // вывод результирующего массива
for (k = 0; k<sz_C; k++) {
printf("%d ", C[k]);
}

_getch();
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2016, 22:10     даны 2 массива,упорядоченные по убыванию,получить из них третий,в котором элементы расположены по возрастанию
Посмотрите здесь:

C++ Даны 2 упорядоченных одномерных массива. создать 3 одномерный массив, содержащий упорядоченные элементы 1 и 2 массива.
Даны два массива одного размера. Получить третий массив, каждый элемент которого... C++
Нужен листинг на С++ (даны два вектора, упорядоченные по возрастанию. Слить их в один вектор, так чтобы сохранилась упорядоченность) C++
Даны два упорядоченных массива. Слить их в третий, но чтобы элементы не повторялись C++
Элементы массива с нечетных позиций необходимо отсортировать по возрастанию, с четных - по убыванию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Petrolion
24 / 24 / 7
Регистрация: 02.02.2016
Сообщений: 124
29.04.2016, 22:16     даны 2 массива,упорядоченные по убыванию,получить из них третий,в котором элементы расположены по возрастанию #2
Если у вас все же C++ попробуйте использовать cin / cout.
Или у вас printf / scanf обязательные условия?

ЗЫ. Оформляйте пожалуйста код программы тэгами кода. Не удобно читать и общаться по тексту программы.
iyoulka
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 9
29.04.2016, 22:27  [ТС]     даны 2 массива,упорядоченные по убыванию,получить из них третий,в котором элементы расположены по возрастанию #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
52
53
54
#include <stdio.h>
#include <conio.h>
 
void main()
{
 
 
 
const int sz_A = 6, sz_B = 6, sz_C = sz_A + sz_B;
short A[sz_A] = { 10, 5, 4, 3, 1 ,0 };
short B[sz_B] = { 11, 9, 8, 7, 5,1 }, C[sz_C];
 
int i = 0, j = 0, k = 0; // переменные счетчики, для обращения к индексам массивов
 
for (k = 0; k<sz_C; k++)
{
if (i<sz_A && j<sz_B) // проверка окончания какого-либо из двух массивов 
{
if (A[i]>B[j]) // сравнение элементов массивов и помещение меньшего в третий массив
{
C[k] = A[i];
i++;
}
else
{
C[k] = B[j];
j++;
}
}
else
 
/* если какой-то из массивов закончился, заполнить конечный массив элементами
оставшегося */
{
for (; k<sz_C; k++) {
if (i<sz_A) {
C[k] = A[i]; i++;
}
if (j<sz_B) {
C[k] = B[j]; j++;
}
 
}
 
}
 
}
// вывод результирующего массива
for (k = 0; k<sz_C; k++) {
printf("%d ", C[k]);
}
 
_getch();
}

попытки ввода с клавиатуры,мусор в результате
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
54
55
56
57
58
59
60
61
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
#define n 5
void main()
{   // переменные счетчики, для обращения к индексам массивов
//const int sz_A = 5, sz_B = 5, cz_C=10;
int A[n], i;
printf("Vvedite 5 elementov 1ogo massiva: ");
for (i = 0; i < n; i++)
{
printf("", i);
scanf("%d", &A[i]);
}
int B[n], j;
printf("Vvedite 5 elementov 2ogo massiva:");
for (j = 0; j < n; j++)
{
printf("", j);
scanf("%d", &B[j]);
}
int sz_C = 10;
int C[5], k;
 
for (k = 0; k<sz_C; k++)
{
if (i<n && j<n) // проверка окончания какого-либо из двух массивов 
{
if (A[i]>B[j]) // сравнение элементов массивов и помещение меньшего в третий массив
{
C[k] = A[i];
i++;
}
else
{
C[k] = B[j];
j++;
}
}
else
/* если какой-то из массивов закончился, заполнить конечный массив элементами
оставшегося */
{
for (; k<sz_C; k++) {
if (i<n) {
C[k] = A[i]; i++;
}
if (j<n) {
C[k] = B[j]; j++;
}
}
}
}   // вывод результирующего массива
for (k = 0; k<sz_C; k++) {
printf("%d ", C[k]);
}
 
_getch();
}

не совсем обязательно
printf / scanf в методичке,в примере
Petrolion
24 / 24 / 7
Регистрация: 02.02.2016
Сообщений: 124
29.04.2016, 23:08     даны 2 массива,упорядоченные по убыванию,получить из них третий,в котором элементы расположены по возрастанию #4
После 5-й строки добавить:
C++
1
2
#include <iostream>
using namespace std;
Замена во втором коде с 11 строки по 16-ю:
C++
1
2
3
4
5
6
cout << "Vvedite 5 elementov 1ogo massiva: ";
for (i = 0; i < n; i++)
{
    cout <<  i+1 << "th=";
    cin >> A[i];
}
Второй блок аналогично.
iyoulka
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 9
29.04.2016, 23:14  [ТС]     даны 2 массива,упорядоченные по убыванию,получить из них третий,в котором элементы расположены по возрастанию #5
сделала,все равно заполняет мусором.может,в С что-то изменить?
Запустила пошагово,1 и 2 массивы заполнились правильно
Petrolion
24 / 24 / 7
Регистрация: 02.02.2016
Сообщений: 124
29.04.2016, 23:59     даны 2 массива,упорядоченные по убыванию,получить из них третий,в котором элементы расположены по возрастанию #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Конечно массивы заполнились правильно. Речь шла только о проблеме ввода с клавиатуры. НО...
Вы запутались в собственном алгоритме и полученном задании.
По первым массивам при заполнении третьего, нужно двигаться в обратном направлении.
Объявили третий массив всего в 5 элементов.
Сделали повторный цикл не выйдя из внешнего (при сортировке)
и проч.
Смотрите поправленный под ваш алгоритм код:
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 <iostream>
using namespace std;
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
#define n 5
#define sz_C 10
void main()
{   // переменные счетчики, для обращения к индексам массивов
//const int sz_A = 5, sz_B = 5, cz_C=10;
int A[n], i;
cout << "Vvedite 5 elementov 1ogo massiva: " << endl;
for (i = 0; i < n; i++)
{
    cout <<  i+1 << "th=";
    cin >> A[i];
}
int B[n], j;
cout << "Vvedite 5 elementov 2ogo massiva: " << endl;
for (j = 0; j < n; j++)
{
    cout <<  j+1 << "th=";
    cin >> B[j];
}
int C[sz_C], k;
i=n-1;
j=n-1;
for (k = 0; k<sz_C; k++)
{
    if ((i>=0) && (j>=0)) // проверка окончания какого-либо из двух массивов 
    {
        if (A[i]<B[j]) // сравнение элементов массивов и помещение меньшего в третий массив
            C[k] = A[i--];
        else
            C[k] = B[j--];
    }
    else
/* если какой-то из массивов закончился, заполнить конечный массив элементами
оставшегося */
    {
        if (j<0) 
            C[k] = A[i--];
        else if (i<0)
            C[k] = B[j--];
    }
}   // вывод результирующего массива
for (k = 0; k<sz_C; k++)
    cout << C[k] << "\t";
 
_getch();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2016, 00:24     даны 2 массива,упорядоченные по убыванию,получить из них третий,в котором элементы расположены по возрастанию
Еще ссылки по теме:

Отсортировать по убыванию элементы массива слева от случайного числа, и справа - по возрастанию. C++
C++ Сформировать третий массив, в котором элементы первых двух расположены в заданном порядке
Вывести нечётные по значению элементы массива по возрастанию, а чётные - по убыванию C++

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

Или воспользуйтесь поиском по форуму:
iyoulka
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 9
30.04.2016, 00:24  [ТС]     даны 2 массива,упорядоченные по убыванию,получить из них третий,в котором элементы расположены по возрастанию #7
Спасибо большое
Буду внимательна
Yandex
Объявления
30.04.2016, 00:24     даны 2 массива,упорядоченные по убыванию,получить из них третий,в котором элементы расположены по возрастанию
Ответ Создать тему
Опции темы

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