0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 4
1

Сформировать массив, который будет состоять из чисел, входящих как в массив A, так и в массив B

10.10.2014, 07:05. Показов 1889. Ответов 3
Метки нет (Все метки)

Задание: На основе исходных массивов A[n] и B[m] (n и m – рабочие размеры массивов) сформировать массив C, который будет состоять из чисел, которые одновременно входят как в массив A, так и в массив B. Упорядочить массив С по возрастанию, используя метод выбора. Вывести элементы массива С на экран.
Массивы A, B и C являются целочисленными. Значения m и n, а также значения элементов массива A и B вводятся с клавиатуры.
Проблема: Компилятор не выдает ошибку, однако после ввода первого числа первого массива Windows прекращает работу программы и предлагает отладку. Любые конструктивные замечания приветствуются. (компилятор VS 2012)

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 "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int *A, *B, *C, i,j,m,n,k=0,imin,min;
    printf("Input n=");
    scanf_s("%d",&n);
    printf("Input m=");
    scanf_s("%d",&m);
    do {
        A=(int*)malloc(n*sizeof(int));
        B=(int*)malloc(m*sizeof(int));
        if (n>=m) C=(int*)malloc(n*sizeof(int));
        else C=(int*)malloc(m*sizeof(int));
        }
    while ((A=0)||(B=0)||(C=0));
    for(i=0; i<n; i++) {
        printf("A[%d]=",i);
        scanf_s("%d",&*(A+i));
        }
    for(j=0; j<m; j++) {
        printf("B[%d]=",j);
        scanf_s("%d",&*(B+j));
        }
    for(i=0; i<n; i++)
        printf("A[%d]=%d\n",i,*(A+i));
    for(i=0; i<m; i++)
        printf("B[%d]=%d\n",i,*(B+i));
    for(i=0; i<n; i++)
        for(j=0; i<m; j++) {
            if (*(A+i)==*(B+j)) {           
                *(C+k)=*(A+i);
                printf("C[%d]=%d",k,*(C+k));
                k++;
                }
        }
    for(i=0; i<k; i++) {
        min=*(A+i); imin=i;
        for(j=i+i; j<k; j++)
            if (*(A+j)<min) {
                min=*(A+i); imin=j; 
                }
        *(A+imin)=*(A+i);
        *(A+i)=min;
        }
    for(i=0; i<k; i++)
        printf("C[%d]=%d",i,*(C+i)); 
    free(A);
    free(B);
    free(C);
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2014, 07:05
Ответы с готовыми решениями:

Сформировать массив C, который будет состоять из чисел, которые одновременно входят как в массив A, так и в массив B
Есть задание :На основе исходных массивов A и B (n и m – рабочие размеры массивов) сформировать...

Создать массив, который будет состоять только из неповторяющихся чисел заданного массива
Задан массив чисел. Создать другой массив, который будет состоять только из неповторяющихся чисел...

Создать третий массив, который будет состоять из чередующихся элементов первого и второго массивов
Дано два массива mas1 и mas2. Создать третий массив, который будет состоять из элементов первого и...

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

3
583 / 487 / 370
Регистрация: 05.11.2013
Сообщений: 1,262
Записей в блоге: 6
10.10.2014, 08:49 2
занулять не нада
видимо, предполагалось
C++
1
while ((A==0)||(B==0)||(C==0));
в строке 20
хотя тоже неясно зачем...

еще обрати внимание на границы циклов в 33-34
C++
1
2
    for(i=0; i<n; i++)
        for(j=i; j<m; j++) {
предполагалось?
1
Модератор
Эксперт С++
12448 / 10012 / 6025
Регистрация: 18.12.2011
Сообщений: 26,798
10.10.2014, 11:00 3
C++
1
2
3
4
5
6
7
8
A=(int*)malloc(n*sizeof(int));
B=(int*)malloc(m*sizeof(int));
C=(int*)malloc(max(n,m)*sizeof(int));
if(A==NULL || B==NULL || C==NULL)
{
    printf("Ошибка выдедения памяти");
    return 1;
}
1
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 4
02.11.2014, 17:32  [ТС] 4
Кому интересно вот полностью работающий вариант программы:
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
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int *A, *B, *C, i,j,m,n,k=0,imin,min;
    printf("Input n=");
    scanf_s("%d",&n);
    printf("Input m=");
    scanf_s("%d",&m);
    A=(int*)malloc(n*sizeof(int));
    B=(int*)malloc(m*sizeof(int));
    if (n>=m) C=(int*)malloc(n*sizeof(int));
    else C=(int*)malloc(m*sizeof(int));
    if(A==NULL || B==NULL || C==NULL) {
        printf("Memory allocation error.");
        return 1;
        }
    for(i=0; i<n; i++) {
        printf("A[%d]=",i);
        scanf_s("%d",&*(A+i));
        }
    for(j=0; j<m; j++) {
        printf("B[%d]=",j);
        scanf_s("%d",&*(B+j));
        }
    for(i=0; i<n; i++)
        for(j=0; j<m; j++) {
            if (*(A+i)==*(B+j)) {           
                *(C+k)=*(A+i);
                printf("C[%d]=%d; ",k,*(C+k));
                k++;
                }
        }
    for(i=0; i<k; i++) {
        min=*(C+i); imin=i;
        for(j=i+1; j<k; j++)
            if (*(C+j)<min) {
                min=*(C+j); imin=j; 
                }
        *(C+imin)=*(C+i);
        *(C+i)=min;
        }
    printf("\n");
    for(i=0; i<k; i++)
        printf("C[%d]=%d; ",i,*(C+i)); 
    printf("\n");
    free(A);
    free(B);
    free(C);
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2014, 17:32
Помогаю со студенческими работами здесь

Сформировать массив из элементов массива А не входящих в массив В
2. Даны 2 одномерных массива: А из 10 элементов и В из 15 элементов. Сформировать 2 новых массива:...

Сформировать и напечатать множество всех четных чисел , не входящих в массив.
Помогите плз: Создать массив, состоящий из 10 случайных целых чисел из интервала от 1 до 50....

Для каждого из чисел, входящих в массив, выяснить, сколько раз оно входит в этот массив
Для каждого из чисел, входящих в массив, выяснить, сколько раз оно входит в этот массив. При...

Массив: Сделать массив, который будет выводить таблицу по заданному примеру...
Надо сделать массив который будет выводить таблицу по данному примеру. Заранее спасибо. 1111111...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru