Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
iyoulka
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 25
#1

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

29.04.2016, 22:10. Просмотров 612. Ответов 6
Метки нет (Все метки)

даны 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();
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2016, 22:10
Ответы с готовыми решениями:

Сформировать третий массив, в котором элементы первых двух расположены в заданном порядке
элементы 2 одномерных массивов вводятся в следующем порядке Х1 У1, Х2 У2, ......

Даны 2 упорядоченных одномерных массива. создать 3 одномерный массив, содержащий упорядоченные элементы 1 и 2 массива.
Даны 2 упорядоченных одномерных массива. создать 3 одномерный массив,...

Сформировать массив содержащий только нечетные элементы исходного массива упорядоченные по убыванию
1)Задан массив целых чисел a.Сформировать массив b,содержащий только нечетные...

Написать функцию для определения, расположены ли элементы числового массива по возрастанию
Написать функцию для определения, расположены ли элементы числового массива по...

Получить третий массив C[15] по правилу: вначале элементы первого массива, затем элементы второго массива
Даны массивы A, B. Нужно получить третьи массив C состоящий: вначале элементы...

6
Petrolion
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
Завершенные тесты: 1
29.04.2016, 22:16 #2
Если у вас все же C++ попробуйте использовать cin / cout.
Или у вас printf / scanf обязательные условия?

ЗЫ. Оформляйте пожалуйста код программы тэгами кода. Не удобно читать и общаться по тексту программы.
0
iyoulka
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 25
29.04.2016, 22:27  [ТС] #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 в методичке,в примере
0
Petrolion
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
Завершенные тесты: 1
29.04.2016, 23:08 #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];
}
Второй блок аналогично.
1
iyoulka
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 25
29.04.2016, 23:14  [ТС] #5
сделала,все равно заполняет мусором.может,в С что-то изменить?
Запустила пошагово,1 и 2 массивы заполнились правильно
0
Petrolion
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
Завершенные тесты: 1
29.04.2016, 23:59 #6
Лучший ответ Сообщение было отмечено iyoulka как решение

Решение

Конечно массивы заполнились правильно. Речь шла только о проблеме ввода с клавиатуры. НО...
Вы запутались в собственном алгоритме и полученном задании.
По первым массивам при заполнении третьего, нужно двигаться в обратном направлении.
Объявили третий массив всего в 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();
}
1
iyoulka
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 25
30.04.2016, 00:24  [ТС] #7
Спасибо большое
Буду внимательна
0
30.04.2016, 00:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2016, 00:24

Даны два упорядоченных массива. Слить их в третий, но чтобы элементы не повторялись
Даны два упорядоченных массива. Нужно слить их в третий, но чтобы элементы не...

Сформировать список студентов, в котором студенты расположены по убыванию среднего балла
Сформировать список студентов, в котором студенты расположены по убыванию...

Отсортировать четные элементы массива по возрастанию, а нечетные по убыванию
помогите найти ошибку.не верно сортирует. #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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