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

Сравнение 2х числовых массивов и генерация 3го

22.04.2012, 17:50. Просмотров 571. Ответов 3
Метки нет (Все метки)

Собственно задание таково: создать два числовых массива, сравнить их и элементы массива m2, которые отсутствуют в массиве m1 записать в массив m3. Вот что написал я:
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
#include <stdio.h>
#include <conio.h>
#define MAX 50
 
main(){
    int m1[MAX], m2[MAX], m3[MAX], n, i, j;
    printf("Elementov massiva = ");
    scanf("%i",&n);
    printf("M1:\n");
    for(i=0; i<=n-1; i++){
        printf("M1[%i] = ",i); scanf("%i",&m1[i]);
        if(m1[i]==0) break;
    }
    printf("M2:\n");
    for(i=0; i<=n-1; i++){
        printf("M2[%i] = ",i); scanf("%i",&m2[i]);
        if(m2[i]==0) break;
    }
    printf("Massiv m3 sozdan:\n");
    for(i=0;i<=n;i++){
        for(j=0;j<=n;j++){
            if(m2[i] != m1[j]){
                m3[j] = m2[i];
                printf("m3[%i] = %i\n",i,m3[j]);
            }
        }
    }
    getch();
    return 0;
}
Вот так называемый мой "алгоритм" сравнения:
C++
1
2
3
4
5
6
7
8
for(i=0;i<=n;i++){
        for(j=0;j<=n;j++){
            if(m2[i] != m1[j]){
                m3[j] = m2[i];
                printf("m3[%i] = %i\n",i,m3[j]);
            }
        }
    }
После запуска "этого" на экран вылазят все цифры подряд, да в конце еще и 100я других. Может кто помочь?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2012, 17:50
Ответы с готовыми решениями:

Сравнение числовых массивов
Есть два числовых массива в одном 4 элемента в другом 5 (то есть разное количество) Как с помощью...

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

сравнение числовых значений
Кто нибудь сталкивался: есть некоторый контейнер, точность массы до тысячных. Из него...

Обработка числовых массивов
Определить минимальный элемент двухметрного массива и с помощью перестановок строк и столбцов...

3
3 / 3 / 1
Регистрация: 20.09.2010
Сообщений: 100
22.04.2012, 18:59 2
ну конечно работает неправильно :
1) алгоритм проверки неверный . Вы проверяете , если какой-то элемент из m2 неравен некоторому элементу из m1 , то Вы его добавляете в m3 , хотя в принципе этот элемент может встретиться в m1 , а Вы его уже добавили в m3 , как элемент , который отсутствует в m1 . В результате в m3 "запихивается" практически всё .
2) Вы выходите за границы массивов в строчках :
C++
1
2
for(i=0;i<=n;i++){
        for(j=0;j<=n;j++) ...
Можно попробовать так (опять же не гарантирую 100%-ый успех) :
C++
1
2
3
4
5
6
7
8
9
10
11
int s = 0; // счетчик  элементов для m3
for(i=0;i<=n-1;i++){
        int k=0;
        for(j=0;j<=n-1;j++){
            if(m2[i]==m1[j]) k++; // счетчик совпадений
         }
         if (k==0) {                //если совпадений не было
             m3[s] = m2[i]; s++;
             printf("m3[%i] = %i\n",s,m3[s]);
          }            
  }
1
4 / 4 / 0
Регистрация: 12.02.2012
Сообщений: 46
23.04.2012, 00:28  [ТС] 3
dota, спасибо, но с твоим вариантом вообще ничего не записывается
0
3 / 3 / 1
Регистрация: 20.09.2010
Сообщений: 100
23.04.2012, 17:17 4
извиняюсь . это уже моя ошибка , протупил )ошибка совсем банальная :
C++
1
2
m3[s] = m2[i]; s++;
             printf("m3[%i] = %i\n",s,m3[s]);
дело в том , что 0-ому элементу m3 присваивается значение m2 , а затем увеличивается счетчик , за счет чего в следующем операторе печатается уже 1-ый элемент m3 , в котором либо еще ничего не хранится , либо по умолчанию хранится "мусор" .
решение проблемы : поменять операторы инкремента и печати местами
C++
1
2
3
m3[s] = m2[i]; 
             printf("m3[%i] = %i\n",s,m3[s]);
             s++;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2012, 17:17

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

Изучение обработки числовых массивов
Доброго времени суток! Помогите пожалуйста с заданием... Задание: Требуется обработать заданный...

Сортировка одномерных числовых массивов
Пожалуйста, помогите кодом. В прошлой теме не ответили.. Задание: Сгенерировать одномерный массив...

Обработка числовых и символьных массивов
помогите, плиз, решить 2 задачки - очень надо( очень срочно. совсем не знаю, что делать(( тема:...

Обработка двумерных числовых массивов
Заполнить двумерный числовой массив В(5, 5) целыми числами. Столбец, содержащий минимальный...

Обработка и модификация одномерных числовых массивов
Вводится последовательность символов. Напечатать те сим-волы, которые не вошли в последовательность.

решить 3 задания на Обработку числовых массивов
1. Определить в одномерном массиве число соседств из двух чисел разного знака. 2. Дана...


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

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

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