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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
deepLulz
4 / 4 / 0
Регистрация: 12.02.2012
Сообщений: 46
#1

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

22.04.2012, 17:50. Просмотров 454. Ответов 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я других. Может кто помочь?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2012, 17:50     Сравнение 2х числовых массивов и генерация 3го
Посмотрите здесь:

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

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

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

Сортировка числовых массивов методом турнира с выбыванием - C++
Помогите пожалуйста, очень срочно!!! Нужно написать программу на С++ Сортировка числовых массивов методом турнира с выбыванием. Все...

Программирование типовых числовых задач обработки одномерных массивов - C++
1) Вычислить и запомнить в структуре одномерного массива (таблица 1) фиксированное количество элементов числовой последовательности,...

Генерация трех случайных массивов - C++
Добрый вечер! У меня вот такая задачка: сгенерировать три случайных массива размером в 100 элементов, вывести их на экран и в текстовый...

Сравнение массивов - C++
Здраствуйте, как можно сравнить два элемента buffer и asd? Вот код: char* buffer = new char ; char sas = {&quot;123xxx&quot;}; ...

Сравнение 2х массивов в С++ - C++
Ребята, помогите пожалуйста написать вот такую прогу: Запросить и считать два массива у пользователя (две последовательности целых чисел...

сравнение массивов - C++
как сравнить два одномерных массива и найти самую длинную их общую часть? сравниваю массивы типа char. допустим мы нашли общий...

Сравнение массивов - C++
нужно сравнить весь массив из 6 элементов ,,кроме последнего,равны ли элементы массива 0 и вывести на экран равны ,или нет.

Сравнение массивов - C++
После заполнения динамического массива числами,в моем случае 1 и 0,компилятор не производит действий,останавливает работу.Спасибо#include...

Сравнение массивов - C++
Добрый день! Не удается сравнить два массива q и с. Алгоритм шифрует по алгоритму CRC и необходимо расшифровать сообщение, но при...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dota
3 / 3 / 0
Регистрация: 20.09.2010
Сообщений: 100
22.04.2012, 18:59     Сравнение 2х числовых массивов и генерация 3го #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]);
          }            
  }
deepLulz
4 / 4 / 0
Регистрация: 12.02.2012
Сообщений: 46
23.04.2012, 00:28  [ТС]     Сравнение 2х числовых массивов и генерация 3го #3
dota, спасибо, но с твоим вариантом вообще ничего не записывается
dota
3 / 3 / 0
Регистрация: 20.09.2010
Сообщений: 100
23.04.2012, 17:17     Сравнение 2х числовых массивов и генерация 3го #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++;
Yandex
Объявления
23.04.2012, 17:17     Сравнение 2х числовых массивов и генерация 3го
Ответ Создать тему
Опции темы

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