Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Maksimuso
2 / 2 / 1
Регистрация: 25.10.2014
Сообщений: 75
1

Сформируйте массив С, состоящий из элементов массивов А и В, упорядоченных по возрастанию

24.01.2015, 14:45. Просмотров 1698. Ответов 22
Метки нет (Все метки)

Задание : Даны два массива, упорядоченных по возрастанию: А[n] и B[m]. Сформируйте массив C[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
#include <stdio.h>
#include <conio.h>
#include <locale.h>
 
int main(void){
    const int max = 100;
    int A[max], B[max], C[2 * max];
    int i, j, k, n, m, r;
    setlocale(LC_ALL, "Russian");
    printf("Введите количество элементов массива А\n");
    scanf("%d", &n);
    printf("Введите количество элементов массива B\n");
    scanf("%d", &m);
    printf("Введите %d элемента/ов массива А\n", n);
    for (j = 0, i = 0, i < n, i++, j++);
    {
        scanf("%d", A[i]);
        C[j]=A[i];
    }
    printf("Введите %d элемента/ов массива B\n", m);
    for (k = 0, j = 0, k < m, k++, i++); 
    {
        scanf("%d", B[k]);
        C[j]=B[k];
    }
    printf("\nВведенный массив А:\n");
    for (i = 0; i < A + n; i++);
        printf("%d ", A[i]);
    printf("\nВведенный массив B:\n");
    for (k = 0, k < B + m , k++);
        printf("%d ", B[k]);
    r = m + n;
    for (k = 0; k < r - 1; k++);
    {
        for (j = 0; j < C + r - 1; j++); 
{
            if C[j] > C[j] + 1; 
        }
    }
    printf("\nУпорядоченный массив С:\n");
    for (j = 0, j < C + r, j++);
        printf("%d ", C[j]);
    _getch();
    return 0;
}
ошибки:
Код
1>------ Сборка начата: проект: ConsoleApplication1, Конфигурация: Debug Win32 ------
1>  Исходный код.cpp
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp(11): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\stdio.h(283): см. объявление "scanf"
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp(13): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\stdio.h(283): см. объявление "scanf"
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp(15): error C2143: синтаксическая ошибка: отсутствие ";" перед ")"
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp(21): error C2143: синтаксическая ошибка: отсутствие ";" перед ")"
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp(27): error C2446: <: нет преобразования "int *" в "int"
1>          Не существует контекста, в котором такое преобразование возможно
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp(27): error C2040: <: "int" отличается по уровням косвенного обращения от "int *"
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp(30): error C2446: <: нет преобразования "int *" в "int"
1>          Не существует контекста, в котором такое преобразование возможно
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp(30): error C2040: <: "int" отличается по уровням косвенного обращения от "int *"
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp(30): error C2143: синтаксическая ошибка: отсутствие ";" перед ")"
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp(35): error C2446: <: нет преобразования "int *" в "int"
1>          Не существует контекста, в котором такое преобразование возможно
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp(35): error C2040: <: "int" отличается по уровням косвенного обращения от "int *"
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp(37): error C2061: синтаксическая ошибка: идентификатор "C"
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp(41): error C2446: <: нет преобразования "int *" в "int"
1>          Не существует контекста, в котором такое преобразование возможно
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp(41): error C2040: <: "int" отличается по уровням косвенного обращения от "int *"
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp(41): error C2143: синтаксическая ошибка: отсутствие ";" перед ")"
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2015, 14:45
Ответы с готовыми решениями:

Сформируйте массив C, состоящий из элементов массивов А и В, упорядоченный по возрастанию
Даны два массива, упорядоченных по возрастанию: А и B. Сформируйте массив C, состоящий из элементов...

Сформировать массив C[N+M], состоящий из элементов массивов А и В, упорядоченный по возрастанию
Ввести в память ПЭВМ два массива целочисленных массива А и B. 10&lt;=N&lt;=50, 10&lt;=M&lt;=50....

Упорядочить массив С(12), состоящий из элементов А, по возрастанию, найти минимальный по модулю элемент
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; const int m=3,n=4;...

Сформируйте массив C[n+m], состоящий из элементов массивов А и В, упорядоченный по возрастанию
Хелп плиз) Даны два массива, упорядоченных по возрастанию: А и B. Сформируйте массив C,...

