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

удаление элементов массива, совпадающих с элементами другого массива - C++

07.12.2013, 14:22. Просмотров 749. Ответов 3
Метки нет (Все метки)

Здравствуйте, помогите найти ошибку в коде; суть задачи такая: удалить элементы из 1 массива, которые содержатся во 2 массиве. Как я понимаю, необходимо создать доп.массив и записывать в него элементы 1 массива, не встречающиеся во 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
55
56
57
#include <iostream>
#include <windows.h>
#include <fstream>
 
using namespace std ;
const unsigned short Max_n = 100;
 
ifstream fin1("mas1.txt");
ifstream fin2("mas2.txt");
 
int main ()
{
    int i, k, n, x, n1, k1, b, y; bool flag;
    int arr1[Max_n]; int arr2[Max_n]; int newarr[Max_n];
//чтение 1 масссива
    n=0;
    while (fin1 >> x) { arr1[n]= x; n++; }
    fin1.close();
 
    fin1.open("mas1.txt");
    cout << "Array1:"<< endl;
 
    for (k=0; k<n; k++) { cout << arr1 [k] << " , ";
    cout << endl;}
    fin1.close();
//чтение 2 массива
    n1=0;
    while (fin2 >> y) { arr2[n1]= y; n1++; }
    fin2.close();
 
    fin2.open("mas2.txt");
    cout << "Array2:"<< endl;
 
     for (k1=0; k1<n1; k1++) {cout << arr2[k1] << " , ";
     cout << endl;}
     fin2.close();
//сортировка
 
 
    cout << "New array"<< endl; b=0;
    newarr [b]=0;
    for (k=0; k<n; k++)
    {
                flag = true;
                for (k1=0; k1<n1; k1++)
               {
                   if (arr2 [k1]== arr1[k])
                     flag = false;
                    
                    else {newarr[b]= arr1 [k];
                          b++;
                          cout << newarr [b]<< endl;}
                     }}
 
    system ("pause");
    return 0;
}
Подскажите, что не так.
http://www.cyberforum.ru/cpp-beginners/thread1403976.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2013, 14:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос удаление элементов массива, совпадающих с элементами другого массива (C++):

Заполнение одного массива элементами другого
Доброго времени суток, форумчане. Я и программирование - токо недавно...

Создать массив с элементами другого массива
Стоит задача, создать и ввести массив Y. После создать массив В, который...

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

Найти наименьшее среди тех элементов массива a1,…,an, которые не являются элементами массива b1,…,bn
Найти наименьшее среди тех элементов массива a1,…,an, которые не являются...

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

3
Ev[G]eN
iOS/Android Developer
Эксперт С++
5115 / 1553 / 950
Регистрация: 23.01.2011
Сообщений: 3,179
Завершенные тесты: 1
07.12.2013, 14:57 #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
#include <algorithm>
#include <iterator>
#include <iostream>
#include <fstream>
#include <vector>
 
int main()
{
    int currentFileElement;
    std::fstream firstFile("first file.txt");
    std::vector <int> firstVector;
    while (firstFile >> currentFileElement)
        firstVector.push_back(currentFileElement);
    firstFile.close();
 
    std::fstream secondFile("second file.txt");
    std::vector <int> secondVector;
    while (secondFile >> currentFileElement)
        secondVector.push_back(currentFileElement);
    secondFile.close();
 
    std::cout << "First array: ";
    std::copy(firstVector.begin(), firstVector.end(), std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl << "Second array: ";
    std::copy(secondVector.begin(), secondVector.end(), std::ostream_iterator <int> (std::cout, " "));
    
    std::vector <int> resultVector;
    std::set_difference(firstVector.begin(), firstVector.end(), secondVector.begin(), secondVector.end(), std::inserter(resultVector, resultVector.begin()));
    std::cout << std::endl << "Result array: ";
    std::copy(resultVector.begin(), resultVector.end(), std::ostream_iterator <int> (std::cout, " "));
 
    std::system("pause >> temporaryFile");
    return 0;
}
1
quasi
0 / 0 / 4
Регистрация: 07.12.2013
Сообщений: 16
07.12.2013, 15:05  [ТС] #3
а можно реализовать без использования вектора?
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5115 / 1553 / 950
Регистрация: 23.01.2011
Сообщений: 3,179
Завершенные тесты: 1
07.12.2013, 15:15 #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
#include <algorithm>
#include <iterator>
#include <iostream>
#include <fstream>
 
int main()
{
    const size_t arrayMaximalSize(50);
 
    int currentFileElement;
    size_t firstArraySize(0);
    int firstArray[arrayMaximalSize];
    std::fstream firstFile("first file.txt");
    while (firstFile >> currentFileElement)
        firstArray[firstArraySize++] = currentFileElement;
    firstFile.close();
 
    std::fstream secondFile("second file.txt");
    size_t secondArraySize(0);
    int secondArray[arrayMaximalSize];
    while (secondFile >> currentFileElement)
        secondArray[secondArraySize++] = currentFileElement;
    secondFile.close();
 
    std::cout << "First array: ";
    std::copy(firstArray, firstArray + firstArraySize, std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl << "Second array: ";
    std::copy(secondArray, secondArray + secondArraySize, std::ostream_iterator <int> (std::cout, " "));
 
    std::cout << std::endl << "Result array: ";
    std::set_difference(firstArray, firstArray + firstArraySize, secondArray, secondArray + secondArraySize, std::ostream_iterator <int> (std::cout, " "));
 
 
    std::system("pause >> temporaryFile");
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2013, 15:15
Привет! Вот еще темы с решениями:

Проверка массива на наличие совпадающих элементов
Здравствуйте. Подскажите, пожалуйста, как с помощью указателей реализовать...

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

Создание нового массива из определенных элементов другого массива
Здравствуйте. Мне нужно создать одномерный массив из элементов двумерного...

Удаление четных элементов массива,больших среднего арифметического всех элементов массива
Доброго времени суток! Помогите пожалуйста) Вот задание:Из массива удалить...


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

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

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