Массив: Сформируйте массив C[n+m], состоящий из элементов массивов А и В, упорядоченный по возрастанию.
написать программы! Вот задания! Я болел и просто не успею все зделать! 1)Дан массив целых чисел....

22
1XPLoade1
30 / 30 / 38
Регистрация: 23.01.2015
Сообщений: 174
24.01.2015, 16:06 2
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>
#include <memory.h>
 
#define N 5
#define M 8
 
int main(int argc, char* argv[])
{
    int A[N] = { 2, 3, 4, 5, 6 };
    int B[M] = { 1, 3, 4, 5, 6, 7, 8, 9 };
 
    printf("A = ");
 
    for (int i1 = 0; i1 < N; i1++)
        printf("%d ", A[i1]);
 
    printf("\nB = ");
 
    for (int j1 = 0; j1 < M; j1++)
        printf("%d ", B[j1]);
 
    printf("\n");
 
    int C[N + M] = { 0 };
    int size_n = sizeof(int) * N;
    int size_m = sizeof(int) * M;
    memcpy((void*)C, (void*)(size_n <= size_m) ? B : A, 
        (size_n <= size_m) ? size_m : size_n);
 
    int n = (size_n <= size_m) ? M : N;
    for (int i = 0; i < ((size_n <= size_m) ? N : M); i++)
    {
        int nkey = (size_n <= size_m) ? A[i] : B[i];
        for (int j = n-1; C[j] > nkey; j--)
        {
            C[j + 1] = C[j];
            C[j] = nkey;
        }
 
        n++;
    }
 
    printf("\nC = ");
 
    for (int k1 = 0; k1 < N+M; k1++)
        printf("%d ", C[k1]);
 
    printf("\n");
 
    _getch();
 
    return 0;
}
http://codepad.org/6fLep1HG
0
Миниатюры
Сформируйте массив С, состоящий из элементов массивов А и В, упорядоченных по возрастанию  
Maksimuso
2 / 2 / 1
Регистрация: 25.10.2014
Сообщений: 75
24.01.2015, 16:41  [ТС] 3
спасибо
0
Dark Byte
29 / 46 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
Завершенные тесты: 2
03.02.2015, 18:59 4
Цитата Сообщение от Maksimuso Посмотреть сообщение
for (j = 0, i = 0, i < n, i++, j++);
и т.п. везде точку с запятой у циклов убери и оформи тегами код...

з.ы. если язык чистый си, то ошибся разделом к тому же...
0
03.02.2015, 18:59
Dimension
Dimension
574 / 444 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
03.02.2015, 19:02 5
vs 2013 ругается на scanf ,попробуйте использовать scanf_s
0
Maksimuso
2 / 2 / 1
Регистрация: 25.10.2014
Сообщений: 75
03.02.2015, 19:10  [ТС] 6
не помогает
0
Dimension
Dimension
574 / 444 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
03.02.2015, 19:31 7
что не помогает?
0
Maksimuso
2 / 2 / 1
Регистрация: 25.10.2014
Сообщений: 75
03.02.2015, 19:33  [ТС] 8
точку у циклов убрал и сканф поменял , всё ровно не помогает
0
tyreu
Заблокирован
03.02.2015, 19:45 9
код не допиленный какой-то
в строках
C++
1
2
3
4
5
6
7
for (k = 0; k < r - 1; k++);
    {
        for (j = 0; j < r - 1; j++)
        {
            if (C[j] > C[j] + 1);
        }
    }
что должно выполняться?
0
Maksimuso
2 / 2 / 1
Регистрация: 25.10.2014
Сообщений: 75
03.02.2015, 19:49  [ТС] 10
в чем проблема то ?
0
19dmitry
36 / 36 / 22
Регистрация: 18.01.2014
Сообщений: 149
03.02.2015, 19:52 11
Смущает вот эта строчка:
C++
1
    if C[j] > C[j] + 1;
Возможно, просто она не правильно скопировалась, но если у Вас в коде она выглядит точно также, то:
1) условие должно заключаться в скобки, т.е.
C++
1
if(C[j] > C[j]+1)
2) точка с запятой с условным оператором if не используется, уберите
3) а где сама операция, которая будет выполняться при выполнении условия?
0
Kommersantt
18 / 18 / 24
Регистрация: 21.06.2014
Сообщений: 147
03.02.2015, 19:53 12
После for() уберите еще точку запятой!!!
0
tyreu
Заблокирован
03.02.2015, 20:09 13
Цитата Сообщение от 19dmitry Посмотреть сообщение
3) а где сама операция, которая будет выполняться при выполнении условия?
вот и я о том же

Добавлено через 13 минут
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
#include <stdio.h>
#include <conio.h>
#include <locale.h>
void SimpleExtract(int *A, int n)
{
    int i;
 
    for (i = n - 1; i>0; i--)
    {
        int max = 0;
 
        for (int y = 1; y <= i; y++)
        {
            if (A[y]>A[max]) max = y;
        }
 
        int temp = A[i];
        A[i] = A[max];
        A[max] = temp;
    }
}
int main(void)
{
    const int max = 100;
    int A[max], B[max], C[2 * max];
    int i, j, k, n, m;
    setlocale(LC_ALL, "Russian");
    printf("Введите количество элементов массива А\n");
    scanf_s("%d", &n);
    printf("Введите количество элементов массива B\n");
    scanf_s("%d", &m);
    printf("Введите %d элемента/ов массива А\n", n);
    for (j = 0, i = 0; i < n; i++, j++)
    {
        scanf_s("%d", &A[i]);
        C[j] = A[i];
    }
    printf("Введите %d элемента/ов массива B\n", m);
    for (k = 0, j = n; k < m; k++, j++)
    {
        scanf_s("%d", &B[k]);
        C[j] = B[k];
    }
    printf("\nВведенный массив А:\n");
    for (i = 0; i < n; i++)
    printf("%d ", A[i]);
    printf("\nВведенный массив B:\n");
    for (k = 0; k < m; k++)
    printf("%d ", B[k]);
    SimpleExtract(C, (m + n));
    printf("\nУпорядоченный массив С:\n");
    for (j = 0; j < (m+n); j++)
    printf("%d ", C[j]);
    _getch();
    return 0;
}
Добавлено через 54 секунды
Сформируйте массив С, состоящий из элементов массивов А и В, упорядоченных по возрастанию
0
Maksimuso
2 / 2 / 1
Регистрация: 25.10.2014
Сообщений: 75
04.02.2015, 16:25  [ТС] 14
ребят у меня тут такая проблемка
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
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#define N 5
#define M 8
int main(void)
{
    int j1, i1, k1, r, C, rab, m, n;
    setlocale(LC_ALL, "Russian");
    int A[N] = { 1, 3, 2, 5, 4 };
    int B[M] = { 6, 7, 8, 9, 10, 12, 11, 13 };
        printf("A = ");
    for (int i1 = 0; i1 < N; i1++)
        printf("%d ", A[i1]);
        printf("\nB = ");
    for (int j1 = 0; j1 < M; j1++)
        printf("%d ", B[j1]);
        printf("\n");
    
    r = m + n;
    for (k1 = 0; k1<r - 1; k1++){
        for (C[k1] = C[k1]; C[k1]<C[k1] + r - 1; C[k1]++){
            if (C[k1] >(C[k1] + 1)){
                rab = C[k1];
                C[k1] = (C[k1] + 1);
                (C[k1] + 1) = rab;
            }
        }
    }
    
    printf("\nC = ");
    for (int k1 = 0; k1 < N + M; k1++)
    printf("%d ", C[k1]);
    printf("\n");
    _getch();
    return 0;
}
помогите плиз
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication2\consoleapplication2\исходный код.cpp(22): error C2109: для индекса требуется массив или указатель
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication2\consoleapplication2\исходный код.cpp(23): error C2109: для индекса требуется массив или указатель
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication2\consoleapplication2\исходный код.cpp(24): error C2109: для индекса требуется массив или указатель
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication2\consoleapplication2\исходный код.cpp(25): error C2109: для индекса требуется массив или указатель
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication2\consoleapplication2\исходный код.cpp(26): error C2109: для индекса требуется массив или указатель
1>c:\users\maksimus\documents\visual studio 2013\projects\consoleapplication2\consoleapplication2\исходный код.cpp(33): error C2109: для индекса требуется массив или указатель
0
pdmitriya
8 / 8 / 4
Регистрация: 29.01.2015
Сообщений: 57
04.02.2015, 17:14 15
\исходный код.cpp
0
19dmitry
36 / 36 / 22
Регистрация: 18.01.2014
Сообщений: 149
04.02.2015, 18:13 16
Вся ошибка в том, что у Вас массив С, объявлен, как простая переменная int.
Попробуйте так:
C++
1
int C[N+M];
0
Maksimuso
2 / 2 / 1
Регистрация: 25.10.2014
Сообщений: 75
04.02.2015, 19:04  [ТС] 17
Даны два массива, упорядоченных по возростанию: А[n] и B[m]. Сформируйте массив C[n+m], состоящий из элементов массивов А и В, упорядоченный по возростанию.
Вот само задание . но почему не выводит третий массив ?
0
pdmitriya
8 / 8 / 4
Регистрация: 29.01.2015
Сообщений: 57
04.02.2015, 19:15 18
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
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int A[] = { 1, 3, 2, 5, 4 };
    int B[] = { 13, 7, 8, 9, 10, 12, 11, 6 };
    int *C,i,j,m,n,tmp;
    //выделение памяти под массив C
    m=sizeof(A);
    n=sizeof(B);
    C = (int*)malloc(m+n);
    //слияние массивов
    for(i=0,j=0;i<(m+n)/4;i++) //делим на 4 т.к int = 4 байта
    if(i<m/4)
        C[i]=A[i];
    else {
        C[i]=B[j];
        j++;
    }
    //Сортировка пузырьком
    for(i = 0; i < (m+n)/4 - 1; i++)
    for(j = (m+n)/4-2; i <= j; j--)
        if(C[j] > C[j+1]){
            tmp=C[j];
            C[j]=C[j+1];
            C[j+1]=tmp;
        }
    //печать массива
    printf("C:");
    for (i=0; i < (m+n)/4; i++)
    printf("%d ", C[i]);
    printf("\n");
    free(C);
    return 0;
}
1
Maksimuso
2 / 2 / 1
Регистрация: 25.10.2014
Сообщений: 75
04.02.2015, 19:47  [ТС] 19
в моём коде что не так ?
0
pdmitriya
8 / 8 / 4
Регистрация: 29.01.2015
Сообщений: 57
04.02.2015, 20:04 20
код Си чувствителен к регистру, поэтому
r = m + n;
надо заменить на
r = M+N;

for (C[k1] = C[k1]; C[k1]<C[k1] + r - 1; C[k1]++)

вы в пустой C[0] присваиваете C[0]


в моем коде перед return надо добавить free(C);
0
04.02.2015, 20:04
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2015, 20:04

Создать из элементов упорядоченных по неубыванию массивов новый массив, упорядоченный по возрастанию
Даны два натуральных числа n и m (n&lt;=100, m&lt;=100) и два упорядоченных по неубывания массивы целых...

Из двух упорядоченных массивов сформируйте одномерный массив, упорядоченный в обратную сторону
Из двух упорядоченных одномерных массивов (длины K и N) сформируйте одномерный массив размером K+N,...

Содержимое массивов сортируется по возрастанию. Затем из двух массивов (длины K и N) сформируйте массив
Всем приветы 8-) Помогите с 2 задачами: 2)Напишите программу, которая организует хранение в...


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

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

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